X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=src%2Fguestfs-internal.h;h=10c950389631b1da7680620e9b404a41d79788eb;hp=12ca0ecf17a369eacf65403d404dab5a94f80fa2;hb=06fef60db5c7a96cb59aa92c4708e10333345e90;hpb=737181bcd7b1de8c3a613d6282030c34efa78fb6 diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h index 12ca0ec..10c9503 100644 --- a/src/guestfs-internal.h +++ b/src/guestfs-internal.h @@ -38,11 +38,10 @@ #define N_(str) str #endif -#ifdef __linux__ -#define CAN_CHECK_PEER_EUID 1 -#else -#define CAN_CHECK_PEER_EUID 0 -#endif +#define TMP_TEMPLATE_ON_STACK(var) \ + const char *ttos_tmpdir = guestfs_tmpdir (); \ + char var[strlen (ttos_tmpdir) + 32]; \ + sprintf (var, "%s/libguestfsXXXXXX", ttos_tmpdir) \ #define UNIX_PATH_MAX 108 @@ -74,8 +73,6 @@ */ #define NETWORK "169.254.0.0/16" #define ROUTER "169.254.2.2" -#define GUESTFWD_ADDR "169.254.2.4" -#define GUESTFWD_PORT "6666" /* GuestFS handle and connection. */ enum state { CONFIG, LAUNCHING, READY, BUSY, NO_HANDLE }; @@ -106,6 +103,7 @@ struct guestfs_h int autosync; int direct; int recovery_proc; + int enable_network; char *path; /* Path to kernel, initrd. */ char *qemu; /* Qemu binary. */ @@ -129,19 +127,83 @@ struct guestfs_h void * launch_done_cb_data; guestfs_close_cb close_cb; void * close_cb_data; + guestfs_progress_cb progress_cb; + void * progress_cb_data; int msg_next_serial; + + /* Information gathered by inspect_os. Must be freed by calling + * guestfs___free_inspect_info. + */ + struct inspect_fs *fses; + size_t nr_fses; + + /* Private data area. */ + struct hash_table *pda; +}; + +/* Per-filesystem data stored for inspect_os. */ +enum inspect_fs_content { + FS_CONTENT_UNKNOWN = 0, + FS_CONTENT_LINUX_ROOT, + FS_CONTENT_WINDOWS_ROOT, + FS_CONTENT_LINUX_BOOT, + FS_CONTENT_LINUX_USR, + FS_CONTENT_LINUX_USR_LOCAL, + FS_CONTENT_LINUX_VAR, +}; + +enum inspect_os_type { + OS_TYPE_UNKNOWN = 0, + OS_TYPE_LINUX, + OS_TYPE_WINDOWS, +}; + +enum inspect_os_distro { + OS_DISTRO_UNKNOWN = 0, + OS_DISTRO_DEBIAN, + OS_DISTRO_FEDORA, + OS_DISTRO_REDHAT_BASED, + OS_DISTRO_RHEL, + OS_DISTRO_WINDOWS, +}; + +struct inspect_fs { + int is_root; + char *device; + int is_mountable; + int is_swap; + enum inspect_fs_content content; + enum inspect_os_type type; + enum inspect_os_distro distro; + char *product_name; + int major_version; + int minor_version; + char *arch; + char *windows_systemroot; + struct inspect_fstab_entry *fstab; + size_t nr_fstab; +}; + +struct inspect_fstab_entry { + char *device; + char *mountpoint; }; struct guestfs_message_header; struct guestfs_message_error; + extern void guestfs_error (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); extern void guestfs_perrorf (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); extern void *guestfs_safe_realloc (guestfs_h *g, void *ptr, int nbytes); extern char *guestfs_safe_strdup (guestfs_h *g, const char *str); +extern char *guestfs_safe_strndup (guestfs_h *g, const char *str, size_t n); extern void *guestfs_safe_memdup (guestfs_h *g, void *ptr, size_t size); +extern void guestfs___print_timestamped_argv (guestfs_h *g, const char *argv[]); +extern void guestfs___print_timestamped_message (guestfs_h *g, const char *fs, ...); +extern void guestfs___free_inspect_info (guestfs_h *g); extern int guestfs___set_busy (guestfs_h *g); extern int guestfs___end_busy (guestfs_h *g); extern int guestfs___send (guestfs_h *g, int proc_nr, xdrproc_t xdrp, char *args); @@ -151,12 +213,15 @@ extern int guestfs___recv_file (guestfs_h *g, const char *filename); extern int guestfs___send_to_daemon (guestfs_h *g, const void *v_buf, size_t n); extern int guestfs___recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn); extern int guestfs___accept_from_daemon (guestfs_h *g); +extern int guestfs___build_appliance (guestfs_h *g, char **kernel, char **initrd, char **appliance); +extern void guestfs___print_BufferIn (FILE *out, const char *buf, size_t buf_size); #define error guestfs_error #define perrorf guestfs_perrorf #define safe_malloc guestfs_safe_malloc #define safe_realloc guestfs_safe_realloc #define safe_strdup guestfs_safe_strdup +#define safe_strndup guestfs_safe_strndup #define safe_memdup guestfs_safe_memdup #endif /* GUESTFS_INTERNAL_H_ */