xref: /openbmc/qemu/qga/commands-common.h (revision 3b5efc553eb1ea8eaaa81d87b100036205a4525d)
15d3586b8SPhilippe Mathieu-Daudé /*
25d3586b8SPhilippe Mathieu-Daudé  * QEMU Guest Agent common/cross-platform common commands
35d3586b8SPhilippe Mathieu-Daudé  *
45d3586b8SPhilippe Mathieu-Daudé  * Copyright (c) 2020 Red Hat, Inc.
55d3586b8SPhilippe Mathieu-Daudé  *
65d3586b8SPhilippe Mathieu-Daudé  * This work is licensed under the terms of the GNU GPL, version 2 or later.
75d3586b8SPhilippe Mathieu-Daudé  * See the COPYING file in the top-level directory.
85d3586b8SPhilippe Mathieu-Daudé  */
95d3586b8SPhilippe Mathieu-Daudé #ifndef QGA_COMMANDS_COMMON_H
105d3586b8SPhilippe Mathieu-Daudé #define QGA_COMMANDS_COMMON_H
115d3586b8SPhilippe Mathieu-Daudé 
125d3586b8SPhilippe Mathieu-Daudé #include "qga-qapi-types.h"
13518b0d80SAlexander Ivanov #include "guest-agent-core.h"
14518b0d80SAlexander Ivanov #include "qemu/queue.h"
15518b0d80SAlexander Ivanov 
16518b0d80SAlexander Ivanov #if defined(__linux__)
17518b0d80SAlexander Ivanov #include <linux/fs.h>
18518b0d80SAlexander Ivanov #endif /* __linux__ */
19518b0d80SAlexander Ivanov 
20bad0001eSAlexander Ivanov #ifdef __FreeBSD__
21bad0001eSAlexander Ivanov #include <ufs/ffs/fs.h>
22bad0001eSAlexander Ivanov #endif /* __FreeBSD__ */
23bad0001eSAlexander Ivanov 
24518b0d80SAlexander Ivanov #if defined(CONFIG_FSFREEZE) || defined(CONFIG_FSTRIM)
25518b0d80SAlexander Ivanov typedef struct FsMount {
26518b0d80SAlexander Ivanov     char *dirname;
27518b0d80SAlexander Ivanov     char *devtype;
28518b0d80SAlexander Ivanov     unsigned int devmajor, devminor;
29bad0001eSAlexander Ivanov #if defined(__FreeBSD__)
30bad0001eSAlexander Ivanov     dev_t dev;
31bad0001eSAlexander Ivanov     fsid_t fsid;
32bad0001eSAlexander Ivanov #endif
33518b0d80SAlexander Ivanov     QTAILQ_ENTRY(FsMount) next;
34518b0d80SAlexander Ivanov } FsMount;
35518b0d80SAlexander Ivanov 
36518b0d80SAlexander Ivanov typedef QTAILQ_HEAD(FsMountList, FsMount) FsMountList;
37518b0d80SAlexander Ivanov 
38518b0d80SAlexander Ivanov bool build_fs_mount_list(FsMountList *mounts, Error **errp);
39518b0d80SAlexander Ivanov void free_fs_mount_list(FsMountList *mounts);
40518b0d80SAlexander Ivanov #endif /* CONFIG_FSFREEZE || CONFIG_FSTRIM */
41518b0d80SAlexander Ivanov 
42518b0d80SAlexander Ivanov #if defined(CONFIG_FSFREEZE)
43518b0d80SAlexander Ivanov int64_t qmp_guest_fsfreeze_do_freeze_list(bool has_mountpoints,
44518b0d80SAlexander Ivanov                                           strList *mountpoints,
45518b0d80SAlexander Ivanov                                           FsMountList mounts,
46518b0d80SAlexander Ivanov                                           Error **errp);
47518b0d80SAlexander Ivanov int qmp_guest_fsfreeze_do_thaw(Error **errp);
48518b0d80SAlexander Ivanov #endif /* CONFIG_FSFREEZE */
495d3586b8SPhilippe Mathieu-Daudé 
50*a1241094SAlexander Ivanov #ifdef HAVE_GETIFADDRS
51*a1241094SAlexander Ivanov #include <ifaddrs.h>
52*a1241094SAlexander Ivanov bool guest_get_hw_addr(struct ifaddrs *ifa, unsigned char *buf,
53*a1241094SAlexander Ivanov                        bool *obtained, Error **errp);
54*a1241094SAlexander Ivanov #endif
55*a1241094SAlexander Ivanov 
565d3586b8SPhilippe Mathieu-Daudé typedef struct GuestFileHandle GuestFileHandle;
575d3586b8SPhilippe Mathieu-Daudé 
585d3586b8SPhilippe Mathieu-Daudé GuestFileHandle *guest_file_handle_find(int64_t id, Error **errp);
595d3586b8SPhilippe Mathieu-Daudé 
60ead83a13SPhilippe Mathieu-Daudé GuestFileRead *guest_file_read_unsafe(GuestFileHandle *gfh,
61ead83a13SPhilippe Mathieu-Daudé                                       int64_t count, Error **errp);
62ead83a13SPhilippe Mathieu-Daudé 
63548fb0daSMarc-André Lureau /**
64548fb0daSMarc-André Lureau  * qga_get_host_name:
65548fb0daSMarc-André Lureau  * @errp: Error object
66548fb0daSMarc-André Lureau  *
67548fb0daSMarc-André Lureau  * Operating system agnostic way of querying host name.
68548fb0daSMarc-André Lureau  * Compared to g_get_host_name(), it doesn't cache the result.
69548fb0daSMarc-André Lureau  *
70548fb0daSMarc-André Lureau  * Returns allocated hostname (caller should free), NULL on failure.
71548fb0daSMarc-André Lureau  */
72548fb0daSMarc-André Lureau char *qga_get_host_name(Error **errp);
73548fb0daSMarc-André Lureau 
745d3586b8SPhilippe Mathieu-Daudé #endif
75