Rewrite of main loop impl, start of FileIn/FileOut support.
[libguestfs.git] / src / guestfs_protocol.h
index fedd007..c1837f8 100644 (file)
@@ -92,6 +92,38 @@ typedef struct {
        guestfs_lvm_int_lv *guestfs_lvm_int_lv_list_val;
 } guestfs_lvm_int_lv_list;
 
+struct guestfs_int_stat {
+       quad_t dev;
+       quad_t ino;
+       quad_t mode;
+       quad_t nlink;
+       quad_t uid;
+       quad_t gid;
+       quad_t rdev;
+       quad_t size;
+       quad_t blksize;
+       quad_t blocks;
+       quad_t atime;
+       quad_t mtime;
+       quad_t ctime;
+};
+typedef struct guestfs_int_stat guestfs_int_stat;
+
+struct guestfs_int_statvfs {
+       quad_t bsize;
+       quad_t frsize;
+       quad_t blocks;
+       quad_t bfree;
+       quad_t bavail;
+       quad_t files;
+       quad_t ffree;
+       quad_t favail;
+       quad_t fsid;
+       quad_t flag;
+       quad_t namemax;
+};
+typedef struct guestfs_int_statvfs guestfs_int_statvfs;
+
 struct guestfs_mount_args {
        char *device;
        char *mountpoint;
@@ -426,6 +458,164 @@ struct guestfs_mounts_ret {
 };
 typedef struct guestfs_mounts_ret guestfs_mounts_ret;
 
+struct guestfs_file_args {
+       char *path;
+};
+typedef struct guestfs_file_args guestfs_file_args;
+
+struct guestfs_file_ret {
+       char *description;
+};
+typedef struct guestfs_file_ret guestfs_file_ret;
+
+struct guestfs_command_args {
+       struct {
+               u_int arguments_len;
+               str *arguments_val;
+       } arguments;
+};
+typedef struct guestfs_command_args guestfs_command_args;
+
+struct guestfs_command_ret {
+       char *output;
+};
+typedef struct guestfs_command_ret guestfs_command_ret;
+
+struct guestfs_command_lines_args {
+       struct {
+               u_int arguments_len;
+               str *arguments_val;
+       } arguments;
+};
+typedef struct guestfs_command_lines_args guestfs_command_lines_args;
+
+struct guestfs_command_lines_ret {
+       struct {
+               u_int lines_len;
+               str *lines_val;
+       } lines;
+};
+typedef struct guestfs_command_lines_ret guestfs_command_lines_ret;
+
+struct guestfs_stat_args {
+       char *path;
+};
+typedef struct guestfs_stat_args guestfs_stat_args;
+
+struct guestfs_stat_ret {
+       guestfs_int_stat statbuf;
+};
+typedef struct guestfs_stat_ret guestfs_stat_ret;
+
+struct guestfs_lstat_args {
+       char *path;
+};
+typedef struct guestfs_lstat_args guestfs_lstat_args;
+
+struct guestfs_lstat_ret {
+       guestfs_int_stat statbuf;
+};
+typedef struct guestfs_lstat_ret guestfs_lstat_ret;
+
+struct guestfs_statvfs_args {
+       char *path;
+};
+typedef struct guestfs_statvfs_args guestfs_statvfs_args;
+
+struct guestfs_statvfs_ret {
+       guestfs_int_statvfs statbuf;
+};
+typedef struct guestfs_statvfs_ret guestfs_statvfs_ret;
+
+struct guestfs_tune2fs_l_args {
+       char *device;
+};
+typedef struct guestfs_tune2fs_l_args guestfs_tune2fs_l_args;
+
+struct guestfs_tune2fs_l_ret {
+       struct {
+               u_int superblock_len;
+               str *superblock_val;
+       } superblock;
+};
+typedef struct guestfs_tune2fs_l_ret guestfs_tune2fs_l_ret;
+
+struct guestfs_blockdev_setro_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_setro_args guestfs_blockdev_setro_args;
+
+struct guestfs_blockdev_setrw_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_setrw_args guestfs_blockdev_setrw_args;
+
+struct guestfs_blockdev_getro_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_getro_args guestfs_blockdev_getro_args;
+
+struct guestfs_blockdev_getro_ret {
+       bool_t ro;
+};
+typedef struct guestfs_blockdev_getro_ret guestfs_blockdev_getro_ret;
+
+struct guestfs_blockdev_getss_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_getss_args guestfs_blockdev_getss_args;
+
+struct guestfs_blockdev_getss_ret {
+       int sectorsize;
+};
+typedef struct guestfs_blockdev_getss_ret guestfs_blockdev_getss_ret;
+
+struct guestfs_blockdev_getbsz_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_getbsz_args guestfs_blockdev_getbsz_args;
+
+struct guestfs_blockdev_getbsz_ret {
+       int blocksize;
+};
+typedef struct guestfs_blockdev_getbsz_ret guestfs_blockdev_getbsz_ret;
+
+struct guestfs_blockdev_setbsz_args {
+       char *device;
+       int blocksize;
+};
+typedef struct guestfs_blockdev_setbsz_args guestfs_blockdev_setbsz_args;
+
+struct guestfs_blockdev_getsz_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_getsz_args guestfs_blockdev_getsz_args;
+
+struct guestfs_blockdev_getsz_ret {
+       quad_t sizeinsectors;
+};
+typedef struct guestfs_blockdev_getsz_ret guestfs_blockdev_getsz_ret;
+
+struct guestfs_blockdev_getsize64_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_getsize64_args guestfs_blockdev_getsize64_args;
+
+struct guestfs_blockdev_getsize64_ret {
+       quad_t sizeinbytes;
+};
+typedef struct guestfs_blockdev_getsize64_ret guestfs_blockdev_getsize64_ret;
+
+struct guestfs_blockdev_flushbufs_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_flushbufs_args guestfs_blockdev_flushbufs_args;
+
+struct guestfs_blockdev_rereadpt_args {
+       char *device;
+};
+typedef struct guestfs_blockdev_rereadpt_args guestfs_blockdev_rereadpt_args;
+
 enum guestfs_procedure {
        GUESTFS_PROC_MOUNT = 1,
        GUESTFS_PROC_SYNC = 2,
@@ -475,7 +665,24 @@ enum guestfs_procedure {
        GUESTFS_PROC_MOUNTS = 46,
        GUESTFS_PROC_UMOUNT_ALL = 47,
        GUESTFS_PROC_LVM_REMOVE_ALL = 48,
-       GUESTFS_PROC_dummy = 48 + 1,
+       GUESTFS_PROC_FILE = 49,
+       GUESTFS_PROC_COMMAND = 50,
+       GUESTFS_PROC_COMMAND_LINES = 51,
+       GUESTFS_PROC_STAT = 52,
+       GUESTFS_PROC_LSTAT = 53,
+       GUESTFS_PROC_STATVFS = 54,
+       GUESTFS_PROC_TUNE2FS_L = 55,
+       GUESTFS_PROC_BLOCKDEV_SETRO = 56,
+       GUESTFS_PROC_BLOCKDEV_SETRW = 57,
+       GUESTFS_PROC_BLOCKDEV_GETRO = 58,
+       GUESTFS_PROC_BLOCKDEV_GETSS = 59,
+       GUESTFS_PROC_BLOCKDEV_GETBSZ = 60,
+       GUESTFS_PROC_BLOCKDEV_SETBSZ = 61,
+       GUESTFS_PROC_BLOCKDEV_GETSZ = 62,
+       GUESTFS_PROC_BLOCKDEV_GETSIZE64 = 63,
+       GUESTFS_PROC_BLOCKDEV_FLUSHBUFS = 64,
+       GUESTFS_PROC_BLOCKDEV_REREADPT = 65,
+       GUESTFS_PROC_NR_PROCS = 65 + 1,
 };
 typedef enum guestfs_procedure guestfs_procedure;
 #define GUESTFS_MESSAGE_MAX 4194304
@@ -509,6 +716,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 */
 
@@ -520,6 +737,8 @@ extern  bool_t xdr_guestfs_lvm_int_vg (XDR *, guestfs_lvm_int_vg*);
 extern  bool_t xdr_guestfs_lvm_int_vg_list (XDR *, guestfs_lvm_int_vg_list*);
 extern  bool_t xdr_guestfs_lvm_int_lv (XDR *, guestfs_lvm_int_lv*);
 extern  bool_t xdr_guestfs_lvm_int_lv_list (XDR *, guestfs_lvm_int_lv_list*);
+extern  bool_t xdr_guestfs_int_stat (XDR *, guestfs_int_stat*);
+extern  bool_t xdr_guestfs_int_statvfs (XDR *, guestfs_int_statvfs*);
 extern  bool_t xdr_guestfs_mount_args (XDR *, guestfs_mount_args*);
 extern  bool_t xdr_guestfs_touch_args (XDR *, guestfs_touch_args*);
 extern  bool_t xdr_guestfs_cat_args (XDR *, guestfs_cat_args*);
@@ -575,11 +794,41 @@ extern  bool_t xdr_guestfs_sfdisk_args (XDR *, guestfs_sfdisk_args*);
 extern  bool_t xdr_guestfs_write_file_args (XDR *, guestfs_write_file_args*);
 extern  bool_t xdr_guestfs_umount_args (XDR *, guestfs_umount_args*);
 extern  bool_t xdr_guestfs_mounts_ret (XDR *, guestfs_mounts_ret*);
+extern  bool_t xdr_guestfs_file_args (XDR *, guestfs_file_args*);
+extern  bool_t xdr_guestfs_file_ret (XDR *, guestfs_file_ret*);
+extern  bool_t xdr_guestfs_command_args (XDR *, guestfs_command_args*);
+extern  bool_t xdr_guestfs_command_ret (XDR *, guestfs_command_ret*);
+extern  bool_t xdr_guestfs_command_lines_args (XDR *, guestfs_command_lines_args*);
+extern  bool_t xdr_guestfs_command_lines_ret (XDR *, guestfs_command_lines_ret*);
+extern  bool_t xdr_guestfs_stat_args (XDR *, guestfs_stat_args*);
+extern  bool_t xdr_guestfs_stat_ret (XDR *, guestfs_stat_ret*);
+extern  bool_t xdr_guestfs_lstat_args (XDR *, guestfs_lstat_args*);
+extern  bool_t xdr_guestfs_lstat_ret (XDR *, guestfs_lstat_ret*);
+extern  bool_t xdr_guestfs_statvfs_args (XDR *, guestfs_statvfs_args*);
+extern  bool_t xdr_guestfs_statvfs_ret (XDR *, guestfs_statvfs_ret*);
+extern  bool_t xdr_guestfs_tune2fs_l_args (XDR *, guestfs_tune2fs_l_args*);
+extern  bool_t xdr_guestfs_tune2fs_l_ret (XDR *, guestfs_tune2fs_l_ret*);
+extern  bool_t xdr_guestfs_blockdev_setro_args (XDR *, guestfs_blockdev_setro_args*);
+extern  bool_t xdr_guestfs_blockdev_setrw_args (XDR *, guestfs_blockdev_setrw_args*);
+extern  bool_t xdr_guestfs_blockdev_getro_args (XDR *, guestfs_blockdev_getro_args*);
+extern  bool_t xdr_guestfs_blockdev_getro_ret (XDR *, guestfs_blockdev_getro_ret*);
+extern  bool_t xdr_guestfs_blockdev_getss_args (XDR *, guestfs_blockdev_getss_args*);
+extern  bool_t xdr_guestfs_blockdev_getss_ret (XDR *, guestfs_blockdev_getss_ret*);
+extern  bool_t xdr_guestfs_blockdev_getbsz_args (XDR *, guestfs_blockdev_getbsz_args*);
+extern  bool_t xdr_guestfs_blockdev_getbsz_ret (XDR *, guestfs_blockdev_getbsz_ret*);
+extern  bool_t xdr_guestfs_blockdev_setbsz_args (XDR *, guestfs_blockdev_setbsz_args*);
+extern  bool_t xdr_guestfs_blockdev_getsz_args (XDR *, guestfs_blockdev_getsz_args*);
+extern  bool_t xdr_guestfs_blockdev_getsz_ret (XDR *, guestfs_blockdev_getsz_ret*);
+extern  bool_t xdr_guestfs_blockdev_getsize64_args (XDR *, guestfs_blockdev_getsize64_args*);
+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_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 ();
@@ -589,6 +838,8 @@ extern bool_t xdr_guestfs_lvm_int_vg ();
 extern bool_t xdr_guestfs_lvm_int_vg_list ();
 extern bool_t xdr_guestfs_lvm_int_lv ();
 extern bool_t xdr_guestfs_lvm_int_lv_list ();
+extern bool_t xdr_guestfs_int_stat ();
+extern bool_t xdr_guestfs_int_statvfs ();
 extern bool_t xdr_guestfs_mount_args ();
 extern bool_t xdr_guestfs_touch_args ();
 extern bool_t xdr_guestfs_cat_args ();
@@ -644,11 +895,41 @@ extern bool_t xdr_guestfs_sfdisk_args ();
 extern bool_t xdr_guestfs_write_file_args ();
 extern bool_t xdr_guestfs_umount_args ();
 extern bool_t xdr_guestfs_mounts_ret ();
+extern bool_t xdr_guestfs_file_args ();
+extern bool_t xdr_guestfs_file_ret ();
+extern bool_t xdr_guestfs_command_args ();
+extern bool_t xdr_guestfs_command_ret ();
+extern bool_t xdr_guestfs_command_lines_args ();
+extern bool_t xdr_guestfs_command_lines_ret ();
+extern bool_t xdr_guestfs_stat_args ();
+extern bool_t xdr_guestfs_stat_ret ();
+extern bool_t xdr_guestfs_lstat_args ();
+extern bool_t xdr_guestfs_lstat_ret ();
+extern bool_t xdr_guestfs_statvfs_args ();
+extern bool_t xdr_guestfs_statvfs_ret ();
+extern bool_t xdr_guestfs_tune2fs_l_args ();
+extern bool_t xdr_guestfs_tune2fs_l_ret ();
+extern bool_t xdr_guestfs_blockdev_setro_args ();
+extern bool_t xdr_guestfs_blockdev_setrw_args ();
+extern bool_t xdr_guestfs_blockdev_getro_args ();
+extern bool_t xdr_guestfs_blockdev_getro_ret ();
+extern bool_t xdr_guestfs_blockdev_getss_args ();
+extern bool_t xdr_guestfs_blockdev_getss_ret ();
+extern bool_t xdr_guestfs_blockdev_getbsz_args ();
+extern bool_t xdr_guestfs_blockdev_getbsz_ret ();
+extern bool_t xdr_guestfs_blockdev_setbsz_args ();
+extern bool_t xdr_guestfs_blockdev_getsz_args ();
+extern bool_t xdr_guestfs_blockdev_getsz_ret ();
+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_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 */