mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
network: allow '-' in model name
In QEMU PPC64 we have a network device called "spapr-vlan". We can specify this using the existing syntax for network devices, however libvirt currently rejects "spapr-vlan" in virDomainNetDefParseXML() because of the "-". Fix the code to accept "-". * src/conf/domain_conf.c (virDomainNetDefParseXML): Allow '-' in model name, and be more efficient. * docs/schemas/domaincommon.rng: Limit valid model names to match code. Based on a patch by Michael Ellerman.
This commit is contained in:
parent
a7adac3730
commit
dad3c2090d
@ -1276,7 +1276,11 @@
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="model">
|
||||
<attribute name="type"/>
|
||||
<attribute name="type">
|
||||
<data type="string">
|
||||
<param name='pattern'>[a-zA-Z0-9\-_]+</param>
|
||||
</data>
|
||||
</attribute>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
|
@ -3385,6 +3385,9 @@ error:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define NET_MODEL_CHARS \
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ091234567890_-"
|
||||
|
||||
/* Parse the XML definition for a network interface
|
||||
* @param node XML nodeset to parse for net definition
|
||||
* @return 0 on success, -1 on failure
|
||||
@ -3699,16 +3702,13 @@ virDomainNetDefParseXML(virCapsPtr caps,
|
||||
* reasonable, not that it is a supported NIC type. FWIW kvm
|
||||
* supports these types as of April 2008:
|
||||
* i82551 i82557b i82559er ne2k_pci pcnet rtl8139 e1000 virtio
|
||||
* QEMU PPC64 supports spapr-vlan
|
||||
*/
|
||||
if (model != NULL) {
|
||||
int i;
|
||||
for (i = 0 ; i < strlen(model) ; i++) {
|
||||
int char_ok = c_isalnum(model[i]) || model[i] == '_';
|
||||
if (!char_ok) {
|
||||
virDomainReportError(VIR_ERR_INVALID_ARG, "%s",
|
||||
_("Model name contains invalid characters"));
|
||||
goto error;
|
||||
}
|
||||
if (strspn(model, NET_MODEL_CHARS) < strlen(model)) {
|
||||
virDomainReportError(VIR_ERR_INVALID_ARG, "%s",
|
||||
_("Model name contains invalid characters"));
|
||||
goto error;
|
||||
}
|
||||
def->model = model;
|
||||
model = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user