summaryrefslogtreecommitdiffstats
path: root/src/guestfs-internal.h
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-07-28 15:40:42 +0100
committerRichard Jones <rjones@redhat.com>2010-08-17 14:09:25 +0100
commit8289aa1ad68ec94c87fc4d538f638d8816052d92 (patch)
treedcd5830a796849d0a5b0c7f2ee2854e503f2c2a6 /src/guestfs-internal.h
parent65e9ac4595fbace8f301030469932be518456246 (diff)
downloadlibguestfs-8289aa1ad68ec94c87fc4d538f638d8816052d92.tar.gz
libguestfs-8289aa1ad68ec94c87fc4d538f638d8816052d92.tar.xz
libguestfs-8289aa1ad68ec94c87fc4d538f638d8816052d92.zip
New APIs for guest inspection.
This commit converts (some of) the Perl inspection code to C and makes it available through core APIs. The new APIs are: inspect-os - Does the inspection, returns list of OSes inspect-get-* - Get results of the inspection where '*' is one of: type - 'windows' or 'linux' distro - Linux distro arch - architecture product-name - long product name string major-version minor-version - major.minor version of OS mountpoints - get a list of the mountpoints filesystems - get all filesystems associated with the OS This works for all existing supported Linux and Windows OSes.
Diffstat (limited to 'src/guestfs-internal.h')
-rw-r--r--src/guestfs-internal.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index d0fc3ca9..9bf76daa 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -131,6 +131,59 @@ struct guestfs_h
void * close_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;
+};
+
+/* 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;
+ struct inspect_fstab_entry *fstab;
+ size_t nr_fstab;
+};
+
+struct inspect_fstab_entry {
+ char *device;
+ char *mountpoint;
};
struct guestfs_message_header;
@@ -143,6 +196,7 @@ 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___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);