+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);
+}
+