From 309cd46b400d80420615b19adfebf7158492ae3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Wed, 29 Nov 2017 14:02:51 +0100 Subject: [PATCH] Introduce virDomainDeviceAliasIsUserAlias Allow parts of code outside domain_conf to decide whether the alias is user-specified or not. --- src/conf/domain_conf.c | 9 ++++++++- src/conf/domain_conf.h | 2 ++ src/libvirt_private.syms | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b31917dad9..57a475d7fc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6660,6 +6660,13 @@ virDomainDeviceAddressParseXML(xmlNodePtr address, #define USER_ALIAS_CHARS \ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-" +bool +virDomainDeviceAliasIsUserAlias(const char *aliasStr) +{ + return STRPREFIX(aliasStr, USER_ALIAS_PREFIX); +} + + /* Parse the XML definition for a device address * @param node XML nodeset to parse for device address definition */ @@ -6713,7 +6720,7 @@ virDomainDeviceInfoParseXML(virDomainXMLOptionPtr xmlopt ATTRIBUTE_UNUSED, if (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) || (xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_USER_ALIAS && - STRPREFIX(aliasStr, USER_ALIAS_PREFIX) && + virDomainDeviceAliasIsUserAlias(aliasStr) && strspn(aliasStr, USER_ALIAS_CHARS) == strlen(aliasStr))) VIR_STEAL_PTR(info->alias, aliasStr); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 48b07226ea..59f250ac96 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2679,6 +2679,8 @@ int virDomainDeviceValidateAliasForHotplug(virDomainObjPtr vm, virDomainDeviceDefPtr dev, unsigned int flags); +bool virDomainDeviceAliasIsUserAlias(const char *aliasStr); + int virDomainDefValidate(virDomainDefPtr def, virCapsPtr caps, unsigned int parseFlags, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 290198dddf..53057aa82e 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -294,6 +294,7 @@ virDomainDefVcpuOrderClear; virDomainDeleteConfig; virDomainDeviceAddressIsValid; virDomainDeviceAddressTypeToString; +virDomainDeviceAliasIsUserAlias; virDomainDeviceDefCopy; virDomainDeviceDefFree; virDomainDeviceDefParse;