migration: enhance migrate_uri_parse

Export migrate_uri_parse for use outside migration internals, and define
a method migrate_is_uri that indicates when migrate_uri_parse should
be used.

Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Link: https://lore.kernel.org/r/1736967650-129648-12-git-send-email-steven.sistare@oracle.com
Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
Steve Sistare 2025-01-15 11:00:37 -08:00 committed by Fabiano Rosas
parent 2ef121688f
commit f2374f0fc3
3 changed files with 18 additions and 2 deletions

View file

@ -108,4 +108,11 @@ bool migration_in_bg_snapshot(void);
bool migration_block_activate(Error **errp); bool migration_block_activate(Error **errp);
bool migration_block_inactivate(void); bool migration_block_inactivate(void);
/* True if @uri starts with a syntactically valid URI prefix */
bool migrate_is_uri(const char *uri);
/* Parse @uri and return @channel, returning true on success */
bool migrate_uri_parse(const char *uri, MigrationChannel **channel,
Error **errp);
#endif #endif

View file

@ -14,6 +14,7 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "qemu/ctype.h"
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/error-report.h" #include "qemu/error-report.h"
#include "qemu/main-loop.h" #include "qemu/main-loop.h"
@ -587,6 +588,16 @@ void migrate_add_address(SocketAddress *address)
QAPI_CLONE(SocketAddress, address)); QAPI_CLONE(SocketAddress, address));
} }
bool migrate_is_uri(const char *uri)
{
while (*uri && *uri != ':') {
if (!qemu_isalpha(*uri++)) {
return false;
}
}
return *uri == ':';
}
bool migrate_uri_parse(const char *uri, MigrationChannel **channel, bool migrate_uri_parse(const char *uri, MigrationChannel **channel,
Error **errp) Error **errp)
{ {

View file

@ -519,8 +519,6 @@ bool check_dirty_bitmap_mig_alias_map(const BitmapMigrationNodeAliasList *bbm,
Error **errp); Error **errp);
void migrate_add_address(SocketAddress *address); void migrate_add_address(SocketAddress *address);
bool migrate_uri_parse(const char *uri, MigrationChannel **channel,
Error **errp);
int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque); int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque);
#define qemu_ram_foreach_block \ #define qemu_ram_foreach_block \