[libvirt] [PATCH v1 19/31] network_conf: Turn virNetworkObjList into virObject
Peter Krempa
pkrempa at redhat.com
Tue Mar 3 10:47:32 UTC 2015
On Thu, Feb 26, 2015 at 15:17:28 +0100, Michal Privoznik wrote:
> Well, one day this will be self-locking object, but not today.
> But lets prepare the code for that! Moreover,
> virNetworkObjListFree() is no longer needed, so turn it into
> virNetworkObjListDispose().
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> cfg.mk | 1 -
> src/conf/network_conf.c | 53 +++++++++++++++++++++++++++++----------
> src/conf/network_conf.h | 11 ++++----
> src/libvirt_private.syms | 2 +-
> src/network/bridge_driver.c | 5 ++--
> src/parallels/parallels_driver.c | 2 +-
> src/parallels/parallels_network.c | 2 +-
> src/test/test_driver.c | 13 ++++------
> 8 files changed, 56 insertions(+), 33 deletions(-)
>
> diff --git a/cfg.mk b/cfg.mk
> index d72b039..07a794a 100644
> --- a/cfg.mk
> +++ b/cfg.mk
> @@ -250,7 +250,6 @@ useless_free_options = \
> # n virNetworkFree (returns int)
> # n virNetworkFreeName (returns int)
> # y virNetworkObjFree
> -# n virNetworkObjListFree FIXME
> # n virNodeDevCapsDefFree FIXME
> # y virNodeDeviceDefFree
> # n virNodeDeviceFree (returns int)
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index 24a5f7c..4efad43 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -73,17 +73,33 @@ VIR_ENUM_IMPL(virNetworkForwardDriverName,
> VIR_ENUM_IMPL(virNetworkTaint, VIR_NETWORK_TAINT_LAST,
> "hook-script");
>
> -bool
> -virNetworkObjTaint(virNetworkObjPtr obj,
> - virNetworkTaintFlags taint)
I don't see a reason to move this function ...
> +static virClassPtr virNetworkObjListClass;
> +static void virNetworkObjListDispose(void *obj);
> +
> +static int virNetworkObjOnceInit(void)
> +{
> + if (!(virNetworkObjListClass = virClassNew(virClassForObject(),
> + "virNetworkObjList",
> + sizeof(virNetworkObjList),
> + virNetworkObjListDispose)))
> + return -1;
> + return 0;
> +}
> +
> +
> +VIR_ONCE_GLOBAL_INIT(virNetworkObj)
> +
> +virNetworkObjListPtr virNetworkObjListNew(void)
> {
> - unsigned int flag = (1 << taint);
> + virNetworkObjListPtr nets;
> +
> + if (virNetworkObjInitialize() < 0)
> + return NULL;
>
> - if (obj->taint & flag)
> - return false;
> + if (!(nets = virObjectNew(virNetworkObjListClass)))
> + return NULL;
>
> - obj->taint |= flag;
> - return true;
> + return nets;
> }
>
> virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
> @@ -116,6 +132,19 @@ virNetworkObjPtr virNetworkObjFindByName(virNetworkObjListPtr nets,
> return NULL;
> }
>
> +bool
> +virNetworkObjTaint(virNetworkObjPtr obj,
> + virNetworkTaintFlags taint)
Here.
> +{
> + unsigned int flag = (1 << taint);
> +
> + if (obj->taint & flag)
> + return false;
> +
> + obj->taint |= flag;
> + return true;
> +}
> +
>
> static void
> virPortGroupDefClear(virPortGroupDefPtr def)
> @@ -275,18 +304,16 @@ void virNetworkObjFree(virNetworkObjPtr net)
> VIR_FREE(net);
> }
>
> -void virNetworkObjListFree(virNetworkObjListPtr nets)
> +static void
> +virNetworkObjListDispose(void *obj)
> {
> + virNetworkObjListPtr nets = obj;
> size_t i;
>
> - if (!nets)
> - return;
> -
> for (i = 0; i < nets->count; i++)
> virNetworkObjFree(nets->objs[i]);
>
> VIR_FREE(nets->objs);
> - nets->count = 0;
> }
>
> /*
> diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h
> index 164fb1a..5725258 100644
> --- a/src/conf/network_conf.h
> +++ b/src/conf/network_conf.h
> @@ -40,6 +40,7 @@
> # include "device_conf.h"
> # include "virbitmap.h"
> # include "networkcommon_conf.h"
> +# include "virobject.h"
>
> typedef enum {
> VIR_NETWORK_FORWARD_NONE = 0,
> @@ -277,6 +278,8 @@ struct _virNetworkObj {
> typedef struct _virNetworkObjList virNetworkObjList;
> typedef virNetworkObjList *virNetworkObjListPtr;
> struct _virNetworkObjList {
> + virObject parent;
> +
> size_t count;
> virNetworkObjPtr *objs;
> };
> @@ -298,19 +301,17 @@ virNetworkObjIsActive(const virNetworkObj *net)
> return net->active;
> }
>
> -bool virNetworkObjTaint(virNetworkObjPtr obj,
> - virNetworkTaintFlags taint);
Nor this definition ...
> +virNetworkObjListPtr virNetworkObjListNew(void);
>
> virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
> const unsigned char *uuid);
> virNetworkObjPtr virNetworkObjFindByName(virNetworkObjListPtr nets,
> const char *name);
> -
> +bool virNetworkObjTaint(virNetworkObjPtr obj,
> + virNetworkTaintFlags taint);
Here.
>
> void virNetworkDefFree(virNetworkDefPtr def);
> void virNetworkObjFree(virNetworkObjPtr net);
> -void virNetworkObjListFree(virNetworkObjListPtr nets);
> -
>
> typedef bool (*virNetworkObjListFilter)(virConnectPtr conn,
> virNetworkDefPtr def);
ACK if you don't touch virNetworkObjTaint.
Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150303/da1e0541/attachment-0001.sig>
More information about the libvir-list
mailing list