mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 13:17:58 +03:00
conf: clean up virDomainNetIPParseXML()
Rearrange this function to be better organized and more correct: * the error codes were changed from the incorrect INVALID_ARG to XML_ERROR * prefix still isn't required, but if present it must be valid or an error will be logged. * don't emit a debug log just because prefix is missing - this is valid. * group everything related to setting prefix in one place rather than scattered through the function.
This commit is contained in:
parent
22a6873a98
commit
bfd2de6eed
@ -6130,15 +6130,9 @@ virDomainNetIPParseXML(xmlNodePtr node)
|
||||
int family = AF_UNSPEC;
|
||||
char *address = NULL;
|
||||
|
||||
if (!(prefixStr = virXMLPropString(node, "prefix")) ||
|
||||
(virStrToLong_ui(prefixStr, NULL, 10, &prefixValue) < 0)) {
|
||||
// Don't shout, as some old config may not have a prefix
|
||||
VIR_DEBUG("Missing or invalid network prefix");
|
||||
}
|
||||
|
||||
if (!(address = virXMLPropString(node, "address"))) {
|
||||
virReportError(VIR_ERR_INVALID_ARG, "%s",
|
||||
_("Missing network address"));
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("Missing required address in <ip>"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@ -6154,11 +6148,22 @@ virDomainNetIPParseXML(xmlNodePtr node)
|
||||
goto cleanup;
|
||||
|
||||
if (virSocketAddrParse(&ip->address, address, family) < 0) {
|
||||
virReportError(VIR_ERR_INVALID_ARG,
|
||||
_("Failed to parse IP address: '%s'"),
|
||||
virReportError(VIR_ERR_XML_ERROR,
|
||||
_("Invalid address '%s' in <ip>"),
|
||||
address);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
prefixStr = virXMLPropString(node, "prefix");
|
||||
if (prefixStr &&
|
||||
((virStrToLong_ui(prefixStr, NULL, 10, &prefixValue) < 0) ||
|
||||
(family == AF_INET6 && prefixValue > 128) ||
|
||||
(family == AF_INET && prefixValue > 32))) {
|
||||
virReportError(VIR_ERR_XML_ERROR,
|
||||
_("Invalid prefix value '%s' in <ip>"),
|
||||
prefixStr);
|
||||
goto cleanup;
|
||||
}
|
||||
ip->prefix = prefixValue;
|
||||
|
||||
ret = ip;
|
||||
|
Loading…
Reference in New Issue
Block a user