On 07/31/2013 07:41 AM, Ján Tomko wrote: > 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 a0b543c..16bdb45 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); ACK, but change the name of this bool to partialOkay to match its meaning and be consistent with what it's being named in virNetworkDHCPHostDefParseXML. > > 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 || -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list