Implement upload and download commands.
[libguestfs.git] / src / guestfs_protocol.h
index 822d960..4c3f1cd 100644 (file)
@@ -616,6 +616,16 @@ struct guestfs_blockdev_rereadpt_args {
 };
 typedef struct guestfs_blockdev_rereadpt_args guestfs_blockdev_rereadpt_args;
 
+struct guestfs_upload_args {
+       char *remotefilename;
+};
+typedef struct guestfs_upload_args guestfs_upload_args;
+
+struct guestfs_download_args {
+       char *remotefilename;
+};
+typedef struct guestfs_download_args guestfs_download_args;
+
 enum guestfs_procedure {
        GUESTFS_PROC_MOUNT = 1,
        GUESTFS_PROC_SYNC = 2,
@@ -682,12 +692,16 @@ enum guestfs_procedure {
        GUESTFS_PROC_BLOCKDEV_GETSIZE64 = 63,
        GUESTFS_PROC_BLOCKDEV_FLUSHBUFS = 64,
        GUESTFS_PROC_BLOCKDEV_REREADPT = 65,
-       GUESTFS_PROC_dummy = 65 + 1,
+       GUESTFS_PROC_UPLOAD = 66,
+       GUESTFS_PROC_DOWNLOAD = 67,
+       GUESTFS_PROC_NR_PROCS = 67 + 1,
 };
 typedef enum guestfs_procedure guestfs_procedure;
 #define GUESTFS_MESSAGE_MAX 4194304
 #define GUESTFS_PROGRAM 0x2000F5F5
 #define GUESTFS_PROTOCOL_VERSION 1
+#define GUESTFS_LAUNCH_FLAG 0xf5f55ff5
+#define GUESTFS_CANCEL_FLAG 0xffffeeee
 
 enum guestfs_message_direction {
        GUESTFS_DIRECTION_CALL = 0,
@@ -703,7 +717,7 @@ typedef enum guestfs_message_status guestfs_message_status;
 #define GUESTFS_ERROR_LEN 256
 
 struct guestfs_message_error {
-       char *error;
+       char *error_message;
 };
 typedef struct guestfs_message_error guestfs_message_error;
 
@@ -716,6 +730,16 @@ struct guestfs_message_header {
        guestfs_message_status status;
 };
 typedef struct guestfs_message_header guestfs_message_header;
+#define GUESTFS_MAX_CHUNK_SIZE 8192
+
+struct guestfs_chunk {
+       int cancel;
+       struct {
+               u_int data_len;
+               char *data_val;
+       } data;
+};
+typedef struct guestfs_chunk guestfs_chunk;
 
 /* the xdr functions */
 
@@ -813,11 +837,14 @@ extern  bool_t xdr_guestfs_blockdev_getsize64_args (XDR *, guestfs_blockdev_gets
 extern  bool_t xdr_guestfs_blockdev_getsize64_ret (XDR *, guestfs_blockdev_getsize64_ret*);
 extern  bool_t xdr_guestfs_blockdev_flushbufs_args (XDR *, guestfs_blockdev_flushbufs_args*);
 extern  bool_t xdr_guestfs_blockdev_rereadpt_args (XDR *, guestfs_blockdev_rereadpt_args*);
+extern  bool_t xdr_guestfs_upload_args (XDR *, guestfs_upload_args*);
+extern  bool_t xdr_guestfs_download_args (XDR *, guestfs_download_args*);
 extern  bool_t xdr_guestfs_procedure (XDR *, guestfs_procedure*);
 extern  bool_t xdr_guestfs_message_direction (XDR *, guestfs_message_direction*);
 extern  bool_t xdr_guestfs_message_status (XDR *, guestfs_message_status*);
 extern  bool_t xdr_guestfs_message_error (XDR *, guestfs_message_error*);
 extern  bool_t xdr_guestfs_message_header (XDR *, guestfs_message_header*);
+extern  bool_t xdr_guestfs_chunk (XDR *, guestfs_chunk*);
 
 #else /* K&R C */
 extern bool_t xdr_str ();
@@ -913,11 +940,14 @@ extern bool_t xdr_guestfs_blockdev_getsize64_args ();
 extern bool_t xdr_guestfs_blockdev_getsize64_ret ();
 extern bool_t xdr_guestfs_blockdev_flushbufs_args ();
 extern bool_t xdr_guestfs_blockdev_rereadpt_args ();
+extern bool_t xdr_guestfs_upload_args ();
+extern bool_t xdr_guestfs_download_args ();
 extern bool_t xdr_guestfs_procedure ();
 extern bool_t xdr_guestfs_message_direction ();
 extern bool_t xdr_guestfs_message_status ();
 extern bool_t xdr_guestfs_message_error ();
 extern bool_t xdr_guestfs_message_header ();
+extern bool_t xdr_guestfs_chunk ();
 
 #endif /* K&R C */