mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
network_conf: Turn virNetworkObjList into virObject
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@redhat.com>
This commit is contained in:
parent
58092dfe87
commit
88aed14f12
1
cfg.mk
1
cfg.mk
@ -250,7 +250,6 @@ useless_free_options = \
|
|||||||
# n virNetworkFree (returns int)
|
# n virNetworkFree (returns int)
|
||||||
# n virNetworkFreeName (returns int)
|
# n virNetworkFreeName (returns int)
|
||||||
# y virNetworkObjFree
|
# y virNetworkObjFree
|
||||||
# n virNetworkObjListFree FIXME
|
|
||||||
# n virNodeDevCapsDefFree FIXME
|
# n virNodeDevCapsDefFree FIXME
|
||||||
# y virNodeDeviceDefFree
|
# y virNodeDeviceDefFree
|
||||||
# n virNodeDeviceFree (returns int)
|
# n virNodeDeviceFree (returns int)
|
||||||
|
@ -73,17 +73,33 @@ VIR_ENUM_IMPL(virNetworkForwardDriverName,
|
|||||||
VIR_ENUM_IMPL(virNetworkTaint, VIR_NETWORK_TAINT_LAST,
|
VIR_ENUM_IMPL(virNetworkTaint, VIR_NETWORK_TAINT_LAST,
|
||||||
"hook-script");
|
"hook-script");
|
||||||
|
|
||||||
bool
|
static virClassPtr virNetworkObjListClass;
|
||||||
virNetworkObjTaint(virNetworkObjPtr obj,
|
static void virNetworkObjListDispose(void *obj);
|
||||||
virNetworkTaintFlags taint)
|
|
||||||
|
static int virNetworkObjOnceInit(void)
|
||||||
{
|
{
|
||||||
unsigned int flag = (1 << taint);
|
if (!(virNetworkObjListClass = virClassNew(virClassForObject(),
|
||||||
|
"virNetworkObjList",
|
||||||
|
sizeof(virNetworkObjList),
|
||||||
|
virNetworkObjListDispose)))
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (obj->taint & flag)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
obj->taint |= flag;
|
VIR_ONCE_GLOBAL_INIT(virNetworkObj)
|
||||||
return true;
|
|
||||||
|
virNetworkObjListPtr virNetworkObjListNew(void)
|
||||||
|
{
|
||||||
|
virNetworkObjListPtr nets;
|
||||||
|
|
||||||
|
if (virNetworkObjInitialize() < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!(nets = virObjectNew(virNetworkObjListClass)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return nets;
|
||||||
}
|
}
|
||||||
|
|
||||||
virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
|
virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
|
||||||
@ -116,6 +132,19 @@ virNetworkObjPtr virNetworkObjFindByName(virNetworkObjListPtr nets,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
virNetworkObjTaint(virNetworkObjPtr obj,
|
||||||
|
virNetworkTaintFlags taint)
|
||||||
|
{
|
||||||
|
unsigned int flag = (1 << taint);
|
||||||
|
|
||||||
|
if (obj->taint & flag)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
obj->taint |= flag;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virPortGroupDefClear(virPortGroupDefPtr def)
|
virPortGroupDefClear(virPortGroupDefPtr def)
|
||||||
@ -275,18 +304,16 @@ void virNetworkObjFree(virNetworkObjPtr net)
|
|||||||
VIR_FREE(net);
|
VIR_FREE(net);
|
||||||
}
|
}
|
||||||
|
|
||||||
void virNetworkObjListFree(virNetworkObjListPtr nets)
|
static void
|
||||||
|
virNetworkObjListDispose(void *obj)
|
||||||
{
|
{
|
||||||
|
virNetworkObjListPtr nets = obj;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (!nets)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < nets->count; i++)
|
for (i = 0; i < nets->count; i++)
|
||||||
virNetworkObjFree(nets->objs[i]);
|
virNetworkObjFree(nets->objs[i]);
|
||||||
|
|
||||||
VIR_FREE(nets->objs);
|
VIR_FREE(nets->objs);
|
||||||
nets->count = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
# include "device_conf.h"
|
# include "device_conf.h"
|
||||||
# include "virbitmap.h"
|
# include "virbitmap.h"
|
||||||
# include "networkcommon_conf.h"
|
# include "networkcommon_conf.h"
|
||||||
|
# include "virobject.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_NETWORK_FORWARD_NONE = 0,
|
VIR_NETWORK_FORWARD_NONE = 0,
|
||||||
@ -277,6 +278,8 @@ struct _virNetworkObj {
|
|||||||
typedef struct _virNetworkObjList virNetworkObjList;
|
typedef struct _virNetworkObjList virNetworkObjList;
|
||||||
typedef virNetworkObjList *virNetworkObjListPtr;
|
typedef virNetworkObjList *virNetworkObjListPtr;
|
||||||
struct _virNetworkObjList {
|
struct _virNetworkObjList {
|
||||||
|
virObject parent;
|
||||||
|
|
||||||
size_t count;
|
size_t count;
|
||||||
virNetworkObjPtr *objs;
|
virNetworkObjPtr *objs;
|
||||||
};
|
};
|
||||||
@ -298,19 +301,17 @@ virNetworkObjIsActive(const virNetworkObj *net)
|
|||||||
return net->active;
|
return net->active;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool virNetworkObjTaint(virNetworkObjPtr obj,
|
virNetworkObjListPtr virNetworkObjListNew(void);
|
||||||
virNetworkTaintFlags taint);
|
|
||||||
|
|
||||||
virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
|
virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
|
||||||
const unsigned char *uuid);
|
const unsigned char *uuid);
|
||||||
virNetworkObjPtr virNetworkObjFindByName(virNetworkObjListPtr nets,
|
virNetworkObjPtr virNetworkObjFindByName(virNetworkObjListPtr nets,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
bool virNetworkObjTaint(virNetworkObjPtr obj,
|
||||||
|
virNetworkTaintFlags taint);
|
||||||
|
|
||||||
void virNetworkDefFree(virNetworkDefPtr def);
|
void virNetworkDefFree(virNetworkDefPtr def);
|
||||||
void virNetworkObjFree(virNetworkObjPtr net);
|
void virNetworkObjFree(virNetworkObjPtr net);
|
||||||
void virNetworkObjListFree(virNetworkObjListPtr nets);
|
|
||||||
|
|
||||||
|
|
||||||
typedef bool (*virNetworkObjListFilter)(virConnectPtr conn,
|
typedef bool (*virNetworkObjListFilter)(virConnectPtr conn,
|
||||||
virNetworkDefPtr def);
|
virNetworkDefPtr def);
|
||||||
|
@ -570,8 +570,8 @@ virNetworkObjGetPersistentDef;
|
|||||||
virNetworkObjIsDuplicate;
|
virNetworkObjIsDuplicate;
|
||||||
virNetworkObjListExport;
|
virNetworkObjListExport;
|
||||||
virNetworkObjListForEach;
|
virNetworkObjListForEach;
|
||||||
virNetworkObjListFree;
|
|
||||||
virNetworkObjListGetNames;
|
virNetworkObjListGetNames;
|
||||||
|
virNetworkObjListNew;
|
||||||
virNetworkObjListNumOfNetworks;
|
virNetworkObjListNumOfNetworks;
|
||||||
virNetworkObjListPrune;
|
virNetworkObjListPrune;
|
||||||
virNetworkObjLock;
|
virNetworkObjLock;
|
||||||
|
@ -620,7 +620,7 @@ networkStateInitialize(bool privileged,
|
|||||||
/* if this fails now, it will be retried later with dnsmasqCapsRefresh() */
|
/* if this fails now, it will be retried later with dnsmasqCapsRefresh() */
|
||||||
driver->dnsmasqCaps = dnsmasqCapsNewFromBinary(DNSMASQ);
|
driver->dnsmasqCaps = dnsmasqCapsNewFromBinary(DNSMASQ);
|
||||||
|
|
||||||
if (VIR_ALLOC(driver->networks) < 0)
|
if (!(driver->networks = virNetworkObjListNew()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (virNetworkLoadAllState(driver->networks,
|
if (virNetworkLoadAllState(driver->networks,
|
||||||
@ -751,8 +751,7 @@ networkStateCleanup(void)
|
|||||||
virObjectEventStateFree(driver->networkEventState);
|
virObjectEventStateFree(driver->networkEventState);
|
||||||
|
|
||||||
/* free inactive networks */
|
/* free inactive networks */
|
||||||
virNetworkObjListFree(driver->networks);
|
virObjectUnref(driver->networks);
|
||||||
VIR_FREE(driver->networks);
|
|
||||||
|
|
||||||
VIR_FREE(driver->networkConfigDir);
|
VIR_FREE(driver->networkConfigDir);
|
||||||
VIR_FREE(driver->networkAutostartDir);
|
VIR_FREE(driver->networkAutostartDir);
|
||||||
|
@ -329,7 +329,7 @@ parallelsNetworkOpen(virConnectPtr conn,
|
|||||||
if (STRNEQ(conn->driver->name, "Parallels"))
|
if (STRNEQ(conn->driver->name, "Parallels"))
|
||||||
return VIR_DRV_OPEN_DECLINED;
|
return VIR_DRV_OPEN_DECLINED;
|
||||||
|
|
||||||
if (VIR_ALLOC(privconn->networks) < 0)
|
if (!(privconn->networks = virNetworkObjListNew()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (parallelsLoadNetworks(conn->privateData) < 0)
|
if (parallelsLoadNetworks(conn->privateData) < 0)
|
||||||
@ -337,7 +337,7 @@ parallelsNetworkOpen(virConnectPtr conn,
|
|||||||
|
|
||||||
return VIR_DRV_OPEN_SUCCESS;
|
return VIR_DRV_OPEN_SUCCESS;
|
||||||
error:
|
error:
|
||||||
VIR_FREE(privconn->networks);
|
virObjectUnref(privconn->networks);
|
||||||
return VIR_DRV_OPEN_DECLINED;
|
return VIR_DRV_OPEN_DECLINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,8 +349,7 @@ int parallelsNetworkClose(virConnectPtr conn)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
parallelsDriverLock(privconn);
|
parallelsDriverLock(privconn);
|
||||||
virNetworkObjListFree(privconn->networks);
|
virObjectUnref(privconn->networks);
|
||||||
VIR_FREE(privconn->networks);
|
|
||||||
parallelsDriverUnlock(privconn);
|
parallelsDriverUnlock(privconn);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -725,7 +725,7 @@ testOpenDefault(virConnectPtr conn)
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!(privconn->domains = virDomainObjListNew()) ||
|
if (!(privconn->domains = virDomainObjListNew()) ||
|
||||||
VIR_ALLOC(privconn->networks) < 0)
|
!(privconn->networks = virNetworkObjListNew()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
memmove(&privconn->nodeInfo, &defaultNodeInfo, sizeof(defaultNodeInfo));
|
memmove(&privconn->nodeInfo, &defaultNodeInfo, sizeof(defaultNodeInfo));
|
||||||
@ -830,8 +830,7 @@ testOpenDefault(virConnectPtr conn)
|
|||||||
|
|
||||||
error:
|
error:
|
||||||
virObjectUnref(privconn->domains);
|
virObjectUnref(privconn->domains);
|
||||||
virNetworkObjListFree(privconn->networks);
|
virObjectUnref(privconn->networks);
|
||||||
VIR_FREE(privconn->networks);
|
|
||||||
virInterfaceObjListFree(&privconn->ifaces);
|
virInterfaceObjListFree(&privconn->ifaces);
|
||||||
virStoragePoolObjListFree(&privconn->pools);
|
virStoragePoolObjListFree(&privconn->pools);
|
||||||
virNodeDeviceObjListFree(&privconn->devs);
|
virNodeDeviceObjListFree(&privconn->devs);
|
||||||
@ -1414,7 +1413,7 @@ testOpenFromFile(virConnectPtr conn, const char *file)
|
|||||||
conn->privateData = privconn;
|
conn->privateData = privconn;
|
||||||
|
|
||||||
if (!(privconn->domains = virDomainObjListNew()) ||
|
if (!(privconn->domains = virDomainObjListNew()) ||
|
||||||
VIR_ALLOC(privconn->networks) < 0)
|
!(privconn->networks = virNetworkObjListNew()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!(privconn->caps = testBuildCapabilities(conn)))
|
if (!(privconn->caps = testBuildCapabilities(conn)))
|
||||||
@ -1466,8 +1465,7 @@ testOpenFromFile(virConnectPtr conn, const char *file)
|
|||||||
xmlXPathFreeContext(ctxt);
|
xmlXPathFreeContext(ctxt);
|
||||||
xmlFreeDoc(doc);
|
xmlFreeDoc(doc);
|
||||||
virObjectUnref(privconn->domains);
|
virObjectUnref(privconn->domains);
|
||||||
virNetworkObjListFree(privconn->networks);
|
virObjectUnref(privconn->networks);
|
||||||
VIR_FREE(privconn->networks);
|
|
||||||
virInterfaceObjListFree(&privconn->ifaces);
|
virInterfaceObjListFree(&privconn->ifaces);
|
||||||
virStoragePoolObjListFree(&privconn->pools);
|
virStoragePoolObjListFree(&privconn->pools);
|
||||||
VIR_FREE(privconn->path);
|
VIR_FREE(privconn->path);
|
||||||
@ -1593,8 +1591,7 @@ static int testConnectClose(virConnectPtr conn)
|
|||||||
virObjectUnref(privconn->xmlopt);
|
virObjectUnref(privconn->xmlopt);
|
||||||
virObjectUnref(privconn->domains);
|
virObjectUnref(privconn->domains);
|
||||||
virNodeDeviceObjListFree(&privconn->devs);
|
virNodeDeviceObjListFree(&privconn->devs);
|
||||||
virNetworkObjListFree(privconn->networks);
|
virObjectUnref(privconn->networks);
|
||||||
VIR_FREE(privconn->networks);
|
|
||||||
virInterfaceObjListFree(&privconn->ifaces);
|
virInterfaceObjListFree(&privconn->ifaces);
|
||||||
virStoragePoolObjListFree(&privconn->pools);
|
virStoragePoolObjListFree(&privconn->pools);
|
||||||
virObjectEventStateFree(privconn->eventState);
|
virObjectEventStateFree(privconn->eventState);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user