[libvirt] [PATCH 09/16] network: Add virNetworkObj Get API's for @def and @newDef

Pavel Hrdina phrdina at redhat.com
Mon Jul 24 11:23:17 UTC 2017


On Fri, May 19, 2017 at 09:03:17AM -0400, John Ferlan wrote:
> In preparation for making the object private, create a couple of API's
> to get the obj->def and obj->newDef.
> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  src/conf/virnetworkobj.c    |  14 ++
>  src/conf/virnetworkobj.h    |   6 +
>  src/libvirt_private.syms    |   2 +
>  src/network/bridge_driver.c | 488 ++++++++++++++++++++++++--------------------
>  src/test/test_driver.c      |  38 ++--
>  5 files changed, 312 insertions(+), 236 deletions(-)

[...]

> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index cd91a1a..f8e11e2 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c

[...]

> @@ -430,6 +431,7 @@ static int
>  networkUpdateState(virNetworkObjPtr obj,
>                     void *opaque)
>  {
> +    virNetworkDefPtr def = virNetworkObjGetDef(obj);

The @obj is not locked here, you need to move the assignment after the
lock.

>      virNetworkDriverStatePtr driver = opaque;
>      dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver);
>      virMacMapPtr macmap;

[...]

> @@ -3460,6 +3475,7 @@ networkCreateXML(virConnectPtr conn,
>      virNetworkDriverStatePtr driver = networkGetDriver();
>      virNetworkDefPtr def;
>      virNetworkObjPtr obj = NULL;
> +    virNetworkDefPtr objdef;

I would probably change the current @def to @newDef and go with @def
instead of @objdef.

>      virNetworkPtr net = NULL;
>      virObjectEventPtr event = NULL;
>  

[...]

> @@ -3870,20 +3894,24 @@ networkGetXMLDesc(virNetworkPtr net,
>  {
>      virNetworkObjPtr obj;
>      virNetworkDefPtr def;
> +    virNetworkDefPtr objdef;
> +    virNetworkDefPtr newDef;

This one is a little bit tricky since there is already @newDef, in this
context I would change the @def to @curDef and go with @def instead of
@objdef.  One note, please try to use camelCase even for @objDef.  We
like consistency :).

>      char *ret = NULL;
>  
>      virCheckFlags(VIR_NETWORK_XML_INACTIVE, NULL);
>  
>      if (!(obj = networkObjFromNetwork(net)))
>          return ret;
> +    objdef = virNetworkObjGetDef(obj);
> +    newDef = virNetworkObjGetNewDef(obj);
>  
> -    if (virNetworkGetXMLDescEnsureACL(net->conn, obj->def) < 0)
> +    if (virNetworkGetXMLDescEnsureACL(net->conn, objdef) < 0)
>          goto cleanup;
>  
> -    if ((flags & VIR_NETWORK_XML_INACTIVE) && obj->newDef)
> -        def = obj->newDef;
> +    if ((flags & VIR_NETWORK_XML_INACTIVE) && newDef)
> +        def = newDef;
>      else
> -        def = obj->def;
> +        def = objdef;
>  
>      ret = virNetworkDefFormat(def, flags);
>  

[...]

> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> index 46f0a9a..ee473ba 100644
> --- a/src/test/test_driver.c
> +++ b/src/test/test_driver.c

[...]

> @@ -3384,6 +3388,7 @@ testNetworkCreateXML(virConnectPtr conn, const char *xml)
>      testDriverPtr privconn = conn->privateData;
>      virNetworkDefPtr def;
>      virNetworkObjPtr obj = NULL;
> +    virNetworkDefPtr objdef;

The same, @def -> @newDef, @objdef -> @def.

>      virNetworkPtr net = NULL;
>      virObjectEventPtr event = NULL;
>  
> @@ -3395,13 +3400,14 @@ testNetworkCreateXML(virConnectPtr conn, const char *xml)
>                                         VIR_NETWORK_OBJ_LIST_ADD_CHECK_LIVE)))
>          goto cleanup;
>      def = NULL;
> +    objdef = virNetworkObjGetDef(obj);
>      obj->active = 1;
>  
> -    event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid,
> +    event = virNetworkEventLifecycleNew(objdef->name, objdef->uuid,
>                                          VIR_NETWORK_EVENT_STARTED,
>                                          0);
>  
> -    net = virGetNetwork(conn, obj->def->name, obj->def->uuid);
> +    net = virGetNetwork(conn, objdef->name, objdef->uuid);
>  
>   cleanup:
>      virNetworkDefFree(def);
> @@ -3418,6 +3424,7 @@ testNetworkDefineXML(virConnectPtr conn,
>      testDriverPtr privconn = conn->privateData;
>      virNetworkDefPtr def;
>      virNetworkObjPtr obj = NULL;
> +    virNetworkDefPtr objdef;

And here as well.

Otherwise the patch is correct.

Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170724/950c0be5/attachment-0001.sig>


More information about the libvir-list mailing list