Before, missing attributes were only OK when adding entries; modification and deletion required all of them. Now, only deletion works with missing attributes, as long as the host is uniquely identified. --- src/conf/network_conf.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 0bf72e8..956ec48 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -3297,6 +3297,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, int ret = -1; virNetworkIpDefPtr ipdef = virNetworkIpDefByIndex(def, parentIndex); virNetworkDHCPHostDef host; + bool isDelete = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE); memset(&host, 0, sizeof(host)); @@ -3307,13 +3308,11 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, if (!ipdef) goto cleanup; - /* parse the xml into a virNetworkDHCPHostDef */ - if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) { + if (virNetworkDHCPHostDefParseXML(def->name, ipdef, ctxt->node, + &host, isDelete) < 0) + goto cleanup; - if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, false) < 0) { - goto cleanup; - } + if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) { /* search for the entry with this (mac|name), * and update the IP+(mac|name) */ @@ -3345,11 +3344,6 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, } else if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) || (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)) { - if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, true) < 0) { - goto cleanup; - } - /* log error if an entry with same name/address/ip already exists */ for (i = 0; i < ipdef->nhosts; i++) { if ((host.mac && @@ -3379,11 +3373,6 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, goto cleanup; } else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) { - if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, false) < 0) { - goto cleanup; - } - /* find matching entry - all specified attributes must match */ for (i = 0; i < ipdef->nhosts; i++) { if ((!host.mac || -- 1.8.1.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list