[libvirt] [PATCH 2/3] Reverse logic allowing partial DHCP host XML

Laine Stump laine at laine.org
Fri Aug 2 10:10:26 UTC 2013


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 ||




More information about the libvir-list mailing list