On Thu, Jul 13, 2023 at 10:57:06AM +0000, Het Gala wrote: > This patch parses 'migrate' and 'migrate-incoming' QAPI's 'uri' > string containing migration connection related information > and stores them inside well defined 'MigrateAddress' struct. > > Misc: limit line width in exec.c to 80 char recommended by Qemu.
Please remove this, it uneccessary and unrelated to the functional change. > > Suggested-by: Aravind Retnakaran <[email protected]> > Signed-off-by: Het Gala <[email protected]> > --- > migration/exec.c | 4 ++-- > migration/exec.h | 4 ++++ > migration/migration.c | 54 +++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 60 insertions(+), 2 deletions(-) > > diff --git a/migration/exec.c b/migration/exec.c > index 2bf882bbe1..c4a3293246 100644 > --- a/migration/exec.c > +++ b/migration/exec.c > @@ -27,7 +27,6 @@ > #include "qemu/cutils.h" > > #ifdef WIN32 > -const char *exec_get_cmd_path(void); > const char *exec_get_cmd_path(void) > { > g_autofree char *detected_path = g_new(char, MAX_PATH); > @@ -40,7 +39,8 @@ const char *exec_get_cmd_path(void) > } > #endif > > -void exec_start_outgoing_migration(MigrationState *s, const char *command, > Error **errp) > +void exec_start_outgoing_migration(MigrationState *s, const char *command, > + Error **errp) Not relevant to this patch. > { > QIOChannel *ioc; > > diff --git a/migration/exec.h b/migration/exec.h > index b210ffde7a..736cd71028 100644 > --- a/migration/exec.h > +++ b/migration/exec.h > @@ -19,6 +19,10 @@ > > #ifndef QEMU_MIGRATION_EXEC_H > #define QEMU_MIGRATION_EXEC_H > + > +#ifdef WIN32 > +const char *exec_get_cmd_path(void); > +#endif > void exec_start_incoming_migration(const char *host_port, Error **errp); > > void exec_start_outgoing_migration(MigrationState *s, const char *host_port, > diff --git a/migration/migration.c b/migration/migration.c > index 91bba630a8..af2ec50061 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -64,6 +64,7 @@ > #include "yank_functions.h" > #include "sysemu/qtest.h" > #include "options.h" > +#include "qemu/sockets.h" > > static NotifierList migration_state_notifiers = > NOTIFIER_LIST_INITIALIZER(migration_state_notifiers); > @@ -421,15 +422,63 @@ void migrate_add_address(SocketAddress *address) > QAPI_CLONE(SocketAddress, address)); > } > > +static bool migrate_uri_parse(const char *uri, > + MigrationAddress **channel, > + Error **errp) > +{ > + g_autoptr(MigrationAddress) addr = g_new0(MigrationAddress, 1); > + SocketAddress *saddr = &addr->u.socket; > + InetSocketAddress *isock = &addr->u.rdma; > + strList **tail = &addr->u.exec.args; > + > + if (strstart(uri, "exec:", NULL)) { > + addr->transport = MIGRATION_ADDRESS_TYPE_EXEC; > +#ifdef WIN32 > + QAPI_LIST_APPEND(tail, g_strdup(exec_get_cmd_path())); > +#else > + QAPI_LIST_APPEND(tail, g_strdup("/bin/sh")); > +#endif > + QAPI_LIST_APPEND(tail, g_strdup("-c")); This only works for !WIN32. For Win32 it needs to be "/c", so just shuffle to be inside the ifdef. With those minor changes made you can add Reviewed-by: Daniel P. Berrangé <[email protected]> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
