|  | /* | 
|  | * QEMU Guest Agent common/cross-platform common commands | 
|  | * | 
|  | * Copyright (c) 2020 Red Hat, Inc. | 
|  | * | 
|  | * This work is licensed under the terms of the GNU GPL, version 2 or later. | 
|  | * See the COPYING file in the top-level directory. | 
|  | */ | 
|  | #ifndef QGA_COMMANDS_COMMON_H | 
|  | #define QGA_COMMANDS_COMMON_H | 
|  |  | 
|  | #include "qga-qapi-types.h" | 
|  | #include "guest-agent-core.h" | 
|  | #include "qemu/queue.h" | 
|  |  | 
|  | #if defined(__linux__) | 
|  | #include <linux/fs.h> | 
|  | #ifdef FIFREEZE | 
|  | #define CONFIG_FSFREEZE | 
|  | #endif | 
|  | #ifdef FITRIM | 
|  | #define CONFIG_FSTRIM | 
|  | #endif | 
|  | #endif /* __linux__ */ | 
|  |  | 
|  | #ifdef __FreeBSD__ | 
|  | #include <ufs/ffs/fs.h> | 
|  | #ifdef UFSSUSPEND | 
|  | #define CONFIG_FSFREEZE | 
|  | #endif | 
|  | #endif /* __FreeBSD__ */ | 
|  |  | 
|  | #if defined(CONFIG_FSFREEZE) || defined(CONFIG_FSTRIM) | 
|  | typedef struct FsMount { | 
|  | char *dirname; | 
|  | char *devtype; | 
|  | unsigned int devmajor, devminor; | 
|  | #if defined(__FreeBSD__) | 
|  | dev_t dev; | 
|  | fsid_t fsid; | 
|  | #endif | 
|  | QTAILQ_ENTRY(FsMount) next; | 
|  | } FsMount; | 
|  |  | 
|  | typedef QTAILQ_HEAD(FsMountList, FsMount) FsMountList; | 
|  |  | 
|  | bool build_fs_mount_list(FsMountList *mounts, Error **errp); | 
|  | void free_fs_mount_list(FsMountList *mounts); | 
|  | #endif /* CONFIG_FSFREEZE || CONFIG_FSTRIM */ | 
|  |  | 
|  | #if defined(CONFIG_FSFREEZE) | 
|  | int64_t qmp_guest_fsfreeze_do_freeze_list(bool has_mountpoints, | 
|  | strList *mountpoints, | 
|  | FsMountList mounts, | 
|  | Error **errp); | 
|  | int qmp_guest_fsfreeze_do_thaw(Error **errp); | 
|  | #endif /* CONFIG_FSFREEZE */ | 
|  |  | 
|  | #ifdef HAVE_GETIFADDRS | 
|  | #include <ifaddrs.h> | 
|  | bool guest_get_hw_addr(struct ifaddrs *ifa, unsigned char *buf, | 
|  | bool *obtained, Error **errp); | 
|  | #endif | 
|  |  | 
|  | typedef struct GuestFileHandle GuestFileHandle; | 
|  |  | 
|  | GuestFileHandle *guest_file_handle_find(int64_t id, Error **errp); | 
|  |  | 
|  | GuestFileRead *guest_file_read_unsafe(GuestFileHandle *gfh, | 
|  | int64_t count, Error **errp); | 
|  |  | 
|  | /** | 
|  | * qga_get_host_name: | 
|  | * @errp: Error object | 
|  | * | 
|  | * Operating system agnostic way of querying host name. | 
|  | * Compared to g_get_host_name(), it doesn't cache the result. | 
|  | * | 
|  | * Returns allocated hostname (caller should free), NULL on failure. | 
|  | */ | 
|  | char *qga_get_host_name(Error **errp); | 
|  |  | 
|  | #endif |