X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fstubs.c;h=0e6af849b5da2d5a6043c53be1596c63f79aea2a;hp=02c76f1e52037ff49c46c8285ce36511635ebff5;hb=b6adf09c4d2cc3f1d0285950c151b1fd7688ec67;hpb=aed0fa2c015e56a882fd6d4b759c82df08fc40d7 diff --git a/daemon/stubs.c b/daemon/stubs.c index 02c76f1..0e6af84 100644 --- a/daemon/stubs.c +++ b/daemon/stubs.c @@ -940,9 +940,14 @@ static void vgcreate_stub (XDR *xdr_in) return; } volgroup = args.volgroup; - args.physvols.physvols_val = realloc (args.physvols.physvols_val, sizeof (char *) * (args.physvols.physvols_len+1)); - args.physvols.physvols_val[args.physvols.physvols_len] = NULL; - physvols = args.physvols.physvols_val; + physvols = realloc (args.physvols.physvols_val, + sizeof (char *) * (args.physvols.physvols_len+1)); + if (physvols == NULL) { + reply_with_perror ("realloc"); + goto done; + } + physvols[args.physvols.physvols_len] = NULL; + args.physvols.physvols_val = physvols; r = do_vgcreate (volgroup, physvols); if (r == -1) @@ -1028,9 +1033,14 @@ static void sfdisk_stub (XDR *xdr_in) cyls = args.cyls; heads = args.heads; sectors = args.sectors; - args.lines.lines_val = realloc (args.lines.lines_val, sizeof (char *) * (args.lines.lines_len+1)); - args.lines.lines_val[args.lines.lines_len] = NULL; - lines = args.lines.lines_val; + lines = realloc (args.lines.lines_val, + sizeof (char *) * (args.lines.lines_len+1)); + if (lines == NULL) { + reply_with_perror ("realloc"); + goto done; + } + lines[args.lines.lines_len] = NULL; + args.lines.lines_val = lines; r = do_sfdisk (device, cyls, heads, sectors, lines); if (r == -1) @@ -1176,9 +1186,14 @@ static void command_stub (XDR *xdr_in) reply_with_error ("%s: daemon failed to decode procedure arguments", "command"); return; } - args.arguments.arguments_val = realloc (args.arguments.arguments_val, sizeof (char *) * (args.arguments.arguments_len+1)); - args.arguments.arguments_val[args.arguments.arguments_len] = NULL; - arguments = args.arguments.arguments_val; + arguments = realloc (args.arguments.arguments_val, + sizeof (char *) * (args.arguments.arguments_len+1)); + if (arguments == NULL) { + reply_with_perror ("realloc"); + goto done; + } + arguments[args.arguments.arguments_len] = NULL; + args.arguments.arguments_val = arguments; r = do_command (arguments); if (r == NULL) @@ -1205,9 +1220,14 @@ static void command_lines_stub (XDR *xdr_in) reply_with_error ("%s: daemon failed to decode procedure arguments", "command_lines"); return; } - args.arguments.arguments_val = realloc (args.arguments.arguments_val, sizeof (char *) * (args.arguments.arguments_len+1)); - args.arguments.arguments_val[args.arguments.arguments_len] = NULL; - arguments = args.arguments.arguments_val; + arguments = realloc (args.arguments.arguments_val, + sizeof (char *) * (args.arguments.arguments_len+1)); + if (arguments == NULL) { + reply_with_perror ("realloc"); + goto done; + } + arguments[args.arguments.arguments_len] = NULL; + args.arguments.arguments_val = arguments; r = do_command_lines (arguments); if (r == NULL) @@ -1855,9 +1875,14 @@ static void debug_stub (XDR *xdr_in) return; } subcmd = args.subcmd; - args.extraargs.extraargs_val = realloc (args.extraargs.extraargs_val, sizeof (char *) * (args.extraargs.extraargs_len+1)); - args.extraargs.extraargs_val[args.extraargs.extraargs_len] = NULL; - extraargs = args.extraargs.extraargs_val; + extraargs = realloc (args.extraargs.extraargs_val, + sizeof (char *) * (args.extraargs.extraargs_len+1)); + if (extraargs == NULL) { + reply_with_perror ("realloc"); + goto done; + } + extraargs[args.extraargs.extraargs_len] = NULL; + args.extraargs.extraargs_val = extraargs; r = do_debug (subcmd, extraargs); if (r == NULL) @@ -1944,245 +1969,1109 @@ done: xdr_free ((xdrproc_t) xdr_guestfs_pvremove_args, (char *) &args); } -void dispatch_incoming_message (XDR *xdr_in) +static void set_e2label_stub (XDR *xdr_in) { - switch (proc_nr) { - case GUESTFS_PROC_MOUNT: - mount_stub (xdr_in); - break; - case GUESTFS_PROC_SYNC: - sync_stub (xdr_in); - break; - case GUESTFS_PROC_TOUCH: - touch_stub (xdr_in); - break; - case GUESTFS_PROC_CAT: - cat_stub (xdr_in); - break; - case GUESTFS_PROC_LL: - ll_stub (xdr_in); - break; - case GUESTFS_PROC_LS: - ls_stub (xdr_in); - break; - case GUESTFS_PROC_LIST_DEVICES: - list_devices_stub (xdr_in); - break; - case GUESTFS_PROC_LIST_PARTITIONS: - list_partitions_stub (xdr_in); - break; - case GUESTFS_PROC_PVS: - pvs_stub (xdr_in); - break; - case GUESTFS_PROC_VGS: - vgs_stub (xdr_in); - break; - case GUESTFS_PROC_LVS: - lvs_stub (xdr_in); - break; - case GUESTFS_PROC_PVS_FULL: - pvs_full_stub (xdr_in); - break; - case GUESTFS_PROC_VGS_FULL: - vgs_full_stub (xdr_in); - break; - case GUESTFS_PROC_LVS_FULL: - lvs_full_stub (xdr_in); - break; - case GUESTFS_PROC_READ_LINES: - read_lines_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_INIT: - aug_init_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_CLOSE: - aug_close_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_DEFVAR: - aug_defvar_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_DEFNODE: - aug_defnode_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_GET: - aug_get_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_SET: - aug_set_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_INSERT: - aug_insert_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_RM: - aug_rm_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_MV: - aug_mv_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_MATCH: - aug_match_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_SAVE: - aug_save_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_LOAD: - aug_load_stub (xdr_in); - break; - case GUESTFS_PROC_AUG_LS: - aug_ls_stub (xdr_in); - break; - case GUESTFS_PROC_RM: - rm_stub (xdr_in); - break; - case GUESTFS_PROC_RMDIR: - rmdir_stub (xdr_in); - break; - case GUESTFS_PROC_RM_RF: - rm_rf_stub (xdr_in); - break; - case GUESTFS_PROC_MKDIR: - mkdir_stub (xdr_in); - break; - case GUESTFS_PROC_MKDIR_P: - mkdir_p_stub (xdr_in); - break; - case GUESTFS_PROC_CHMOD: - chmod_stub (xdr_in); - break; - case GUESTFS_PROC_CHOWN: - chown_stub (xdr_in); - break; - case GUESTFS_PROC_EXISTS: - exists_stub (xdr_in); - break; - case GUESTFS_PROC_IS_FILE: - is_file_stub (xdr_in); - break; - case GUESTFS_PROC_IS_DIR: - is_dir_stub (xdr_in); - break; - case GUESTFS_PROC_PVCREATE: - pvcreate_stub (xdr_in); - break; - case GUESTFS_PROC_VGCREATE: - vgcreate_stub (xdr_in); - break; - case GUESTFS_PROC_LVCREATE: - lvcreate_stub (xdr_in); - break; - case GUESTFS_PROC_MKFS: - mkfs_stub (xdr_in); - break; - case GUESTFS_PROC_SFDISK: - sfdisk_stub (xdr_in); - break; - case GUESTFS_PROC_WRITE_FILE: - write_file_stub (xdr_in); - break; - case GUESTFS_PROC_UMOUNT: - umount_stub (xdr_in); - break; - case GUESTFS_PROC_MOUNTS: - mounts_stub (xdr_in); - break; - case GUESTFS_PROC_UMOUNT_ALL: - umount_all_stub (xdr_in); - break; - case GUESTFS_PROC_LVM_REMOVE_ALL: - lvm_remove_all_stub (xdr_in); - break; - case GUESTFS_PROC_FILE: - file_stub (xdr_in); - break; - case GUESTFS_PROC_COMMAND: - command_stub (xdr_in); - break; - case GUESTFS_PROC_COMMAND_LINES: - command_lines_stub (xdr_in); - break; - case GUESTFS_PROC_STAT: - stat_stub (xdr_in); - break; - case GUESTFS_PROC_LSTAT: - lstat_stub (xdr_in); - break; - case GUESTFS_PROC_STATVFS: - statvfs_stub (xdr_in); - break; - case GUESTFS_PROC_TUNE2FS_L: - tune2fs_l_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_SETRO: - blockdev_setro_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_SETRW: - blockdev_setrw_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_GETRO: - blockdev_getro_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_GETSS: - blockdev_getss_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_GETBSZ: - blockdev_getbsz_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_SETBSZ: - blockdev_setbsz_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_GETSZ: - blockdev_getsz_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_GETSIZE64: - blockdev_getsize64_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_FLUSHBUFS: - blockdev_flushbufs_stub (xdr_in); - break; - case GUESTFS_PROC_BLOCKDEV_REREADPT: - blockdev_rereadpt_stub (xdr_in); - break; - case GUESTFS_PROC_UPLOAD: - upload_stub (xdr_in); - break; - case GUESTFS_PROC_DOWNLOAD: - download_stub (xdr_in); - break; - case GUESTFS_PROC_CHECKSUM: - checksum_stub (xdr_in); - break; - case GUESTFS_PROC_TAR_IN: - tar_in_stub (xdr_in); - break; - case GUESTFS_PROC_TAR_OUT: - tar_out_stub (xdr_in); - break; - case GUESTFS_PROC_TGZ_IN: - tgz_in_stub (xdr_in); - break; - case GUESTFS_PROC_TGZ_OUT: - tgz_out_stub (xdr_in); - break; - case GUESTFS_PROC_MOUNT_RO: - mount_ro_stub (xdr_in); - break; - case GUESTFS_PROC_MOUNT_OPTIONS: - mount_options_stub (xdr_in); - break; - case GUESTFS_PROC_MOUNT_VFS: - mount_vfs_stub (xdr_in); - break; - case GUESTFS_PROC_DEBUG: - debug_stub (xdr_in); - break; - case GUESTFS_PROC_LVREMOVE: - lvremove_stub (xdr_in); - break; - case GUESTFS_PROC_VGREMOVE: - vgremove_stub (xdr_in); - break; - case GUESTFS_PROC_PVREMOVE: - pvremove_stub (xdr_in); + int r; + struct guestfs_set_e2label_args args; + const char *device; + const char *label; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_set_e2label_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "set_e2label"); + return; + } + device = args.device; + label = args.label; + + r = do_set_e2label (device, label); + if (r == -1) + /* do_set_e2label has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_set_e2label_args, (char *) &args); +} + +static void get_e2label_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_get_e2label_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_get_e2label_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "get_e2label"); + return; + } + device = args.device; + + r = do_get_e2label (device); + if (r == NULL) + /* do_get_e2label has already called reply_with_error */ + goto done; + + struct guestfs_get_e2label_ret ret; + ret.label = r; + reply ((xdrproc_t) &xdr_guestfs_get_e2label_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_get_e2label_args, (char *) &args); +} + +static void set_e2uuid_stub (XDR *xdr_in) +{ + int r; + struct guestfs_set_e2uuid_args args; + const char *device; + const char *uuid; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_set_e2uuid_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "set_e2uuid"); + return; + } + device = args.device; + uuid = args.uuid; + + r = do_set_e2uuid (device, uuid); + if (r == -1) + /* do_set_e2uuid has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_set_e2uuid_args, (char *) &args); +} + +static void get_e2uuid_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_get_e2uuid_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_get_e2uuid_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "get_e2uuid"); + return; + } + device = args.device; + + r = do_get_e2uuid (device); + if (r == NULL) + /* do_get_e2uuid has already called reply_with_error */ + goto done; + + struct guestfs_get_e2uuid_ret ret; + ret.uuid = r; + reply ((xdrproc_t) &xdr_guestfs_get_e2uuid_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_get_e2uuid_args, (char *) &args); +} + +static void fsck_stub (XDR *xdr_in) +{ + int r; + struct guestfs_fsck_args args; + const char *fstype; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_fsck_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "fsck"); + return; + } + fstype = args.fstype; + device = args.device; + + r = do_fsck (fstype, device); + if (r == -1) + /* do_fsck has already called reply_with_error */ + goto done; + + struct guestfs_fsck_ret ret; + ret.status = r; + reply ((xdrproc_t) &xdr_guestfs_fsck_ret, (char *) &ret); +done: + xdr_free ((xdrproc_t) xdr_guestfs_fsck_args, (char *) &args); +} + +static void zero_stub (XDR *xdr_in) +{ + int r; + struct guestfs_zero_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_zero_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "zero"); + return; + } + device = args.device; + + r = do_zero (device); + if (r == -1) + /* do_zero has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_zero_args, (char *) &args); +} + +static void grub_install_stub (XDR *xdr_in) +{ + int r; + struct guestfs_grub_install_args args; + const char *root; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_grub_install_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "grub_install"); + return; + } + root = args.root; + device = args.device; + + r = do_grub_install (root, device); + if (r == -1) + /* do_grub_install has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_grub_install_args, (char *) &args); +} + +static void cp_stub (XDR *xdr_in) +{ + int r; + struct guestfs_cp_args args; + const char *src; + const char *dest; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_cp_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "cp"); + return; + } + src = args.src; + dest = args.dest; + + r = do_cp (src, dest); + if (r == -1) + /* do_cp has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_cp_args, (char *) &args); +} + +static void cp_a_stub (XDR *xdr_in) +{ + int r; + struct guestfs_cp_a_args args; + const char *src; + const char *dest; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_cp_a_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "cp_a"); + return; + } + src = args.src; + dest = args.dest; + + r = do_cp_a (src, dest); + if (r == -1) + /* do_cp_a has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_cp_a_args, (char *) &args); +} + +static void mv_stub (XDR *xdr_in) +{ + int r; + struct guestfs_mv_args args; + const char *src; + const char *dest; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_mv_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "mv"); + return; + } + src = args.src; + dest = args.dest; + + r = do_mv (src, dest); + if (r == -1) + /* do_mv has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_mv_args, (char *) &args); +} + +static void drop_caches_stub (XDR *xdr_in) +{ + int r; + struct guestfs_drop_caches_args args; + int whattodrop; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_drop_caches_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "drop_caches"); + return; + } + whattodrop = args.whattodrop; + + r = do_drop_caches (whattodrop); + if (r == -1) + /* do_drop_caches has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_drop_caches_args, (char *) &args); +} + +static void dmesg_stub (XDR *xdr_in) +{ + char *r; + + r = do_dmesg (); + if (r == NULL) + /* do_dmesg has already called reply_with_error */ + goto done; + + struct guestfs_dmesg_ret ret; + ret.kmsgs = r; + reply ((xdrproc_t) &xdr_guestfs_dmesg_ret, (char *) &ret); + free (r); +done: ; +} + +static void ping_daemon_stub (XDR *xdr_in) +{ + int r; + + r = do_ping_daemon (); + if (r == -1) + /* do_ping_daemon has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: ; +} + +static void equal_stub (XDR *xdr_in) +{ + int r; + struct guestfs_equal_args args; + const char *file1; + const char *file2; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_equal_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "equal"); + return; + } + file1 = args.file1; + file2 = args.file2; + + r = do_equal (file1, file2); + if (r == -1) + /* do_equal has already called reply_with_error */ + goto done; + + struct guestfs_equal_ret ret; + ret.equality = r; + reply ((xdrproc_t) &xdr_guestfs_equal_ret, (char *) &ret); +done: + xdr_free ((xdrproc_t) xdr_guestfs_equal_args, (char *) &args); +} + +static void strings_stub (XDR *xdr_in) +{ + char **r; + struct guestfs_strings_args args; + const char *path; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_strings_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "strings"); + return; + } + path = args.path; + + r = do_strings (path); + if (r == NULL) + /* do_strings has already called reply_with_error */ + goto done; + + struct guestfs_strings_ret ret; + ret.stringsout.stringsout_len = count_strings (r); + ret.stringsout.stringsout_val = r; + reply ((xdrproc_t) &xdr_guestfs_strings_ret, (char *) &ret); + free_strings (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_strings_args, (char *) &args); +} + +static void strings_e_stub (XDR *xdr_in) +{ + char **r; + struct guestfs_strings_e_args args; + const char *encoding; + const char *path; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_strings_e_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "strings_e"); + return; + } + encoding = args.encoding; + path = args.path; + + r = do_strings_e (encoding, path); + if (r == NULL) + /* do_strings_e has already called reply_with_error */ + goto done; + + struct guestfs_strings_e_ret ret; + ret.stringsout.stringsout_len = count_strings (r); + ret.stringsout.stringsout_val = r; + reply ((xdrproc_t) &xdr_guestfs_strings_e_ret, (char *) &ret); + free_strings (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_strings_e_args, (char *) &args); +} + +static void hexdump_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_hexdump_args args; + const char *path; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_hexdump_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "hexdump"); + return; + } + path = args.path; + + r = do_hexdump (path); + if (r == NULL) + /* do_hexdump has already called reply_with_error */ + goto done; + + struct guestfs_hexdump_ret ret; + ret.dump = r; + reply ((xdrproc_t) &xdr_guestfs_hexdump_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_hexdump_args, (char *) &args); +} + +static void zerofree_stub (XDR *xdr_in) +{ + int r; + struct guestfs_zerofree_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_zerofree_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "zerofree"); + return; + } + device = args.device; + + r = do_zerofree (device); + if (r == -1) + /* do_zerofree has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_zerofree_args, (char *) &args); +} + +static void pvresize_stub (XDR *xdr_in) +{ + int r; + struct guestfs_pvresize_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_pvresize_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "pvresize"); + return; + } + device = args.device; + + r = do_pvresize (device); + if (r == -1) + /* do_pvresize has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_pvresize_args, (char *) &args); +} + +static void sfdisk_N_stub (XDR *xdr_in) +{ + int r; + struct guestfs_sfdisk_N_args args; + const char *device; + int n; + int cyls; + int heads; + int sectors; + const char *line; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_sfdisk_N_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_N"); + return; + } + device = args.device; + n = args.n; + cyls = args.cyls; + heads = args.heads; + sectors = args.sectors; + line = args.line; + + r = do_sfdisk_N (device, n, cyls, heads, sectors, line); + if (r == -1) + /* do_sfdisk_N has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_N_args, (char *) &args); +} + +static void sfdisk_l_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_sfdisk_l_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_sfdisk_l_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_l"); + return; + } + device = args.device; + + r = do_sfdisk_l (device); + if (r == NULL) + /* do_sfdisk_l has already called reply_with_error */ + goto done; + + struct guestfs_sfdisk_l_ret ret; + ret.partitions = r; + reply ((xdrproc_t) &xdr_guestfs_sfdisk_l_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_l_args, (char *) &args); +} + +static void sfdisk_kernel_geometry_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_sfdisk_kernel_geometry_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_sfdisk_kernel_geometry_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_kernel_geometry"); + return; + } + device = args.device; + + r = do_sfdisk_kernel_geometry (device); + if (r == NULL) + /* do_sfdisk_kernel_geometry has already called reply_with_error */ + goto done; + + struct guestfs_sfdisk_kernel_geometry_ret ret; + ret.partitions = r; + reply ((xdrproc_t) &xdr_guestfs_sfdisk_kernel_geometry_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_kernel_geometry_args, (char *) &args); +} + +static void sfdisk_disk_geometry_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_sfdisk_disk_geometry_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_sfdisk_disk_geometry_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_disk_geometry"); + return; + } + device = args.device; + + r = do_sfdisk_disk_geometry (device); + if (r == NULL) + /* do_sfdisk_disk_geometry has already called reply_with_error */ + goto done; + + struct guestfs_sfdisk_disk_geometry_ret ret; + ret.partitions = r; + reply ((xdrproc_t) &xdr_guestfs_sfdisk_disk_geometry_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_disk_geometry_args, (char *) &args); +} + +static void vg_activate_all_stub (XDR *xdr_in) +{ + int r; + struct guestfs_vg_activate_all_args args; + int activate; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_vg_activate_all_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "vg_activate_all"); + return; + } + activate = args.activate; + + r = do_vg_activate_all (activate); + if (r == -1) + /* do_vg_activate_all has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_vg_activate_all_args, (char *) &args); +} + +static void vg_activate_stub (XDR *xdr_in) +{ + int r; + struct guestfs_vg_activate_args args; + int activate; + char **volgroups; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_vg_activate_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "vg_activate"); + return; + } + activate = args.activate; + volgroups = realloc (args.volgroups.volgroups_val, + sizeof (char *) * (args.volgroups.volgroups_len+1)); + if (volgroups == NULL) { + reply_with_perror ("realloc"); + goto done; + } + volgroups[args.volgroups.volgroups_len] = NULL; + args.volgroups.volgroups_val = volgroups; + + r = do_vg_activate (activate, volgroups); + if (r == -1) + /* do_vg_activate has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_vg_activate_args, (char *) &args); +} + +static void lvresize_stub (XDR *xdr_in) +{ + int r; + struct guestfs_lvresize_args args; + const char *device; + int mbytes; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_lvresize_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "lvresize"); + return; + } + device = args.device; + mbytes = args.mbytes; + + r = do_lvresize (device, mbytes); + if (r == -1) + /* do_lvresize has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_lvresize_args, (char *) &args); +} + +static void resize2fs_stub (XDR *xdr_in) +{ + int r; + struct guestfs_resize2fs_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_resize2fs_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "resize2fs"); + return; + } + device = args.device; + + r = do_resize2fs (device); + if (r == -1) + /* do_resize2fs has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_resize2fs_args, (char *) &args); +} + +static void find_stub (XDR *xdr_in) +{ + char **r; + struct guestfs_find_args args; + const char *directory; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_find_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "find"); + return; + } + directory = args.directory; + + r = do_find (directory); + if (r == NULL) + /* do_find has already called reply_with_error */ + goto done; + + struct guestfs_find_ret ret; + ret.names.names_len = count_strings (r); + ret.names.names_val = r; + reply ((xdrproc_t) &xdr_guestfs_find_ret, (char *) &ret); + free_strings (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_find_args, (char *) &args); +} + +static void e2fsck_f_stub (XDR *xdr_in) +{ + int r; + struct guestfs_e2fsck_f_args args; + const char *device; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_e2fsck_f_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "e2fsck_f"); + return; + } + device = args.device; + + r = do_e2fsck_f (device); + if (r == -1) + /* do_e2fsck_f has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_e2fsck_f_args, (char *) &args); +} + +static void sleep_stub (XDR *xdr_in) +{ + int r; + struct guestfs_sleep_args args; + int secs; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_sleep_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "sleep"); + return; + } + secs = args.secs; + + r = do_sleep (secs); + if (r == -1) + /* do_sleep has already called reply_with_error */ + goto done; + + reply (NULL, NULL); +done: + xdr_free ((xdrproc_t) xdr_guestfs_sleep_args, (char *) &args); +} + +void dispatch_incoming_message (XDR *xdr_in) +{ + switch (proc_nr) { + case GUESTFS_PROC_MOUNT: + mount_stub (xdr_in); + break; + case GUESTFS_PROC_SYNC: + sync_stub (xdr_in); + break; + case GUESTFS_PROC_TOUCH: + touch_stub (xdr_in); + break; + case GUESTFS_PROC_CAT: + cat_stub (xdr_in); + break; + case GUESTFS_PROC_LL: + ll_stub (xdr_in); + break; + case GUESTFS_PROC_LS: + ls_stub (xdr_in); + break; + case GUESTFS_PROC_LIST_DEVICES: + list_devices_stub (xdr_in); + break; + case GUESTFS_PROC_LIST_PARTITIONS: + list_partitions_stub (xdr_in); + break; + case GUESTFS_PROC_PVS: + pvs_stub (xdr_in); + break; + case GUESTFS_PROC_VGS: + vgs_stub (xdr_in); + break; + case GUESTFS_PROC_LVS: + lvs_stub (xdr_in); + break; + case GUESTFS_PROC_PVS_FULL: + pvs_full_stub (xdr_in); + break; + case GUESTFS_PROC_VGS_FULL: + vgs_full_stub (xdr_in); + break; + case GUESTFS_PROC_LVS_FULL: + lvs_full_stub (xdr_in); + break; + case GUESTFS_PROC_READ_LINES: + read_lines_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_INIT: + aug_init_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_CLOSE: + aug_close_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_DEFVAR: + aug_defvar_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_DEFNODE: + aug_defnode_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_GET: + aug_get_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_SET: + aug_set_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_INSERT: + aug_insert_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_RM: + aug_rm_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_MV: + aug_mv_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_MATCH: + aug_match_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_SAVE: + aug_save_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_LOAD: + aug_load_stub (xdr_in); + break; + case GUESTFS_PROC_AUG_LS: + aug_ls_stub (xdr_in); + break; + case GUESTFS_PROC_RM: + rm_stub (xdr_in); + break; + case GUESTFS_PROC_RMDIR: + rmdir_stub (xdr_in); + break; + case GUESTFS_PROC_RM_RF: + rm_rf_stub (xdr_in); + break; + case GUESTFS_PROC_MKDIR: + mkdir_stub (xdr_in); + break; + case GUESTFS_PROC_MKDIR_P: + mkdir_p_stub (xdr_in); + break; + case GUESTFS_PROC_CHMOD: + chmod_stub (xdr_in); + break; + case GUESTFS_PROC_CHOWN: + chown_stub (xdr_in); + break; + case GUESTFS_PROC_EXISTS: + exists_stub (xdr_in); + break; + case GUESTFS_PROC_IS_FILE: + is_file_stub (xdr_in); + break; + case GUESTFS_PROC_IS_DIR: + is_dir_stub (xdr_in); + break; + case GUESTFS_PROC_PVCREATE: + pvcreate_stub (xdr_in); + break; + case GUESTFS_PROC_VGCREATE: + vgcreate_stub (xdr_in); + break; + case GUESTFS_PROC_LVCREATE: + lvcreate_stub (xdr_in); + break; + case GUESTFS_PROC_MKFS: + mkfs_stub (xdr_in); + break; + case GUESTFS_PROC_SFDISK: + sfdisk_stub (xdr_in); + break; + case GUESTFS_PROC_WRITE_FILE: + write_file_stub (xdr_in); + break; + case GUESTFS_PROC_UMOUNT: + umount_stub (xdr_in); + break; + case GUESTFS_PROC_MOUNTS: + mounts_stub (xdr_in); + break; + case GUESTFS_PROC_UMOUNT_ALL: + umount_all_stub (xdr_in); + break; + case GUESTFS_PROC_LVM_REMOVE_ALL: + lvm_remove_all_stub (xdr_in); + break; + case GUESTFS_PROC_FILE: + file_stub (xdr_in); + break; + case GUESTFS_PROC_COMMAND: + command_stub (xdr_in); + break; + case GUESTFS_PROC_COMMAND_LINES: + command_lines_stub (xdr_in); + break; + case GUESTFS_PROC_STAT: + stat_stub (xdr_in); + break; + case GUESTFS_PROC_LSTAT: + lstat_stub (xdr_in); + break; + case GUESTFS_PROC_STATVFS: + statvfs_stub (xdr_in); + break; + case GUESTFS_PROC_TUNE2FS_L: + tune2fs_l_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_SETRO: + blockdev_setro_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_SETRW: + blockdev_setrw_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_GETRO: + blockdev_getro_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_GETSS: + blockdev_getss_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_GETBSZ: + blockdev_getbsz_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_SETBSZ: + blockdev_setbsz_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_GETSZ: + blockdev_getsz_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_GETSIZE64: + blockdev_getsize64_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_FLUSHBUFS: + blockdev_flushbufs_stub (xdr_in); + break; + case GUESTFS_PROC_BLOCKDEV_REREADPT: + blockdev_rereadpt_stub (xdr_in); + break; + case GUESTFS_PROC_UPLOAD: + upload_stub (xdr_in); + break; + case GUESTFS_PROC_DOWNLOAD: + download_stub (xdr_in); + break; + case GUESTFS_PROC_CHECKSUM: + checksum_stub (xdr_in); + break; + case GUESTFS_PROC_TAR_IN: + tar_in_stub (xdr_in); + break; + case GUESTFS_PROC_TAR_OUT: + tar_out_stub (xdr_in); + break; + case GUESTFS_PROC_TGZ_IN: + tgz_in_stub (xdr_in); + break; + case GUESTFS_PROC_TGZ_OUT: + tgz_out_stub (xdr_in); + break; + case GUESTFS_PROC_MOUNT_RO: + mount_ro_stub (xdr_in); + break; + case GUESTFS_PROC_MOUNT_OPTIONS: + mount_options_stub (xdr_in); + break; + case GUESTFS_PROC_MOUNT_VFS: + mount_vfs_stub (xdr_in); + break; + case GUESTFS_PROC_DEBUG: + debug_stub (xdr_in); + break; + case GUESTFS_PROC_LVREMOVE: + lvremove_stub (xdr_in); + break; + case GUESTFS_PROC_VGREMOVE: + vgremove_stub (xdr_in); + break; + case GUESTFS_PROC_PVREMOVE: + pvremove_stub (xdr_in); + break; + case GUESTFS_PROC_SET_E2LABEL: + set_e2label_stub (xdr_in); + break; + case GUESTFS_PROC_GET_E2LABEL: + get_e2label_stub (xdr_in); + break; + case GUESTFS_PROC_SET_E2UUID: + set_e2uuid_stub (xdr_in); + break; + case GUESTFS_PROC_GET_E2UUID: + get_e2uuid_stub (xdr_in); + break; + case GUESTFS_PROC_FSCK: + fsck_stub (xdr_in); + break; + case GUESTFS_PROC_ZERO: + zero_stub (xdr_in); + break; + case GUESTFS_PROC_GRUB_INSTALL: + grub_install_stub (xdr_in); + break; + case GUESTFS_PROC_CP: + cp_stub (xdr_in); + break; + case GUESTFS_PROC_CP_A: + cp_a_stub (xdr_in); + break; + case GUESTFS_PROC_MV: + mv_stub (xdr_in); + break; + case GUESTFS_PROC_DROP_CACHES: + drop_caches_stub (xdr_in); + break; + case GUESTFS_PROC_DMESG: + dmesg_stub (xdr_in); + break; + case GUESTFS_PROC_PING_DAEMON: + ping_daemon_stub (xdr_in); + break; + case GUESTFS_PROC_EQUAL: + equal_stub (xdr_in); + break; + case GUESTFS_PROC_STRINGS: + strings_stub (xdr_in); + break; + case GUESTFS_PROC_STRINGS_E: + strings_e_stub (xdr_in); + break; + case GUESTFS_PROC_HEXDUMP: + hexdump_stub (xdr_in); + break; + case GUESTFS_PROC_ZEROFREE: + zerofree_stub (xdr_in); + break; + case GUESTFS_PROC_PVRESIZE: + pvresize_stub (xdr_in); + break; + case GUESTFS_PROC_SFDISK_N: + sfdisk_N_stub (xdr_in); + break; + case GUESTFS_PROC_SFDISK_L: + sfdisk_l_stub (xdr_in); + break; + case GUESTFS_PROC_SFDISK_KERNEL_GEOMETRY: + sfdisk_kernel_geometry_stub (xdr_in); + break; + case GUESTFS_PROC_SFDISK_DISK_GEOMETRY: + sfdisk_disk_geometry_stub (xdr_in); + break; + case GUESTFS_PROC_VG_ACTIVATE_ALL: + vg_activate_all_stub (xdr_in); + break; + case GUESTFS_PROC_VG_ACTIVATE: + vg_activate_stub (xdr_in); + break; + case GUESTFS_PROC_LVRESIZE: + lvresize_stub (xdr_in); + break; + case GUESTFS_PROC_RESIZE2FS: + resize2fs_stub (xdr_in); + break; + case GUESTFS_PROC_FIND: + find_stub (xdr_in); + break; + case GUESTFS_PROC_E2FSCK_F: + e2fsck_f_stub (xdr_in); + break; + case GUESTFS_PROC_SLEEP: + sleep_stub (xdr_in); break; default: reply_with_error ("dispatch_incoming_message: unknown procedure number %d", proc_nr);