Hi On Thu, Sep 22, 2022 at 4:28 PM Alexander Ivanov < alexander.iva...@virtuozzo.com> wrote:
> Add commands-bsd.c file with dumb functions, fix device path and make > the code buildable in FreeBSD. > > Signed-off-by: Alexander Ivanov <alexander.iva...@virtuozzo.com> > --- > meson.build | 2 +- > qga/commands-bsd.c | 121 +++++++++++++++++++++++++++++++++++++++++++ > qga/commands-posix.c | 6 ++- > qga/main.c | 11 +++- > qga/meson.build | 3 ++ > 5 files changed, 140 insertions(+), 3 deletions(-) > create mode 100644 qga/commands-bsd.c > > diff --git a/meson.build b/meson.build > index c2adb7caf4..574cc1e91e 100644 > --- a/meson.build > +++ b/meson.build > @@ -75,7 +75,7 @@ have_tools = get_option('tools') \ > .allowed() > have_ga = get_option('guest_agent') \ > .disable_auto_if(not have_system and not have_tools) \ > - .require(targetos in ['sunos', 'linux', 'windows'], > + .require(targetos in ['sunos', 'linux', 'windows', 'freebsd'], > error_message: 'unsupported OS for QEMU guest agent') \ > .allowed() > have_block = have_system or have_tools > diff --git a/qga/commands-bsd.c b/qga/commands-bsd.c > new file mode 100644 > index 0000000000..c1e3ed13e9 > --- /dev/null > +++ b/qga/commands-bsd.c > @@ -0,0 +1,121 @@ > +/* > + * QEMU Guest Agent BSD-specific command implementations > + * > + * Copyright (c) Virtuozzo International GmbH. > + * > + * Authors: > + * Alexander Ivanov <alexander.iva...@virtuozzo.com> > + * > + * This work is licensed under the terms of the GNU GPL, version 2 or > later. > + * See the COPYING file in the top-level directory. > + */ > + > +#include "qemu/osdep.h" > +#include "qga-qapi-commands.h" > +#include "qapi/qmp/qerror.h" > +#include "qapi/error.h" > +#include "qemu/queue.h" > +#include "commands-common.h" > + > +#if defined(CONFIG_FSFREEZE) || defined(CONFIG_FSTRIM) > +bool build_fs_mount_list(FsMountList *mounts, Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return false; > +} > +#endif > + > +#if defined(CONFIG_FSFREEZE) > +int64_t qmp_guest_fsfreeze_do_freeze_list(bool has_mountpoints, > + strList *mountpoints, > + FsMountList mounts, > + Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return 0; > +} > + > +int qmp_guest_fsfreeze_do_thaw(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return 0; > +} > +#endif > + > +GuestDiskInfoList *qmp_guest_get_disks(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +GuestDiskStatsInfoList *qmp_guest_get_diskstats(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +GuestCpuStatsList *qmp_guest_get_cpustats(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +void qmp_guest_suspend_disk(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > +} > + > +void qmp_guest_suspend_ram(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > +} > + > +void qmp_guest_suspend_hybrid(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > +} > + > +GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error > **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return -1; > +} > + > +void qmp_guest_set_user_password(const char *username, > + const char *password, > + bool crypted, > + Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > +} > + > +GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +GuestMemoryBlockResponseList * > +qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks, Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error **errp) > +{ > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +} > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index 0bb8b9e2f3..3a1055d5c3 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -31,6 +31,10 @@ > #include <utmpx.h> > #endif > > +#ifdef __FreeBSD__ > +#undef HAVE_GETIFADDRS > +#endif > Why? leave a comment in code please (or in commit message if it's solved later in the series) > + > #ifdef HAVE_GETIFADDRS > #include <arpa/inet.h> > #include <sys/socket.h> > @@ -763,7 +767,7 @@ void qmp_guest_file_flush(int64_t handle, Error **errp) > } > } > > -#if !defined(__linux__) > +#if !(defined(__linux__) || defined(__FreeBSD__)) > > void qmp_guest_suspend_disk(Error **errp) > { > diff --git a/qga/main.c b/qga/main.c > index 5f1efa2333..22b3c0df11 100644 > --- a/qga/main.c > +++ b/qga/main.c > @@ -45,9 +45,14 @@ > #endif > > #ifndef _WIN32 > +#ifdef __FreeBSD__ > +#define QGA_VIRTIO_PATH_DEFAULT "/dev/vtcon/org.qemu.guest_agent.0" > +#define QGA_SERIAL_PATH_DEFAULT "/dev/vtcon/org.qemu.guest_agent.0" > The same path for serial and virtio? > +#else /* __FreeBSD__ */ > #define QGA_VIRTIO_PATH_DEFAULT "/dev/virtio-ports/org.qemu.guest_agent.0" > -#define QGA_STATE_RELATIVE_DIR "run" > #define QGA_SERIAL_PATH_DEFAULT "/dev/ttyS0" > +#endif /* __FreeBSD__ */ > +#define QGA_STATE_RELATIVE_DIR "run" > #else > #define QGA_VIRTIO_PATH_DEFAULT "\\\\.\\Global\\org.qemu.guest_agent.0" > #define QGA_STATE_RELATIVE_DIR "qemu-ga" > @@ -1475,7 +1480,11 @@ int main(int argc, char **argv) > } > > if (config->method == NULL) { > +#ifdef CONFIG_BSD > + config->method = g_strdup("isa-serial"); > Why is isa serial the default ? > +#else > config->method = g_strdup("virtio-serial"); > +#endif > } > > socket_activation = check_socket_activation(); > diff --git a/qga/meson.build b/qga/meson.build > index 409f49a000..456ba4c29f 100644 > --- a/qga/meson.build > +++ b/qga/meson.build > @@ -75,6 +75,9 @@ qga_ss.add(when: 'CONFIG_POSIX', if_true: files( > qga_ss.add(when: 'CONFIG_LINUX', if_true: files( > 'commands-linux.c', > )) > +qga_ss.add(when: 'CONFIG_BSD', if_true: files( > + 'commands-bsd.c', > +)) > qga_ss.add(when: 'CONFIG_WIN32', if_true: files( > 'channel-win32.c', > 'commands-win32.c', > -- > 2.34.1 > > > otherwise, lgtm -- Marc-André Lureau