[libvirt] [PATCH 00/16] Make the virNetworkObjPtr private

All part of the effort I have to have a common object model. This series is network test, driver, and virnetworkobj related to work towards that goal. By the last patch, the object is now private to virnetworkobj.c John Ferlan (16): test: Fix up formatting in network test API's test: Use consistent variable names for network test driver APIs network: Perform some formatting cleanup in bridge_driver network: Use consistent naming in bridge_driver for virNetwork objects network: Move macmap mgmt from bridge_driver to virnetworkobj network: Add virNetworkObj Get/Set API's for @dnsmasqPid and @radvdPid network: Alter virNetworkObj @class_id to be @classIdMap network: Add virNetworkObj Get/Set API's for @floor_sum network: Add virNetworkObj Get API's for @def and @newDef network: Introduce virNetworkObj{Get|Set}Autostart network: Introduce virNetworkObj{Is|Set}Active network: Introduce virNetworkObjIsPersistent network: Consistent use of @obj for virnetworkobj network: Adjust virNetworkObjNew call and return network: Modify naming for virNetworkObjList* fetching APIs network: Privatize virNetworkObj src/conf/virnetworkobj.c | 679 +++++++++++++++------ src/conf/virnetworkobj.h | 107 +++- src/libvirt_private.syms | 20 + src/network/bridge_driver.c | 1415 +++++++++++++++++++++++-------------------- src/network/bridge_driver.h | 50 +- src/test/test_driver.c | 279 +++++---- tests/networkxml2conftest.c | 13 +- 7 files changed, 1538 insertions(+), 1025 deletions(-) -- 2.9.3

Fix some spacing/formatting in the network test driver code. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/test/test_driver.c | 87 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 23 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 2db3f7d..5f0a170 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -956,6 +956,7 @@ testParseDomains(testDriverPtr privconn, return ret; } + static int testParseNetworks(testDriverPtr privconn, const char *file, @@ -995,6 +996,7 @@ testParseNetworks(testDriverPtr privconn, return ret; } + static int testParseInterfaces(testDriverPtr privconn, const char *file, @@ -3222,8 +3224,9 @@ testNetworkObjFindByUUID(testDriverPtr privconn, } -static virNetworkPtr testNetworkLookupByUUID(virConnectPtr conn, - const unsigned char *uuid) +static virNetworkPtr +testNetworkLookupByUUID(virConnectPtr conn, + const unsigned char *uuid) { testDriverPtr privconn = conn->privateData; virNetworkObjPtr net; @@ -3255,8 +3258,9 @@ testNetworkObjFindByName(testDriverPtr privconn, } -static virNetworkPtr testNetworkLookupByName(virConnectPtr conn, - const char *name) +static virNetworkPtr +testNetworkLookupByName(virConnectPtr conn, + const char *name) { testDriverPtr privconn = conn->privateData; virNetworkObjPtr net; @@ -3273,7 +3277,8 @@ static virNetworkPtr testNetworkLookupByName(virConnectPtr conn, } -static int testConnectNumOfNetworks(virConnectPtr conn) +static int +testConnectNumOfNetworks(virConnectPtr conn) { testDriverPtr privconn = conn->privateData; int numActive; @@ -3283,7 +3288,12 @@ static int testConnectNumOfNetworks(virConnectPtr conn) return numActive; } -static int testConnectListNetworks(virConnectPtr conn, char **const names, int nnames) { + +static int +testConnectListNetworks(virConnectPtr conn, + char **const names, + int nnames) +{ testDriverPtr privconn = conn->privateData; int n; @@ -3292,7 +3302,9 @@ static int testConnectListNetworks(virConnectPtr conn, char **const names, int n return n; } -static int testConnectNumOfDefinedNetworks(virConnectPtr conn) + +static int +testConnectNumOfDefinedNetworks(virConnectPtr conn) { testDriverPtr privconn = conn->privateData; int numInactive; @@ -3302,7 +3314,12 @@ static int testConnectNumOfDefinedNetworks(virConnectPtr conn) return numInactive; } -static int testConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames) { + +static int +testConnectListDefinedNetworks(virConnectPtr conn, + char **const names, + int nnames) +{ testDriverPtr privconn = conn->privateData; int n; @@ -3311,6 +3328,7 @@ static int testConnectListDefinedNetworks(virConnectPtr conn, char **const names return n; } + static int testConnectListAllNetworks(virConnectPtr conn, virNetworkPtr **nets, @@ -3323,7 +3341,9 @@ testConnectListAllNetworks(virConnectPtr conn, return virNetworkObjListExport(conn, privconn->networks, nets, NULL, flags); } -static int testNetworkIsActive(virNetworkPtr net) + +static int +testNetworkIsActive(virNetworkPtr net) { testDriverPtr privconn = net->conn->privateData; virNetworkObjPtr obj; @@ -3339,7 +3359,9 @@ static int testNetworkIsActive(virNetworkPtr net) return ret; } -static int testNetworkIsPersistent(virNetworkPtr net) + +static int +testNetworkIsPersistent(virNetworkPtr net) { testDriverPtr privconn = net->conn->privateData; virNetworkObjPtr obj; @@ -3356,7 +3378,8 @@ static int testNetworkIsPersistent(virNetworkPtr net) } -static virNetworkPtr testNetworkCreateXML(virConnectPtr conn, const char *xml) +static virNetworkPtr +testNetworkCreateXML(virConnectPtr conn, const char *xml) { testDriverPtr privconn = conn->privateData; virNetworkDefPtr def; @@ -3387,8 +3410,10 @@ static virNetworkPtr testNetworkCreateXML(virConnectPtr conn, const char *xml) return ret; } -static -virNetworkPtr testNetworkDefineXML(virConnectPtr conn, const char *xml) + +static virNetworkPtr +testNetworkDefineXML(virConnectPtr conn, + const char *xml) { testDriverPtr privconn = conn->privateData; virNetworkDefPtr def; @@ -3416,7 +3441,9 @@ virNetworkPtr testNetworkDefineXML(virConnectPtr conn, const char *xml) return ret; } -static int testNetworkUndefine(virNetworkPtr network) + +static int +testNetworkUndefine(virNetworkPtr network) { testDriverPtr privconn = network->conn->privateData; virNetworkObjPtr privnet; @@ -3445,6 +3472,7 @@ static int testNetworkUndefine(virNetworkPtr network) return ret; } + static int testNetworkUpdate(virNetworkPtr net, unsigned int command, @@ -3487,7 +3515,9 @@ testNetworkUpdate(virNetworkPtr net, return ret; } -static int testNetworkCreate(virNetworkPtr network) + +static int +testNetworkCreate(virNetworkPtr network) { testDriverPtr privconn = network->conn->privateData; virNetworkObjPtr privnet; @@ -3515,7 +3545,9 @@ static int testNetworkCreate(virNetworkPtr network) return ret; } -static int testNetworkDestroy(virNetworkPtr network) + +static int +testNetworkDestroy(virNetworkPtr network) { testDriverPtr privconn = network->conn->privateData; virNetworkObjPtr privnet; @@ -3540,8 +3572,10 @@ static int testNetworkDestroy(virNetworkPtr network) return ret; } -static char *testNetworkGetXMLDesc(virNetworkPtr network, - unsigned int flags) + +static char * +testNetworkGetXMLDesc(virNetworkPtr network, + unsigned int flags) { testDriverPtr privconn = network->conn->privateData; virNetworkObjPtr privnet; @@ -3559,7 +3593,10 @@ static char *testNetworkGetXMLDesc(virNetworkPtr network, return ret; } -static char *testNetworkGetBridgeName(virNetworkPtr network) { + +static char * +testNetworkGetBridgeName(virNetworkPtr network) +{ testDriverPtr privconn = network->conn->privateData; char *bridge = NULL; virNetworkObjPtr privnet; @@ -3581,8 +3618,10 @@ static char *testNetworkGetBridgeName(virNetworkPtr network) { return bridge; } -static int testNetworkGetAutostart(virNetworkPtr network, - int *autostart) + +static int +testNetworkGetAutostart(virNetworkPtr network, + int *autostart) { testDriverPtr privconn = network->conn->privateData; virNetworkObjPtr privnet; @@ -3599,8 +3638,10 @@ static int testNetworkGetAutostart(virNetworkPtr network, return ret; } -static int testNetworkSetAutostart(virNetworkPtr network, - int autostart) + +static int +testNetworkSetAutostart(virNetworkPtr network, + int autostart) { testDriverPtr privconn = network->conn->privateData; virNetworkObjPtr privnet; -- 2.9.3

On Fri, May 19, 2017 at 09:03:09AM -0400, John Ferlan wrote:
Fix some spacing/formatting in the network test driver code.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/test/test_driver.c | 87 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 23 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

A virNetworkObjPtr will be an 'obj'. A virNetworkPtr will be a 'net'. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/test/test_driver.c | 182 ++++++++++++++++++++++++------------------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 5f0a170..46f0a9a 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -3210,17 +3210,17 @@ static virNetworkObjPtr testNetworkObjFindByUUID(testDriverPtr privconn, const unsigned char *uuid) { - virNetworkObjPtr net; + virNetworkObjPtr obj; char uuidstr[VIR_UUID_STRING_BUFLEN]; - if (!(net = virNetworkObjFindByUUID(privconn->networks, uuid))) { + if (!(obj = virNetworkObjFindByUUID(privconn->networks, uuid))) { virUUIDFormat(uuid, uuidstr); virReportError(VIR_ERR_NO_NETWORK, _("no network with matching uuid '%s'"), uuidstr); } - return net; + return obj; } @@ -3229,17 +3229,17 @@ testNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) { testDriverPtr privconn = conn->privateData; - virNetworkObjPtr net; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj; + virNetworkPtr net = NULL; - if (!(net = testNetworkObjFindByUUID(privconn, uuid))) + if (!(obj = testNetworkObjFindByUUID(privconn, uuid))) goto cleanup; - ret = virGetNetwork(conn, net->def->name, net->def->uuid); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: - virNetworkObjEndAPI(&net); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -3247,14 +3247,14 @@ static virNetworkObjPtr testNetworkObjFindByName(testDriverPtr privconn, const char *name) { - virNetworkObjPtr net; + virNetworkObjPtr obj; - if (!(net = virNetworkObjFindByName(privconn->networks, name))) + if (!(obj = virNetworkObjFindByName(privconn->networks, name))) virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), name); - return net; + return obj; } @@ -3263,17 +3263,17 @@ testNetworkLookupByName(virConnectPtr conn, const char *name) { testDriverPtr privconn = conn->privateData; - virNetworkObjPtr net; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj; + virNetworkPtr net = NULL; - if (!(net = testNetworkObjFindByName(privconn, name))) + if (!(obj = testNetworkObjFindByName(privconn, name))) goto cleanup; - ret = virGetNetwork(conn, net->def->name, net->def->uuid); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: - virNetworkObjEndAPI(&net); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -3383,31 +3383,31 @@ testNetworkCreateXML(virConnectPtr conn, const char *xml) { testDriverPtr privconn = conn->privateData; virNetworkDefPtr def; - virNetworkObjPtr net = NULL; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj = NULL; + virNetworkPtr net = NULL; virObjectEventPtr event = NULL; if ((def = virNetworkDefParseString(xml)) == NULL) goto cleanup; - if (!(net = virNetworkObjAssignDef(privconn->networks, def, + if (!(obj = virNetworkObjAssignDef(privconn->networks, def, VIR_NETWORK_OBJ_LIST_ADD_LIVE | VIR_NETWORK_OBJ_LIST_ADD_CHECK_LIVE))) goto cleanup; def = NULL; - net->active = 1; + obj->active = 1; - event = virNetworkEventLifecycleNew(net->def->name, net->def->uuid, + event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, VIR_NETWORK_EVENT_STARTED, 0); - ret = virGetNetwork(conn, net->def->name, net->def->uuid); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: virNetworkDefFree(def); testObjectEventQueue(privconn, event); - virNetworkObjEndAPI(&net); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -3417,58 +3417,58 @@ testNetworkDefineXML(virConnectPtr conn, { testDriverPtr privconn = conn->privateData; virNetworkDefPtr def; - virNetworkObjPtr net = NULL; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj = NULL; + virNetworkPtr net = NULL; virObjectEventPtr event = NULL; if ((def = virNetworkDefParseString(xml)) == NULL) goto cleanup; - if (!(net = virNetworkObjAssignDef(privconn->networks, def, 0))) + if (!(obj = virNetworkObjAssignDef(privconn->networks, def, 0))) goto cleanup; def = NULL; - event = virNetworkEventLifecycleNew(net->def->name, net->def->uuid, + event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, VIR_NETWORK_EVENT_DEFINED, 0); - ret = virGetNetwork(conn, net->def->name, net->def->uuid); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: virNetworkDefFree(def); testObjectEventQueue(privconn, event); - virNetworkObjEndAPI(&net); - return ret; + virNetworkObjEndAPI(&obj); + return net; } static int -testNetworkUndefine(virNetworkPtr network) +testNetworkUndefine(virNetworkPtr net) { - testDriverPtr privconn = network->conn->privateData; - virNetworkObjPtr privnet; + testDriverPtr privconn = net->conn->privateData; + virNetworkObjPtr obj; int ret = -1; virObjectEventPtr event = NULL; - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - if (virNetworkObjIsActive(privnet)) { + if (virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("Network '%s' is still running"), network->name); + _("Network '%s' is still running"), net->name); goto cleanup; } - event = virNetworkEventLifecycleNew(network->name, network->uuid, + event = virNetworkEventLifecycleNew(net->name, net->uuid, VIR_NETWORK_EVENT_UNDEFINED, 0); - virNetworkObjRemoveInactive(privconn->networks, privnet); + virNetworkObjRemoveInactive(privconn->networks, obj); ret = 0; cleanup: testObjectEventQueue(privconn, event); - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return ret; } @@ -3482,20 +3482,20 @@ testNetworkUpdate(virNetworkPtr net, unsigned int flags) { testDriverPtr privconn = net->conn->privateData; - virNetworkObjPtr network = NULL; + virNetworkObjPtr obj = NULL; int isActive, ret = -1; virCheckFlags(VIR_NETWORK_UPDATE_AFFECT_LIVE | VIR_NETWORK_UPDATE_AFFECT_CONFIG, -1); - if (!(network = testNetworkObjFindByUUID(privconn, net->uuid))) + if (!(obj = testNetworkObjFindByUUID(privconn, net->uuid))) goto cleanup; /* VIR_NETWORK_UPDATE_AFFECT_CURRENT means "change LIVE if network * is active, else change CONFIG */ - isActive = virNetworkObjIsActive(network); + isActive = virNetworkObjIsActive(obj); if ((flags & (VIR_NETWORK_UPDATE_AFFECT_LIVE | VIR_NETWORK_UPDATE_AFFECT_CONFIG)) == VIR_NETWORK_UPDATE_AFFECT_CURRENT) { @@ -3506,155 +3506,155 @@ testNetworkUpdate(virNetworkPtr net, } /* update the network config in memory/on disk */ - if (virNetworkObjUpdate(network, command, section, parentIndex, xml, flags) < 0) + if (virNetworkObjUpdate(obj, command, section, parentIndex, xml, flags) < 0) goto cleanup; ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } static int -testNetworkCreate(virNetworkPtr network) +testNetworkCreate(virNetworkPtr net) { - testDriverPtr privconn = network->conn->privateData; - virNetworkObjPtr privnet; + testDriverPtr privconn = net->conn->privateData; + virNetworkObjPtr obj; int ret = -1; virObjectEventPtr event = NULL; - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - if (virNetworkObjIsActive(privnet)) { + if (virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("Network '%s' is already running"), network->name); + _("Network '%s' is already running"), net->name); goto cleanup; } - privnet->active = 1; - event = virNetworkEventLifecycleNew(privnet->def->name, privnet->def->uuid, + obj->active = 1; + event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, VIR_NETWORK_EVENT_STARTED, 0); ret = 0; cleanup: testObjectEventQueue(privconn, event); - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return ret; } static int -testNetworkDestroy(virNetworkPtr network) +testNetworkDestroy(virNetworkPtr net) { - testDriverPtr privconn = network->conn->privateData; - virNetworkObjPtr privnet; + testDriverPtr privconn = net->conn->privateData; + virNetworkObjPtr obj; int ret = -1; virObjectEventPtr event = NULL; - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - privnet->active = 0; - event = virNetworkEventLifecycleNew(privnet->def->name, privnet->def->uuid, + obj->active = 0; + event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, VIR_NETWORK_EVENT_STOPPED, 0); - if (!privnet->persistent) - virNetworkObjRemoveInactive(privconn->networks, privnet); + if (!obj->persistent) + virNetworkObjRemoveInactive(privconn->networks, obj); ret = 0; cleanup: testObjectEventQueue(privconn, event); - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return ret; } static char * -testNetworkGetXMLDesc(virNetworkPtr network, +testNetworkGetXMLDesc(virNetworkPtr net, unsigned int flags) { - testDriverPtr privconn = network->conn->privateData; - virNetworkObjPtr privnet; + testDriverPtr privconn = net->conn->privateData; + virNetworkObjPtr obj; char *ret = NULL; virCheckFlags(0, NULL); - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - ret = virNetworkDefFormat(privnet->def, flags); + ret = virNetworkDefFormat(obj->def, flags); cleanup: - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return ret; } static char * -testNetworkGetBridgeName(virNetworkPtr network) +testNetworkGetBridgeName(virNetworkPtr net) { - testDriverPtr privconn = network->conn->privateData; + testDriverPtr privconn = net->conn->privateData; char *bridge = NULL; - virNetworkObjPtr privnet; + virNetworkObjPtr obj; - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - if (!(privnet->def->bridge)) { + if (!(obj->def->bridge)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' does not have a bridge name."), - privnet->def->name); + obj->def->name); goto cleanup; } - ignore_value(VIR_STRDUP(bridge, privnet->def->bridge)); + ignore_value(VIR_STRDUP(bridge, obj->def->bridge)); cleanup: - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return bridge; } static int -testNetworkGetAutostart(virNetworkPtr network, +testNetworkGetAutostart(virNetworkPtr net, int *autostart) { - testDriverPtr privconn = network->conn->privateData; - virNetworkObjPtr privnet; + testDriverPtr privconn = net->conn->privateData; + virNetworkObjPtr obj; int ret = -1; - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - *autostart = privnet->autostart; + *autostart = obj->autostart; ret = 0; cleanup: - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return ret; } static int -testNetworkSetAutostart(virNetworkPtr network, +testNetworkSetAutostart(virNetworkPtr net, int autostart) { - testDriverPtr privconn = network->conn->privateData; - virNetworkObjPtr privnet; + testDriverPtr privconn = net->conn->privateData; + virNetworkObjPtr obj; int ret = -1; - if (!(privnet = testNetworkObjFindByName(privconn, network->name))) + if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - privnet->autostart = autostart ? 1 : 0; + obj->autostart = autostart ? 1 : 0; ret = 0; cleanup: - virNetworkObjEndAPI(&privnet); + virNetworkObjEndAPI(&obj); return ret; } -- 2.9.3

On Fri, May 19, 2017 at 09:03:10AM -0400, John Ferlan wrote:
A virNetworkObjPtr will be an 'obj'.
A virNetworkPtr will be a 'net'.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/test/test_driver.c | 182 ++++++++++++++++++++++++------------------------- 1 file changed, 91 insertions(+), 91 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Modify code to have two spaces between functions, follow function more recent function formatting w/r/t args per line and function return type and name on separate lines. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/network/bridge_driver.c | 228 +++++++++++++++++++++++++++++++++----------- 1 file changed, 174 insertions(+), 54 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 3ba7018..e502bfe 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -91,6 +91,7 @@ VIR_LOG_INIT("network.bridge_driver"); static virNetworkDriverStatePtr network_driver; + static virNetworkDriverStatePtr networkGetDriver(void) { @@ -100,15 +101,21 @@ networkGetDriver(void) return network_driver; } -static void networkDriverLock(virNetworkDriverStatePtr driver) + +static void +networkDriverLock(virNetworkDriverStatePtr driver) { virMutexLock(&driver->lock); } -static void networkDriverUnlock(virNetworkDriverStatePtr driver) + + +static void +networkDriverUnlock(virNetworkDriverStatePtr driver) { virMutexUnlock(&driver->lock); } + static dnsmasqCapsPtr networkGetDnsmasqCaps(virNetworkDriverStatePtr driver) { @@ -119,6 +126,7 @@ networkGetDnsmasqCaps(virNetworkDriverStatePtr driver) return ret; } + static int networkDnsmasqCapsRefresh(virNetworkDriverStatePtr driver) { @@ -134,34 +142,50 @@ networkDnsmasqCapsRefresh(virNetworkDriverStatePtr driver) return 0; } -static int networkStateCleanup(void); -static int networkStartNetwork(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); +static int +networkStateCleanup(void); + +static int +networkStartNetwork(virNetworkDriverStatePtr driver, + virNetworkObjPtr network); + +static int +networkShutdownNetwork(virNetworkDriverStatePtr driver, + virNetworkObjPtr network); + +static int +networkStartNetworkVirtual(virNetworkDriverStatePtr driver, + virNetworkObjPtr network); + +static int +networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, + virNetworkObjPtr network); -static int networkShutdownNetwork(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); +static int +networkStartNetworkExternal(virNetworkObjPtr network); -static int networkStartNetworkVirtual(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); +static int +networkShutdownNetworkExternal(virNetworkObjPtr network); -static int networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); +static void +networkReloadFirewallRules(virNetworkDriverStatePtr driver); -static int networkStartNetworkExternal(virNetworkObjPtr network); +static void +networkRefreshDaemons(virNetworkDriverStatePtr driver); -static int networkShutdownNetworkExternal(virNetworkObjPtr network); +static int +networkPlugBandwidth(virNetworkObjPtr net, + virDomainNetDefPtr iface); -static void networkReloadFirewallRules(virNetworkDriverStatePtr driver); -static void networkRefreshDaemons(virNetworkDriverStatePtr driver); +static int +networkUnplugBandwidth(virNetworkObjPtr net, + virDomainNetDefPtr iface); -static int networkPlugBandwidth(virNetworkObjPtr net, - virDomainNetDefPtr iface); -static int networkUnplugBandwidth(virNetworkObjPtr net, - virDomainNetDefPtr iface); +static void +networkNetworkObjTaint(virNetworkObjPtr net, + virNetworkTaintFlags taint); -static void networkNetworkObjTaint(virNetworkObjPtr net, - virNetworkTaintFlags taint); static virNetworkObjPtr networkObjFromNetwork(virNetworkPtr net) @@ -181,6 +205,7 @@ networkObjFromNetwork(virNetworkPtr net) return network; } + static int networkRunHook(virNetworkObjPtr network, virDomainDefPtr dom, @@ -237,6 +262,7 @@ networkRunHook(virNetworkObjPtr network, return ret; } + static char * networkDnsmasqLeaseFileNameDefault(virNetworkDriverStatePtr driver, const char *netname) @@ -248,6 +274,7 @@ networkDnsmasqLeaseFileNameDefault(virNetworkDriverStatePtr driver, return leasefile; } + static char * networkDnsmasqLeaseFileNameCustom(virNetworkDriverStatePtr driver, const char *bridge) @@ -259,6 +286,7 @@ networkDnsmasqLeaseFileNameCustom(virNetworkDriverStatePtr driver, return leasefile; } + static char * networkDnsmasqConfigFileName(virNetworkDriverStatePtr driver, const char *netname) @@ -270,6 +298,7 @@ networkDnsmasqConfigFileName(virNetworkDriverStatePtr driver, return conffile; } + static char * networkRadvdPidfileBasename(const char *netname) { @@ -280,6 +309,7 @@ networkRadvdPidfileBasename(const char *netname) return pidfilebase; } + static char * networkRadvdConfigFileName(virNetworkDriverStatePtr driver, const char *netname) @@ -291,6 +321,7 @@ networkRadvdConfigFileName(virNetworkDriverStatePtr driver, return configfile; } + static char * networkMacMgrFileName(virNetworkDriverStatePtr driver, const char *bridge) @@ -302,6 +333,7 @@ networkMacMgrFileName(virNetworkDriverStatePtr driver, return filename; } + /* do needed cleanup steps and remove the network from the list */ static int networkRemoveInactive(virNetworkDriverStatePtr driver, @@ -379,6 +411,7 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, return ret; } + static int networkMacMgrAdd(virNetworkDriverStatePtr driver, virNetworkObjPtr network, @@ -409,6 +442,7 @@ networkMacMgrAdd(virNetworkDriverStatePtr driver, return ret; } + static int networkMacMgrDel(virNetworkDriverStatePtr driver, virNetworkObjPtr network, @@ -439,6 +473,7 @@ networkMacMgrDel(virNetworkDriverStatePtr driver, return ret; } + static char * networkBridgeDummyNicName(const char *brname) { @@ -463,6 +498,7 @@ networkBridgeDummyNicName(const char *brname) return nicname; } + static int networkUpdateState(virNetworkObjPtr obj, void *opaque) @@ -563,10 +599,12 @@ networkAutostartConfig(virNetworkObjPtr net, return ret; } + #if HAVE_FIREWALLD static DBusHandlerResult firewalld_dbus_filter_bridge(DBusConnection *connection ATTRIBUTE_UNUSED, - DBusMessage *message, void *user_data) + DBusMessage *message, + void *user_data) { virNetworkDriverStatePtr driver = user_data; @@ -583,6 +621,7 @@ firewalld_dbus_filter_bridge(DBusConnection *connection ATTRIBUTE_UNUSED, } #endif + static int networkMigrateStateFiles(virNetworkDriverStatePtr driver) { @@ -668,6 +707,7 @@ networkMigrateStateFiles(virNetworkDriverStatePtr driver) return ret; } + /** * networkStateInitialize: * @@ -813,6 +853,7 @@ networkStateInitialize(bool privileged, goto cleanup; } + /** * networkStateAutoStart: * @@ -829,6 +870,7 @@ networkStateAutoStart(void) network_driver); } + /** * networkStateReload: * @@ -893,7 +935,9 @@ networkStateCleanup(void) * kill the specified pid/name, and wait a bit to make sure it's dead. */ static int -networkKillDaemon(pid_t pid, const char *daemonName, const char *networkName) +networkKillDaemon(pid_t pid, + const char *daemonName, + const char *networkName) { size_t i; int ret = -1; @@ -948,10 +992,10 @@ networkKillDaemon(pid_t pid, const char *daemonName, const char *networkName) return ret; } + /* the following does not build a file, it builds a list * which is later saved into a file */ - static int networkBuildDnsmasqDhcpHostsList(dnsmasqContext *dctx, virNetworkIPDefPtr ipdef) @@ -972,6 +1016,7 @@ networkBuildDnsmasqDhcpHostsList(dnsmasqContext *dctx, return 0; } + static int networkBuildDnsmasqHostsList(dnsmasqContext *dctx, virNetworkDNSDefPtr dnsdef) @@ -1489,6 +1534,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, return ret; } + /* build the dnsmasq command line */ static int ATTRIBUTE_NONNULL(3) networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, @@ -1547,6 +1593,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, return ret; } + static int networkStartDhcpDaemon(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -1637,6 +1684,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, return ret; } + /* networkRefreshDhcpDaemon: * Update dnsmasq config files, then send a SIGHUP so that it rereads * them. This only works for the dhcp-hostsfile and the @@ -1705,6 +1753,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, return ret; } + /* networkRestartDhcpDaemon: * * kill and restart dnsmasq, in order to update any config that is on @@ -1726,6 +1775,7 @@ networkRestartDhcpDaemon(virNetworkDriverStatePtr driver, return networkStartDhcpDaemon(driver, network); } + static char radvd1[] = " AdvOtherConfigFlag off;\n\n"; static char radvd2[] = " AdvAutonomous off;\n"; static char radvd3[] = " AdvOnLink on;\n" @@ -1733,7 +1783,8 @@ static char radvd3[] = " AdvOnLink on;\n" " AdvRouterAddr off;\n"; static int -networkRadvdConfContents(virNetworkObjPtr network, char **configstr) +networkRadvdConfContents(virNetworkObjPtr network, + char **configstr) { virBuffer configbuf = VIR_BUFFER_INITIALIZER; int ret = -1; @@ -1810,6 +1861,7 @@ networkRadvdConfContents(virNetworkObjPtr network, char **configstr) return ret; } + /* write file and return its name (which must be freed by caller) */ static int networkRadvdConfWrite(virNetworkDriverStatePtr driver, @@ -1851,6 +1903,7 @@ networkRadvdConfWrite(virNetworkDriverStatePtr driver, return ret; } + static int networkStartRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -1939,6 +1992,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, return ret; } + static int networkRefreshRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -1979,6 +2033,7 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, return kill(network->radvdPid, SIGHUP); } + #if 0 /* currently unused, so it causes a build error unless we #if it out */ static int @@ -2006,6 +2061,7 @@ networkRestartRadvd(virNetworkObjPtr network) } #endif /* #if 0 */ + static int networkRefreshDaemonsHelper(virNetworkObjPtr net, void *opaque) @@ -2031,6 +2087,7 @@ networkRefreshDaemonsHelper(virNetworkObjPtr net, return 0; } + /* SIGHUP/restart any dnsmasq or radvd daemons. * This should be called when libvirtd is restarted. */ @@ -2043,6 +2100,7 @@ networkRefreshDaemons(virNetworkDriverStatePtr driver) driver); } + static int networkReloadFirewallRulesHelper(virNetworkObjPtr net, void *opaque ATTRIBUTE_UNUSED) @@ -2067,6 +2125,7 @@ networkReloadFirewallRulesHelper(virNetworkObjPtr net, return 0; } + static void networkReloadFirewallRules(virNetworkDriverStatePtr driver) { @@ -2076,9 +2135,11 @@ networkReloadFirewallRules(virNetworkDriverStatePtr driver) NULL); } + /* Enable IP Forwarding. Return 0 for success, -1 for failure. */ static int -networkEnableIPForwarding(bool enableIPv4, bool enableIPv6) +networkEnableIPForwarding(bool enableIPv4, + bool enableIPv6) { int ret = 0; #ifdef HAVE_SYSCTLBYNAME @@ -2099,6 +2160,7 @@ networkEnableIPForwarding(bool enableIPv4, bool enableIPv6) return ret; } + static int networkSetIPv6Sysctls(virNetworkObjPtr network) { @@ -2167,6 +2229,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr network) return ret; } + /* add an IP address to a bridge */ static int networkAddAddrToBridge(virNetworkObjPtr network, @@ -2262,6 +2325,7 @@ networkWaitDadFinish(virNetworkObjPtr network) return ret; } + static int networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -2479,6 +2543,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, return -1; } + static int networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -2543,6 +2608,7 @@ networkStartNetworkBridge(virNetworkObjPtr network) return networkStartHandleMACTableManagerMode(network, NULL); } + static int networkShutdownNetworkBridge(virNetworkObjPtr network ATTRIBUTE_UNUSED) { @@ -2673,7 +2739,9 @@ networkStartNetworkExternal(virNetworkObjPtr network) return networkCreateInterfacePool(network->def); } -static int networkShutdownNetworkExternal(virNetworkObjPtr network ATTRIBUTE_UNUSED) + +static int +networkShutdownNetworkExternal(virNetworkObjPtr network ATTRIBUTE_UNUSED) { /* put anything here that needs to be done each time a network of * type BRIDGE, PRIVATE, VEPA, HOSTDEV or PASSTHROUGH is shutdown. On @@ -2683,6 +2751,7 @@ static int networkShutdownNetworkExternal(virNetworkObjPtr network ATTRIBUTE_UNU return 0; } + static int networkStartNetwork(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -2771,6 +2840,7 @@ networkStartNetwork(virNetworkDriverStatePtr driver, return ret; } + static int networkShutdownNetwork(virNetworkDriverStatePtr driver, virNetworkObjPtr network) @@ -2829,8 +2899,9 @@ networkShutdownNetwork(virNetworkDriverStatePtr driver, } -static virNetworkPtr networkLookupByUUID(virConnectPtr conn, - const unsigned char *uuid) +static virNetworkPtr +networkLookupByUUID(virConnectPtr conn, + const unsigned char *uuid) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr network; @@ -2856,8 +2927,10 @@ static virNetworkPtr networkLookupByUUID(virConnectPtr conn, return ret; } -static virNetworkPtr networkLookupByName(virConnectPtr conn, - const char *name) + +static virNetworkPtr +networkLookupByName(virConnectPtr conn, + const char *name) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr network; @@ -2880,7 +2953,9 @@ static virNetworkPtr networkLookupByName(virConnectPtr conn, return ret; } -static int networkConnectNumOfNetworks(virConnectPtr conn) + +static int +networkConnectNumOfNetworks(virConnectPtr conn) { virNetworkDriverStatePtr driver = networkGetDriver(); int nactive; @@ -2896,9 +2971,11 @@ static int networkConnectNumOfNetworks(virConnectPtr conn) return nactive; } -static int networkConnectListNetworks(virConnectPtr conn, - char **const names, - int nnames) + +static int +networkConnectListNetworks(virConnectPtr conn, + char **const names, + int nnames) { virNetworkDriverStatePtr driver = networkGetDriver(); int got = 0; @@ -2914,7 +2991,9 @@ static int networkConnectListNetworks(virConnectPtr conn, return got; } -static int networkConnectNumOfDefinedNetworks(virConnectPtr conn) + +static int +networkConnectNumOfDefinedNetworks(virConnectPtr conn) { virNetworkDriverStatePtr driver = networkGetDriver(); int ninactive = 0; @@ -2930,7 +3009,11 @@ static int networkConnectNumOfDefinedNetworks(virConnectPtr conn) return ninactive; } -static int networkConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames) + +static int +networkConnectListDefinedNetworks(virConnectPtr conn, + char **const names, + int nnames) { virNetworkDriverStatePtr driver = networkGetDriver(); int got = 0; @@ -2945,6 +3028,7 @@ static int networkConnectListDefinedNetworks(virConnectPtr conn, char **const na return got; } + static int networkConnectListAllNetworks(virConnectPtr conn, virNetworkPtr **nets, @@ -2966,6 +3050,7 @@ networkConnectListAllNetworks(virConnectPtr conn, return ret; } + static int networkConnectNetworkEventRegisterAny(virConnectPtr conn, virNetworkPtr net, @@ -2989,6 +3074,7 @@ networkConnectNetworkEventRegisterAny(virConnectPtr conn, return ret; } + static int networkConnectNetworkEventDeregisterAny(virConnectPtr conn, int callbackID) @@ -3010,7 +3096,9 @@ networkConnectNetworkEventDeregisterAny(virConnectPtr conn, return ret; } -static int networkIsActive(virNetworkPtr net) + +static int +networkIsActive(virNetworkPtr net) { virNetworkObjPtr obj; int ret = -1; @@ -3028,7 +3116,9 @@ static int networkIsActive(virNetworkPtr net) return ret; } -static int networkIsPersistent(virNetworkPtr net) + +static int +networkIsPersistent(virNetworkPtr net) { virNetworkObjPtr obj; int ret = -1; @@ -3097,7 +3187,6 @@ networkFindUnusedBridgeName(virNetworkObjListPtr nets, } - /* * networkValidateBridgeName() - if no bridge name is set, or if the * bridge name contains a %d (indicating that this is a template for @@ -3408,7 +3497,10 @@ networkValidate(virNetworkDriverStatePtr driver, return 0; } -static virNetworkPtr networkCreateXML(virConnectPtr conn, const char *xml) + +static virNetworkPtr +networkCreateXML(virConnectPtr conn, + const char *xml) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkDefPtr def; @@ -3456,7 +3548,10 @@ static virNetworkPtr networkCreateXML(virConnectPtr conn, const char *xml) return ret; } -static virNetworkPtr networkDefineXML(virConnectPtr conn, const char *xml) + +static virNetworkPtr +networkDefineXML(virConnectPtr conn, + const char *xml) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkDefPtr def = NULL; @@ -3509,6 +3604,7 @@ static virNetworkPtr networkDefineXML(virConnectPtr conn, const char *xml) return ret; } + static int networkUndefine(virNetworkPtr net) { @@ -3565,6 +3661,7 @@ networkUndefine(virNetworkPtr net) return ret; } + static int networkUpdate(virNetworkPtr net, unsigned int command, @@ -3739,7 +3836,9 @@ networkUpdate(virNetworkPtr net, return ret; } -static int networkCreate(virNetworkPtr net) + +static int +networkCreate(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr network; @@ -3767,7 +3866,9 @@ static int networkCreate(virNetworkPtr net) return ret; } -static int networkDestroy(virNetworkPtr net) + +static int +networkDestroy(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr network; @@ -3808,8 +3909,10 @@ static int networkDestroy(virNetworkPtr net) return ret; } -static char *networkGetXMLDesc(virNetworkPtr net, - unsigned int flags) + +static char * +networkGetXMLDesc(virNetworkPtr net, + unsigned int flags) { virNetworkObjPtr network; virNetworkDefPtr def; @@ -3835,7 +3938,10 @@ static char *networkGetXMLDesc(virNetworkPtr net, return ret; } -static char *networkGetBridgeName(virNetworkPtr net) { + +static char * +networkGetBridgeName(virNetworkPtr net) +{ virNetworkObjPtr network; char *bridge = NULL; @@ -3859,8 +3965,10 @@ static char *networkGetBridgeName(virNetworkPtr net) { return bridge; } -static int networkGetAutostart(virNetworkPtr net, - int *autostart) + +static int +networkGetAutostart(virNetworkPtr net, + int *autostart) { virNetworkObjPtr network; int ret = -1; @@ -3879,8 +3987,10 @@ static int networkGetAutostart(virNetworkPtr net, return ret; } -static int networkSetAutostart(virNetworkPtr net, - int autostart) + +static int +networkSetAutostart(virNetworkPtr net, + int autostart) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr network; @@ -3942,6 +4052,7 @@ static int networkSetAutostart(virNetworkPtr net, return ret; } + static int networkGetDHCPLeases(virNetworkPtr network, const char *mac, @@ -4165,7 +4276,8 @@ static virStateDriver networkStateDriver = { .stateReload = networkStateReload, }; -int networkRegister(void) +int +networkRegister(void) { if (virSetSharedNetworkDriver(&networkDriver) < 0) return -1; @@ -4174,6 +4286,7 @@ int networkRegister(void) return 0; } + /********************************************************/ /* A unified function to log network connections and disconnections */ @@ -4211,6 +4324,7 @@ networkLogAllocation(virNetworkDefPtr netdef, } } + /* Private API to deal with logical switch capabilities. * These functions are exported so that other parts of libvirt can * call them, but are not part of the public API and not in the @@ -4639,6 +4753,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, goto cleanup; } + /* networkNotifyActualDevice: * @dom: domain definition that @iface belongs to * @iface: the domain's NetDef with an "actual" device already filled in. @@ -4857,7 +4972,6 @@ networkNotifyActualDevice(virDomainDefPtr dom, } - /* networkReleaseActualDevice: * @dom: domain definition that @iface belongs to * @iface: a domain's NetDef (interface definition) @@ -5001,6 +5115,7 @@ networkReleaseActualDevice(virDomainDefPtr dom, goto cleanup; } + /* * networkGetNetworkAddress: * @netname: the name of a network @@ -5021,7 +5136,8 @@ networkReleaseActualDevice(virDomainDefPtr dom, * completely unsupported. */ int -networkGetNetworkAddress(const char *netname, char **netaddr) +networkGetNetworkAddress(const char *netname, + char **netaddr) { virNetworkDriverStatePtr driver = networkGetDriver(); int ret = -1; @@ -5098,6 +5214,7 @@ networkGetNetworkAddress(const char *netname, char **netaddr) return ret; } + /* networkGetActualType: * @dom: domain definition that @iface belongs to * @iface: the original NetDef from the domain @@ -5260,6 +5377,7 @@ networkCheckBandwidth(virNetworkObjPtr net, return ret; } + /** * networkNextClassID: * @net: network object @@ -5374,6 +5492,7 @@ networkPlugBandwidth(virNetworkObjPtr net, return ret; } + static int networkUnplugBandwidth(virNetworkObjPtr net, virDomainNetDefPtr iface) @@ -5426,6 +5545,7 @@ networkUnplugBandwidth(virNetworkObjPtr net, return ret; } + static void networkNetworkObjTaint(virNetworkObjPtr net, virNetworkTaintFlags taint) -- 2.9.3

On Fri, May 19, 2017 at 09:03:11AM -0400, John Ferlan wrote:
Modify code to have two spaces between functions, follow function more recent function formatting w/r/t args per line and function return type and name on separate lines.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/network/bridge_driver.c | 228 +++++++++++++++++++++++++++++++++----------- 1 file changed, 174 insertions(+), 54 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Use @obj for a virNetworkObjPtr Use @net for a virNetworkPtr Clean up the bridge_driver.h Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/network/bridge_driver.c | 966 ++++++++++++++++++++++---------------------- src/network/bridge_driver.h | 50 ++- 2 files changed, 511 insertions(+), 505 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index e502bfe..d888391 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -148,25 +148,25 @@ networkStateCleanup(void); static int networkStartNetwork(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); + virNetworkObjPtr obj); static int networkShutdownNetwork(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); + virNetworkObjPtr obj); static int networkStartNetworkVirtual(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); + virNetworkObjPtr obj); static int networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, - virNetworkObjPtr network); + virNetworkObjPtr obj); static int -networkStartNetworkExternal(virNetworkObjPtr network); +networkStartNetworkExternal(virNetworkObjPtr obj); static int -networkShutdownNetworkExternal(virNetworkObjPtr network); +networkShutdownNetworkExternal(virNetworkObjPtr obj); static void networkReloadFirewallRules(virNetworkDriverStatePtr driver); @@ -175,15 +175,15 @@ static void networkRefreshDaemons(virNetworkDriverStatePtr driver); static int -networkPlugBandwidth(virNetworkObjPtr net, +networkPlugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface); static int -networkUnplugBandwidth(virNetworkObjPtr net, +networkUnplugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface); static void -networkNetworkObjTaint(virNetworkObjPtr net, +networkNetworkObjTaint(virNetworkObjPtr obj, virNetworkTaintFlags taint); @@ -191,23 +191,23 @@ static virNetworkObjPtr networkObjFromNetwork(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; + virNetworkObjPtr obj; char uuidstr[VIR_UUID_STRING_BUFLEN]; - network = virNetworkObjFindByUUID(driver->networks, net->uuid); - if (!network) { + obj = virNetworkObjFindByUUID(driver->networks, net->uuid); + if (!obj) { virUUIDFormat(net->uuid, uuidstr); virReportError(VIR_ERR_NO_NETWORK, _("no network with matching uuid '%s' (%s)"), uuidstr, net->name); } - return network; + return obj; } static int -networkRunHook(virNetworkObjPtr network, +networkRunHook(virNetworkObjPtr obj, virDomainDefPtr dom, virDomainNetDefPtr iface, int op, @@ -219,8 +219,8 @@ networkRunHook(virNetworkObjPtr network, int ret = -1; if (virHookPresent(VIR_HOOK_DRIVER_NETWORK)) { - if (!network) { - VIR_DEBUG("Not running hook as @network is NULL"); + if (!obj) { + VIR_DEBUG("Not running hook as @obj is NULL"); ret = 0; goto cleanup; } @@ -229,7 +229,7 @@ networkRunHook(virNetworkObjPtr network, virBufferAdjustIndent(&buf, 2); if (iface && virDomainNetDefFormat(&buf, iface, NULL, 0) < 0) goto cleanup; - if (virNetworkDefFormatBuf(&buf, network->def, 0) < 0) + if (virNetworkDefFormatBuf(&buf, obj->def, 0) < 0) goto cleanup; if (dom && virDomainDefFormatInternal(dom, NULL, 0, &buf) < 0) goto cleanup; @@ -241,7 +241,7 @@ networkRunHook(virNetworkObjPtr network, goto cleanup; xml = virBufferContentAndReset(&buf); - hookret = virHookCall(VIR_HOOK_DRIVER_NETWORK, network->def->name, + hookret = virHookCall(VIR_HOOK_DRIVER_NETWORK, obj->def->name, op, sub_op, NULL, xml, NULL); /* @@ -250,7 +250,7 @@ networkRunHook(virNetworkObjPtr network, if (hookret < 0) goto cleanup; - networkNetworkObjTaint(network, VIR_NETWORK_TAINT_HOOK); + networkNetworkObjTaint(obj, VIR_NETWORK_TAINT_HOOK); } ret = 0; @@ -337,7 +337,7 @@ networkMacMgrFileName(virNetworkDriverStatePtr driver, /* do needed cleanup steps and remove the network from the list */ static int networkRemoveInactive(virNetworkDriverStatePtr driver, - virNetworkObjPtr net) + virNetworkObjPtr obj) { char *leasefile = NULL; char *customleasefile = NULL; @@ -347,7 +347,7 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, char *statusfile = NULL; char *macMapFile = NULL; dnsmasqContext *dctx = NULL; - virNetworkDefPtr def = virNetworkObjGetPersistentDef(net); + virNetworkDefPtr def = virNetworkObjGetPersistentDef(obj); int ret = -1; @@ -395,7 +395,7 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, unlink(statusfile); /* remove the network definition */ - virNetworkObjRemoveInactive(driver->networks, net); + virNetworkObjRemoveInactive(driver->networks, obj); ret = 0; @@ -414,7 +414,7 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, static int networkMacMgrAdd(virNetworkDriverStatePtr driver, - virNetworkObjPtr network, + virNetworkObjPtr obj, const char *domain, const virMacAddr *mac) { @@ -422,18 +422,18 @@ networkMacMgrAdd(virNetworkDriverStatePtr driver, char *file = NULL; int ret = -1; - if (!network->macmap) + if (!obj->macmap) return 0; virMacAddrFormat(mac, macStr); - if (!(file = networkMacMgrFileName(driver, network->def->bridge))) + if (!(file = networkMacMgrFileName(driver, obj->def->bridge))) goto cleanup; - if (virMacMapAdd(network->macmap, domain, macStr) < 0) + if (virMacMapAdd(obj->macmap, domain, macStr) < 0) goto cleanup; - if (virMacMapWriteFile(network->macmap, file) < 0) + if (virMacMapWriteFile(obj->macmap, file) < 0) goto cleanup; ret = 0; @@ -445,7 +445,7 @@ networkMacMgrAdd(virNetworkDriverStatePtr driver, static int networkMacMgrDel(virNetworkDriverStatePtr driver, - virNetworkObjPtr network, + virNetworkObjPtr obj, const char *domain, const virMacAddr *mac) { @@ -453,18 +453,18 @@ networkMacMgrDel(virNetworkDriverStatePtr driver, char *file = NULL; int ret = -1; - if (!network->macmap) + if (!obj->macmap) return 0; virMacAddrFormat(mac, macStr); - if (!(file = networkMacMgrFileName(driver, network->def->bridge))) + if (!(file = networkMacMgrFileName(driver, obj->def->bridge))) goto cleanup; - if (virMacMapRemove(network->macmap, domain, macStr) < 0) + if (virMacMapRemove(obj->macmap, domain, macStr) < 0) goto cleanup; - if (virMacMapWriteFile(network->macmap, file) < 0) + if (virMacMapWriteFile(obj->macmap, file) < 0) goto cleanup; ret = 0; @@ -581,21 +581,21 @@ networkUpdateState(virNetworkObjPtr obj, static int -networkAutostartConfig(virNetworkObjPtr net, +networkAutostartConfig(virNetworkObjPtr obj, void *opaque) { virNetworkDriverStatePtr driver = opaque; int ret = -1; - virObjectLock(net); - if (net->autostart && - !virNetworkObjIsActive(net) && - networkStartNetwork(driver, net) < 0) + virObjectLock(obj); + if (obj->autostart && + !virNetworkObjIsActive(obj) && + networkStartNetwork(driver, obj) < 0) goto cleanup; ret = 0; cleanup: - virObjectUnlock(net); + virObjectUnlock(obj); return ret; } @@ -1076,7 +1076,7 @@ networkDnsmasqConfLocalPTRs(virBufferPtr buf, int -networkDnsmasqConfContents(virNetworkObjPtr network, +networkDnsmasqConfContents(virNetworkObjPtr obj, const char *pidfile, char **configstr, dnsmasqContext *dctx, @@ -1086,7 +1086,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, int r, ret = -1; int nbleases = 0; size_t i; - virNetworkDNSDefPtr dns = &network->def->dns; + virNetworkDNSDefPtr dns = &obj->def->dns; bool wantDNS = dns->enable != VIR_TRISTATE_BOOL_NO; virNetworkIPDefPtr tmpipdef, ipdef, ipv4def, ipv6def; bool ipv6SLAAC; @@ -1120,7 +1120,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, "## or other application using the libvirt API.\n" "##\n## dnsmasq conf file created by libvirt\n" "strict-order\n", - network->def->name); + obj->def->name); /* if dns is disabled, set its listening port to 0, which * tells dnsmasq to not listen @@ -1128,7 +1128,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, if (!wantDNS) virBufferAddLit(&configbuf, "port=0\n"); - if (wantDNS && network->def->dns.forwarders) { + if (wantDNS && obj->def->dns.forwarders) { /* addNoResolv should be set to true if there are any entries * that specify an IP address for requests, but no domain * qualifier (implying that all requests otherwise "unclaimed" @@ -1138,8 +1138,8 @@ networkDnsmasqConfContents(virNetworkObjPtr network, */ bool addNoResolv = false; - for (i = 0; i < network->def->dns.nfwds; i++) { - virNetworkDNSForwarderPtr fwd = &network->def->dns.forwarders[i]; + for (i = 0; i < obj->def->dns.nfwds; i++) { + virNetworkDNSForwarderPtr fwd = &obj->def->dns.forwarders[i]; virBufferAddLit(&configbuf, "server="); if (fwd->domain) @@ -1162,23 +1162,23 @@ networkDnsmasqConfContents(virNetworkObjPtr network, virBufferAddLit(&configbuf, "no-resolv\n"); } - if (network->def->domain) { - if (network->def->domainLocalOnly == VIR_TRISTATE_BOOL_YES) { + if (obj->def->domain) { + if (obj->def->domainLocalOnly == VIR_TRISTATE_BOOL_YES) { virBufferAsprintf(&configbuf, "local=/%s/\n", - network->def->domain); + obj->def->domain); } virBufferAsprintf(&configbuf, "domain=%s\n" "expand-hosts\n", - network->def->domain); + obj->def->domain); } if (wantDNS && - networkDnsmasqConfLocalPTRs(&configbuf, network->def) < 0) + networkDnsmasqConfLocalPTRs(&configbuf, obj->def) < 0) goto cleanup; - if (wantDNS && network->def->dns.forwardPlainNames == VIR_TRISTATE_BOOL_NO) { + if (wantDNS && obj->def->dns.forwardPlainNames == VIR_TRISTATE_BOOL_NO) { virBufferAddLit(&configbuf, "domain-needed\n"); /* need to specify local=// whether or not a domain is * specified, unless the config says we should forward "plain" @@ -1209,19 +1209,19 @@ networkDnsmasqConfContents(virNetworkObjPtr network, virBufferAsprintf(&configbuf, "bind-dynamic\n" "interface=%s\n", - network->def->bridge); + obj->def->bridge); } else { virBufferAddLit(&configbuf, "bind-interfaces\n"); /* * --interface does not actually work with dnsmasq < 2.47, * due to DAD for ipv6 addresses on the interface. * - * virCommandAddArgList(cmd, "--interface", network->def->bridge, NULL); + * virCommandAddArgList(cmd, "--interface", obj->def->bridge, NULL); * * So listen on all defined IPv[46] addresses */ for (i = 0; - (tmpipdef = virNetworkDefGetIPByIndex(network->def, AF_UNSPEC, i)); + (tmpipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i)); i++) { char *ipaddr = virSocketAddrFormat(&tmpipdef->address); @@ -1267,7 +1267,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, * via the sender's link-local address. The only thing we can do * is set the lifetime of this route to 0, i.e. disable it. */ - if (network->def->forward.type == VIR_NETWORK_FORWARD_NONE) { + if (obj->def->forward.type == VIR_NETWORK_FORWARD_NONE) { virBufferAddLit(&configbuf, "dhcp-option=3\n" "no-resolv\n"); if (dnsmasqCapsGet(caps, DNSMASQ_CAPS_RA_PARAM)) { @@ -1291,14 +1291,14 @@ networkDnsmasqConfContents(virNetworkObjPtr network, virReportError(VIR_ERR_INTERNAL_ERROR, _("Missing required 'service' " "attribute in SRV record of network '%s'"), - network->def->name); + obj->def->name); goto cleanup; } if (!dns->srvs[i].protocol) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Missing required 'service' " "attribute in SRV record of network '%s'"), - network->def->name); + obj->def->name); goto cleanup; } /* RFC2782 requires that service and protocol be preceded by @@ -1340,7 +1340,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, /* Find the first dhcp for both IPv4 and IPv6 */ for (i = 0, ipv4def = NULL, ipv6def = NULL, ipv6SLAAC = false; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_UNSPEC, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i)); i++) { if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) { if (ipdef->nranges || ipdef->nhosts) { @@ -1402,7 +1402,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, if (prefix < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("bridge '%s' has an invalid prefix"), - network->def->bridge); + obj->def->bridge); goto cleanup; } for (r = 0; r < ipdef->nranges; r++) { @@ -1508,7 +1508,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, virBufferAddLit(&configbuf, "enable-ra\n"); } else { for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET6, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); i++) { if (!(ipdef->nranges || ipdef->nhosts)) { char *bridgeaddr = virSocketAddrFormat(&ipdef->address); @@ -1538,7 +1538,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, /* build the dnsmasq command line */ static int ATTRIBUTE_NONNULL(3) networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, - virNetworkObjPtr network, + virNetworkObjPtr obj, virCommandPtr *cmdout, char *pidfile, dnsmasqContext *dctx) @@ -1550,16 +1550,16 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, char *configstr = NULL; char *leaseshelper_path = NULL; - network->dnsmasqPid = -1; + obj->dnsmasqPid = -1; - if (networkDnsmasqConfContents(network, pidfile, &configstr, + if (networkDnsmasqConfContents(obj, pidfile, &configstr, dctx, dnsmasq_caps) < 0) goto cleanup; if (!configstr) goto cleanup; /* construct the filename */ - if (!(configfile = networkDnsmasqConfigFileName(driver, network->def->name))) + if (!(configfile = networkDnsmasqConfigFileName(driver, obj->def->name))) goto cleanup; /* Write the file */ @@ -1581,7 +1581,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, /* Libvirt gains full control of leases database */ virCommandAddArgFormat(cmd, "--leasefile-ro"); virCommandAddArgFormat(cmd, "--dhcp-script=%s", leaseshelper_path); - virCommandAddEnvPair(cmd, "VIR_BRIDGE_NAME", network->def->bridge); + virCommandAddEnvPair(cmd, "VIR_BRIDGE_NAME", obj->def->bridge); *cmdout = cmd; ret = 0; @@ -1596,7 +1596,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, static int networkStartDhcpDaemon(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { virNetworkIPDefPtr ipdef; size_t i; @@ -1608,7 +1608,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, /* see if there are any IP addresses that need a dhcp server */ i = 0; - while ((ipdef = virNetworkDefGetIPByIndex(network->def, AF_UNSPEC, i))) { + while ((ipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i))) { i++; if (ipdef->nranges || ipdef->nhosts) needDnsmasq = true; @@ -1620,7 +1620,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, goto cleanup; } - if (!needDnsmasq && network->def->dns.enable == VIR_TRISTATE_BOOL_NO) { + if (!needDnsmasq && obj->def->dns.enable == VIR_TRISTATE_BOOL_NO) { /* no DHCP services needed, and user disabled DNS service */ ret = 0; goto cleanup; @@ -1634,7 +1634,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, } if (!(pidfile = virPidFileBuildPath(driver->pidDir, - network->def->name))) + obj->def->name))) goto cleanup; if (virFileMakePath(driver->dnsmasqStateDir) < 0) { @@ -1644,14 +1644,14 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, goto cleanup; } - dctx = dnsmasqContextNew(network->def->name, driver->dnsmasqStateDir); + dctx = dnsmasqContextNew(obj->def->name, driver->dnsmasqStateDir); if (dctx == NULL) goto cleanup; if (networkDnsmasqCapsRefresh(driver) < 0) goto cleanup; - ret = networkBuildDhcpDaemonCommandLine(driver, network, &cmd, pidfile, dctx); + ret = networkBuildDhcpDaemonCommandLine(driver, obj, &cmd, pidfile, dctx); if (ret < 0) goto cleanup; @@ -1671,8 +1671,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, * pid */ - ret = virPidFileRead(driver->pidDir, network->def->name, - &network->dnsmasqPid); + ret = virPidFileRead(driver->pidDir, obj->def->name, &obj->dnsmasqPid); if (ret < 0) goto cleanup; @@ -1694,7 +1693,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, */ static int networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { int ret = -1; size_t i; @@ -1702,15 +1701,15 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, dnsmasqContext *dctx = NULL; /* if no IP addresses specified, nothing to do */ - if (!virNetworkDefGetIPByIndex(network->def, AF_UNSPEC, 0)) + if (!virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, 0)) return 0; /* if there's no running dnsmasq, just start it */ - if (network->dnsmasqPid <= 0 || (kill(network->dnsmasqPid, 0) < 0)) - return networkStartDhcpDaemon(driver, network); + if (obj->dnsmasqPid <= 0 || (kill(obj->dnsmasqPid, 0) < 0)) + return networkStartDhcpDaemon(driver, obj); - VIR_INFO("Refreshing dnsmasq for network %s", network->def->bridge); - if (!(dctx = dnsmasqContextNew(network->def->name, + VIR_INFO("Refreshing dnsmasq for network %s", obj->def->bridge); + if (!(dctx = dnsmasqContextNew(obj->def->name, driver->dnsmasqStateDir))) { goto cleanup; } @@ -1721,7 +1720,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, */ ipv4def = NULL; for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET, i)); i++) { if (!ipv4def && (ipdef->nranges || ipdef->nhosts)) ipv4def = ipdef; @@ -1729,7 +1728,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, ipv6def = NULL; for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET6, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); i++) { if (!ipv6def && (ipdef->nranges || ipdef->nhosts)) ipv6def = ipdef; @@ -1741,13 +1740,13 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, if (ipv6def && (networkBuildDnsmasqDhcpHostsList(dctx, ipv6def) < 0)) goto cleanup; - if (networkBuildDnsmasqHostsList(dctx, &network->def->dns) < 0) + if (networkBuildDnsmasqHostsList(dctx, &obj->def->dns) < 0) goto cleanup; if ((ret = dnsmasqSave(dctx)) < 0) goto cleanup; - ret = kill(network->dnsmasqPid, SIGHUP); + ret = kill(obj->dnsmasqPid, SIGHUP); cleanup: dnsmasqContextFree(dctx); return ret; @@ -1763,16 +1762,15 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, */ static int networkRestartDhcpDaemon(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { /* if there is a running dnsmasq, kill it */ - if (network->dnsmasqPid > 0) { - networkKillDaemon(network->dnsmasqPid, "dnsmasq", - network->def->name); - network->dnsmasqPid = -1; + if (obj->dnsmasqPid > 0) { + networkKillDaemon(obj->dnsmasqPid, "dnsmasq", obj->def->name); + obj->dnsmasqPid = -1; } /* now start dnsmasq if it should be started */ - return networkStartDhcpDaemon(driver, network); + return networkStartDhcpDaemon(driver, obj); } @@ -1783,7 +1781,7 @@ static char radvd3[] = " AdvOnLink on;\n" " AdvRouterAddr off;\n"; static int -networkRadvdConfContents(virNetworkObjPtr network, +networkRadvdConfContents(virNetworkObjPtr obj, char **configstr) { virBuffer configbuf = VIR_BUFFER_INITIALIZER; @@ -1796,7 +1794,7 @@ networkRadvdConfContents(virNetworkObjPtr network, /* Check if DHCPv6 is needed */ for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET6, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); i++) { v6present = true; if (ipdef->nranges || ipdef->nhosts) { @@ -1820,13 +1818,13 @@ networkRadvdConfContents(virNetworkObjPtr network, " IgnoreIfMissing on;\n" " AdvManagedFlag %s;\n" "%s", - network->def->bridge, + obj->def->bridge, dhcp6 ? "on" : "off", dhcp6 ? "\n" : radvd1); /* add a section for each IPv6 address in the config */ for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET6, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); i++) { int prefix; char *netaddr; @@ -1835,7 +1833,7 @@ networkRadvdConfContents(virNetworkObjPtr network, if (prefix < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("bridge '%s' has an invalid prefix"), - network->def->bridge); + obj->def->bridge); goto cleanup; } if (!(netaddr = virSocketAddrFormat(&ipdef->address))) @@ -1865,7 +1863,7 @@ networkRadvdConfContents(virNetworkObjPtr network, /* write file and return its name (which must be freed by caller) */ static int networkRadvdConfWrite(virNetworkDriverStatePtr driver, - virNetworkObjPtr network, + virNetworkObjPtr obj, char **configFile) { int ret = -1; @@ -1877,7 +1875,7 @@ networkRadvdConfWrite(virNetworkDriverStatePtr driver, *configFile = NULL; - if (networkRadvdConfContents(network, &configStr) < 0) + if (networkRadvdConfContents(obj, &configStr) < 0) goto cleanup; if (!configStr) { @@ -1886,7 +1884,7 @@ networkRadvdConfWrite(virNetworkDriverStatePtr driver, } /* construct the filename */ - if (!(*configFile = networkRadvdConfigFileName(driver, network->def->name))) + if (!(*configFile = networkRadvdConfigFileName(driver, obj->def->name))) goto cleanup; /* write the file */ if (virFileWriteStr(*configFile, configStr, 0600) < 0) { @@ -1906,7 +1904,7 @@ networkRadvdConfWrite(virNetworkDriverStatePtr driver, static int networkStartRadvd(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); char *pidfile = NULL; @@ -1915,7 +1913,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, virCommandPtr cmd = NULL; int ret = -1; - network->radvdPid = -1; + obj->radvdPid = -1; /* Is dnsmasq handling RA? */ if (DNSMASQ_RA_SUPPORT(dnsmasq_caps)) { @@ -1923,7 +1921,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, goto cleanup; } - if (!virNetworkDefGetIPByIndex(network->def, AF_INET6, 0)) { + if (!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0)) { /* no IPv6 addresses, so we don't need to run radvd */ ret = 0; goto cleanup; @@ -1951,12 +1949,12 @@ networkStartRadvd(virNetworkDriverStatePtr driver, } /* construct pidfile name */ - if (!(radvdpidbase = networkRadvdPidfileBasename(network->def->name))) + if (!(radvdpidbase = networkRadvdPidfileBasename(obj->def->name))) goto cleanup; if (!(pidfile = virPidFileBuildPath(driver->pidDir, radvdpidbase))) goto cleanup; - if (networkRadvdConfWrite(driver, network, &configfile) < 0) + if (networkRadvdConfWrite(driver, obj, &configfile) < 0) goto cleanup; /* prevent radvd from daemonizing itself with "--debug 1", and use @@ -1979,7 +1977,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, if (virCommandRun(cmd, NULL) < 0) goto cleanup; - if (virPidFileRead(driver->pidDir, radvdpidbase, &network->radvdPid) < 0) + if (virPidFileRead(driver->pidDir, radvdpidbase, &obj->radvdPid) < 0) goto cleanup; ret = 0; @@ -1995,7 +1993,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, static int networkRefreshRadvd(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); char *radvdpidbase; @@ -2003,87 +2001,86 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, /* Is dnsmasq handling RA? */ if (DNSMASQ_RA_SUPPORT(dnsmasq_caps)) { virObjectUnref(dnsmasq_caps); - if (network->radvdPid <= 0) + if (obj->radvdPid <= 0) return 0; /* radvd should not be running but in case it is */ - if ((networkKillDaemon(network->radvdPid, "radvd", - network->def->name) >= 0) && - ((radvdpidbase = networkRadvdPidfileBasename(network->def->name)) + if ((networkKillDaemon(obj->radvdPid, "radvd", obj->def->name) >= 0) && + ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name)) != NULL)) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); } - network->radvdPid = -1; + obj->radvdPid = -1; return 0; } virObjectUnref(dnsmasq_caps); /* if there's no running radvd, just start it */ - if (network->radvdPid <= 0 || (kill(network->radvdPid, 0) < 0)) - return networkStartRadvd(driver, network); + if (obj->radvdPid <= 0 || (kill(obj->radvdPid, 0) < 0)) + return networkStartRadvd(driver, obj); - if (!virNetworkDefGetIPByIndex(network->def, AF_INET6, 0)) { + if (!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0)) { /* no IPv6 addresses, so we don't need to run radvd */ return 0; } - if (networkRadvdConfWrite(driver, network, NULL) < 0) + if (networkRadvdConfWrite(driver, obj, NULL) < 0) return -1; - return kill(network->radvdPid, SIGHUP); + return kill(obj->radvdPid, SIGHUP); } #if 0 /* currently unused, so it causes a build error unless we #if it out */ static int -networkRestartRadvd(virNetworkObjPtr network) +networkRestartRadvd(virNetworkObjPtr obj) { char *radvdpidbase; /* if there is a running radvd, kill it */ - if (network->radvdPid > 0) { + if (obj->radvdPid > 0) { /* essentially ignore errors from the following two functions, * since there's really no better recovery to be done than to * just push ahead (and that may be exactly what's needed). */ - if ((networkKillDaemon(network->radvdPid, "radvd", - network->def->name) >= 0) && - ((radvdpidbase = networkRadvdPidfileBasename(network->def->name)) + if ((networkKillDaemon(obj->radvdPid, "radvd", + obj->def->name) >= 0) && + ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name)) != NULL)) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); } - network->radvdPid = -1; + obj->radvdPid = -1; } /* now start radvd if it should be started */ - return networkStartRadvd(network); + return networkStartRadvd(obj); } #endif /* #if 0 */ static int -networkRefreshDaemonsHelper(virNetworkObjPtr net, +networkRefreshDaemonsHelper(virNetworkObjPtr obj, void *opaque) { virNetworkDriverStatePtr driver = opaque; - virObjectLock(net); - if (virNetworkObjIsActive(net) && - ((net->def->forward.type == VIR_NETWORK_FORWARD_NONE) || - (net->def->forward.type == VIR_NETWORK_FORWARD_NAT) || - (net->def->forward.type == VIR_NETWORK_FORWARD_ROUTE) || - (net->def->forward.type == VIR_NETWORK_FORWARD_OPEN))) { + virObjectLock(obj); + if (virNetworkObjIsActive(obj) && + ((obj->def->forward.type == VIR_NETWORK_FORWARD_NONE) || + (obj->def->forward.type == VIR_NETWORK_FORWARD_NAT) || + (obj->def->forward.type == VIR_NETWORK_FORWARD_ROUTE) || + (obj->def->forward.type == VIR_NETWORK_FORWARD_OPEN))) { /* Only the three L3 network types that are configured by * libvirt will have a dnsmasq or radvd daemon associated * with them. Here we send a SIGHUP to an existing * dnsmasq and/or radvd, or restart them if they've * disappeared. */ - networkRefreshDhcpDaemon(driver, net); - networkRefreshRadvd(driver, net); + networkRefreshDhcpDaemon(driver, obj); + networkRefreshRadvd(driver, obj); } - virObjectUnlock(net); + virObjectUnlock(obj); return 0; } @@ -2102,26 +2099,26 @@ networkRefreshDaemons(virNetworkDriverStatePtr driver) static int -networkReloadFirewallRulesHelper(virNetworkObjPtr net, +networkReloadFirewallRulesHelper(virNetworkObjPtr obj, void *opaque ATTRIBUTE_UNUSED) { - virObjectLock(net); - if (virNetworkObjIsActive(net) && - ((net->def->forward.type == VIR_NETWORK_FORWARD_NONE) || - (net->def->forward.type == VIR_NETWORK_FORWARD_NAT) || - (net->def->forward.type == VIR_NETWORK_FORWARD_ROUTE))) { + virObjectLock(obj); + if (virNetworkObjIsActive(obj) && + ((obj->def->forward.type == VIR_NETWORK_FORWARD_NONE) || + (obj->def->forward.type == VIR_NETWORK_FORWARD_NAT) || + (obj->def->forward.type == VIR_NETWORK_FORWARD_ROUTE))) { /* Only three of the L3 network types that are configured by * libvirt need to have iptables rules reloaded. The 4th L3 * network type, forward='open', doesn't need this because it * has no iptables rules. */ - networkRemoveFirewallRules(net->def); - if (networkAddFirewallRules(net->def) < 0) { + networkRemoveFirewallRules(obj->def); + if (networkAddFirewallRules(obj->def) < 0) { /* failed to add but already logged */ } } - virObjectUnlock(net); + virObjectUnlock(obj); return 0; } @@ -2162,24 +2159,24 @@ networkEnableIPForwarding(bool enableIPv4, static int -networkSetIPv6Sysctls(virNetworkObjPtr network) +networkSetIPv6Sysctls(virNetworkObjPtr obj) { char *field = NULL; int ret = -1; - bool enableIPv6 = !!virNetworkDefGetIPByIndex(network->def, AF_INET6, 0); + bool enableIPv6 = !!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0); /* set disable_ipv6 if there are no ipv6 addresses defined for the * network. But also unset it if there *are* ipv6 addresses, as we * can't be sure of its default value. */ if (virAsprintf(&field, SYSCTL_PATH "/net/ipv6/conf/%s/disable_ipv6", - network->def->bridge) < 0) + obj->def->bridge) < 0) goto cleanup; if (access(field, W_OK) < 0 && errno == ENOENT) { if (!enableIPv6) VIR_DEBUG("ipv6 appears to already be disabled on %s", - network->def->bridge); + obj->def->bridge); ret = 0; goto cleanup; } @@ -2187,7 +2184,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr network) if (virFileWriteStr(field, enableIPv6 ? "0" : "1", 0) < 0) { virReportSystemError(errno, _("cannot write to %s to enable/disable IPv6 " - "on bridge %s"), field, network->def->bridge); + "on bridge %s"), field, obj->def->bridge); goto cleanup; } VIR_FREE(field); @@ -2200,7 +2197,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr network) * their own router advertisements. */ if (virAsprintf(&field, SYSCTL_PATH "/net/ipv6/conf/%s/accept_ra", - network->def->bridge) < 0) + obj->def->bridge) < 0) goto cleanup; if (virFileWriteStr(field, "0", 0) < 0) { @@ -2214,7 +2211,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr network) * definition), must always have autoconf=0. */ if (virAsprintf(&field, SYSCTL_PATH "/net/ipv6/conf/%s/autoconf", - network->def->bridge) < 0) + obj->def->bridge) < 0) goto cleanup; if (virFileWriteStr(field, "0", 0) < 0) { @@ -2232,7 +2229,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr network) /* add an IP address to a bridge */ static int -networkAddAddrToBridge(virNetworkObjPtr network, +networkAddAddrToBridge(virNetworkObjPtr obj, virNetworkIPDefPtr ipdef) { int prefix = virNetworkIPDefPrefix(ipdef); @@ -2240,11 +2237,11 @@ networkAddAddrToBridge(virNetworkObjPtr network, if (prefix < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("bridge '%s' has an invalid netmask or IP address"), - network->def->bridge); + obj->def->bridge); return -1; } - if (virNetDevIPAddrAdd(network->def->bridge, + if (virNetDevIPAddrAdd(obj->def->bridge, &ipdef->address, NULL, prefix) < 0) return -1; @@ -2253,13 +2250,13 @@ networkAddAddrToBridge(virNetworkObjPtr network, static int -networkStartHandleMACTableManagerMode(virNetworkObjPtr network, +networkStartHandleMACTableManagerMode(virNetworkObjPtr obj, const char *macTapIfName) { - const char *brname = network->def->bridge; + const char *brname = obj->def->bridge; if (brname && - network->def->macTableManager + obj->def->macTableManager == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) { if (virNetDevBridgeSetVlanFiltering(brname, true) < 0) return -1; @@ -2276,7 +2273,7 @@ networkStartHandleMACTableManagerMode(virNetworkObjPtr network, /* add an IP (static) route to a bridge */ static int -networkAddRouteToBridge(virNetworkObjPtr network, +networkAddRouteToBridge(virNetworkObjPtr obj, virNetDevIPRoutePtr routedef) { int prefix = virNetDevIPRouteGetPrefix(routedef); @@ -2288,11 +2285,11 @@ networkAddRouteToBridge(virNetworkObjPtr network, virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' has an invalid netmask " "or IP address in route definition"), - network->def->name); + obj->def->name); return -1; } - if (virNetDevIPRouteAdd(network->def->bridge, addr, + if (virNetDevIPRouteAdd(obj->def->bridge, addr, prefix, gateway, metric) < 0) { return -1; } @@ -2300,17 +2297,16 @@ networkAddRouteToBridge(virNetworkObjPtr network, } static int -networkWaitDadFinish(virNetworkObjPtr network) +networkWaitDadFinish(virNetworkObjPtr obj) { virNetworkIPDefPtr ipdef; virSocketAddrPtr *addrs = NULL, addr = NULL; size_t naddrs = 0; int ret = -1; - VIR_DEBUG("Begin waiting for IPv6 DAD on network %s", network->def->name); + VIR_DEBUG("Begin waiting for IPv6 DAD on network %s", obj->def->name); - while ((ipdef = virNetworkDefGetIPByIndex(network->def, - AF_INET6, naddrs))) { + while ((ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, naddrs))) { addr = &ipdef->address; if (VIR_APPEND_ELEMENT_COPY(addrs, naddrs, addr) < 0) goto cleanup; @@ -2321,14 +2317,14 @@ networkWaitDadFinish(virNetworkObjPtr network) cleanup: VIR_FREE(addrs); VIR_DEBUG("Finished waiting for IPv6 DAD on network %s with status %d", - network->def->name, ret); + obj->def->name, ret); return ret; } static int networkStartNetworkVirtual(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { size_t i; bool v4present = false, v6present = false; @@ -2340,11 +2336,11 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, int tapfd = -1; /* Check to see if any network IP collides with an existing route */ - if (networkCheckRouteCollision(network->def) < 0) + if (networkCheckRouteCollision(obj->def) < 0) return -1; /* Create and configure the bridge device */ - if (!network->def->bridge) { + if (!obj->def->bridge) { /* bridge name can only be empty if the config files were * edited directly. Otherwise networkValidate() (called after * parsing the XML from networkCreateXML() and @@ -2355,27 +2351,27 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, */ virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' has no bridge name defined"), - network->def->name); + obj->def->name); return -1; } - if (virNetDevBridgeCreate(network->def->bridge) < 0) + if (virNetDevBridgeCreate(obj->def->bridge) < 0) return -1; - if (network->def->mac_specified) { + if (obj->def->mac_specified) { /* To set a mac for the bridge, we need to define a dummy tap * device, set its mac, then attach it to the bridge. As long * as its mac address is lower than any other interface that * gets attached, the bridge will always maintain this mac * address. */ - macTapIfName = networkBridgeDummyNicName(network->def->bridge); + macTapIfName = networkBridgeDummyNicName(obj->def->bridge); if (!macTapIfName) goto err0; /* Keep tun fd open and interface up to allow for IPv6 DAD to happen */ - if (virNetDevTapCreateInBridgePort(network->def->bridge, - &macTapIfName, &network->def->mac, + if (virNetDevTapCreateInBridgePort(obj->def->bridge, + &macTapIfName, &obj->def->mac, NULL, NULL, &tapfd, 1, NULL, NULL, - NULL, network->def->mtu, NULL, + NULL, obj->def->mtu, NULL, VIR_NETDEV_TAP_CREATE_USE_MAC_FOR_BRIDGE | VIR_NETDEV_TAP_CREATE_IFUP | VIR_NETDEV_TAP_CREATE_PERSIST) < 0) { @@ -2384,8 +2380,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } } - if (!(macMapFile = networkMacMgrFileName(driver, network->def->bridge)) || - !(network->macmap = virMacMapNew(macMapFile))) + if (!(macMapFile = networkMacMgrFileName(driver, obj->def->bridge)) || + !(obj->macmap = virMacMapNew(macMapFile))) goto err1; /* Set bridge options */ @@ -2393,27 +2389,27 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, /* delay is configured in seconds, but virNetDevBridgeSetSTPDelay * expects milliseconds */ - if (virNetDevBridgeSetSTPDelay(network->def->bridge, - network->def->delay * 1000) < 0) + if (virNetDevBridgeSetSTPDelay(obj->def->bridge, + obj->def->delay * 1000) < 0) goto err1; - if (virNetDevBridgeSetSTP(network->def->bridge, - network->def->stp ? true : false) < 0) + if (virNetDevBridgeSetSTP(obj->def->bridge, + obj->def->stp ? true : false) < 0) goto err1; /* Disable IPv6 on the bridge if there are no IPv6 addresses * defined, and set other IPv6 sysctl tunables appropriately. */ - if (networkSetIPv6Sysctls(network) < 0) + if (networkSetIPv6Sysctls(obj) < 0) goto err1; /* Add "once per network" rules */ - if (network->def->forward.type != VIR_NETWORK_FORWARD_OPEN && - networkAddFirewallRules(network->def) < 0) + if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN && + networkAddFirewallRules(obj->def) < 0) goto err1; for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_UNSPEC, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i)); i++) { if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) v4present = true; @@ -2421,28 +2417,28 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, v6present = true; /* Add the IP address/netmask to the bridge */ - if (networkAddAddrToBridge(network, ipdef) < 0) + if (networkAddAddrToBridge(obj, ipdef) < 0) goto err2; } - if (networkStartHandleMACTableManagerMode(network, macTapIfName) < 0) + if (networkStartHandleMACTableManagerMode(obj, macTapIfName) < 0) goto err2; /* Bring up the bridge interface */ - if (virNetDevSetOnline(network->def->bridge, 1) < 0) + if (virNetDevSetOnline(obj->def->bridge, 1) < 0) goto err2; - for (i = 0; i < network->def->nroutes; i++) { + for (i = 0; i < obj->def->nroutes; i++) { virSocketAddrPtr gateway = NULL; - routedef = network->def->routes[i]; + routedef = obj->def->routes[i]; gateway = virNetDevIPRouteGetGateway(routedef); /* Add the IP route to the bridge */ /* ignore errors, error msg will be generated */ /* but libvirt will not know and net-destroy will work. */ if (VIR_SOCKET_ADDR_VALID(gateway)) { - if (networkAddRouteToBridge(network, routedef) < 0) { + if (networkAddRouteToBridge(obj, routedef) < 0) { /* an error occurred adding the static route */ continue; /* for now, do nothing */ } @@ -2450,7 +2446,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } /* If forward.type != NONE, turn on global IP forwarding */ - if (network->def->forward.type != VIR_NETWORK_FORWARD_NONE) { + if (obj->def->forward.type != VIR_NETWORK_FORWARD_NONE) { if (v6present && !virNetDevIPCheckIPv6Forwarding()) goto err3; /* Precise error message already provided */ @@ -2464,17 +2460,17 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, /* start dnsmasq if there are any IP addresses (v4 or v6) */ if ((v4present || v6present) && - networkStartDhcpDaemon(driver, network) < 0) + networkStartDhcpDaemon(driver, obj) < 0) goto err3; /* start radvd if there are any ipv6 addresses */ - if (v6present && networkStartRadvd(driver, network) < 0) + if (v6present && networkStartRadvd(driver, obj) < 0) goto err4; /* dnsmasq does not wait for DAD to complete before daemonizing, * so we need to wait for it ourselves. */ - if (v6present && networkWaitDadFinish(network) < 0) + if (v6present && networkWaitDadFinish(obj) < 0) goto err4; /* DAD has finished, dnsmasq is now bound to the @@ -2486,8 +2482,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, VIR_FORCE_CLOSE(tapfd); } - if (virNetDevBandwidthSet(network->def->bridge, - network->def->bandwidth, true) < 0) + if (virNetDevBandwidthSet(obj->def->bridge, obj->def->bandwidth, true) < 0) goto err5; VIR_FREE(macTapIfName); @@ -2496,28 +2491,28 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, return 0; err5: - if (network->def->bandwidth) - virNetDevBandwidthClear(network->def->bridge); + if (obj->def->bandwidth) + virNetDevBandwidthClear(obj->def->bridge); err4: if (!save_err) save_err = virSaveLastError(); - if (network->dnsmasqPid > 0) { - kill(network->dnsmasqPid, SIGTERM); - network->dnsmasqPid = -1; + if (obj->dnsmasqPid > 0) { + kill(obj->dnsmasqPid, SIGTERM); + obj->dnsmasqPid = -1; } err3: if (!save_err) save_err = virSaveLastError(); - ignore_value(virNetDevSetOnline(network->def->bridge, 0)); + ignore_value(virNetDevSetOnline(obj->def->bridge, 0)); err2: if (!save_err) save_err = virSaveLastError(); - if (network->def->forward.type != VIR_NETWORK_FORWARD_OPEN) - networkRemoveFirewallRules(network->def); + if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN) + networkRemoveFirewallRules(obj->def); err1: if (!save_err) @@ -2533,7 +2528,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, err0: if (!save_err) save_err = virSaveLastError(); - ignore_value(virNetDevBridgeDelete(network->def->bridge)); + ignore_value(virNetDevBridgeDelete(obj->def->bridge)); if (save_err) { virSetError(save_err); @@ -2546,71 +2541,71 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, static int networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { - if (network->def->bandwidth) - virNetDevBandwidthClear(network->def->bridge); + if (obj->def->bandwidth) + virNetDevBandwidthClear(obj->def->bridge); - if (!virObjectUnref(network->macmap)) - network->macmap = NULL; + if (!virObjectUnref(obj->macmap)) + obj->macmap = NULL; - if (network->radvdPid > 0) { + if (obj->radvdPid > 0) { char *radvdpidbase; - kill(network->radvdPid, SIGTERM); + kill(obj->radvdPid, SIGTERM); /* attempt to delete the pidfile we created */ - if ((radvdpidbase = networkRadvdPidfileBasename(network->def->name))) { + if ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name))) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); } } - if (network->dnsmasqPid > 0) - kill(network->dnsmasqPid, SIGTERM); + if (obj->dnsmasqPid > 0) + kill(obj->dnsmasqPid, SIGTERM); - if (network->def->mac_specified) { - char *macTapIfName = networkBridgeDummyNicName(network->def->bridge); + if (obj->def->mac_specified) { + char *macTapIfName = networkBridgeDummyNicName(obj->def->bridge); if (macTapIfName) { ignore_value(virNetDevTapDelete(macTapIfName, NULL)); VIR_FREE(macTapIfName); } } - ignore_value(virNetDevSetOnline(network->def->bridge, 0)); + ignore_value(virNetDevSetOnline(obj->def->bridge, 0)); - if (network->def->forward.type != VIR_NETWORK_FORWARD_OPEN) - networkRemoveFirewallRules(network->def); + if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN) + networkRemoveFirewallRules(obj->def); - ignore_value(virNetDevBridgeDelete(network->def->bridge)); + ignore_value(virNetDevBridgeDelete(obj->def->bridge)); /* See if its still alive and really really kill it */ - if (network->dnsmasqPid > 0 && - (kill(network->dnsmasqPid, 0) == 0)) - kill(network->dnsmasqPid, SIGKILL); - network->dnsmasqPid = -1; + if (obj->dnsmasqPid > 0 && + (kill(obj->dnsmasqPid, 0) == 0)) + kill(obj->dnsmasqPid, SIGKILL); + obj->dnsmasqPid = -1; - if (network->radvdPid > 0 && - (kill(network->radvdPid, 0) == 0)) - kill(network->radvdPid, SIGKILL); - network->radvdPid = -1; + if (obj->radvdPid > 0 && + (kill(obj->radvdPid, 0) == 0)) + kill(obj->radvdPid, SIGKILL); + obj->radvdPid = -1; return 0; } static int -networkStartNetworkBridge(virNetworkObjPtr network) +networkStartNetworkBridge(virNetworkObjPtr obj) { /* put anything here that needs to be done each time a network of * type BRIDGE, is started. On failure, undo anything you've done, * and return -1. On success return 0. */ - return networkStartHandleMACTableManagerMode(network, NULL); + return networkStartHandleMACTableManagerMode(obj, NULL); } static int -networkShutdownNetworkBridge(virNetworkObjPtr network ATTRIBUTE_UNUSED) +networkShutdownNetworkBridge(virNetworkObjPtr obj ATTRIBUTE_UNUSED) { /* put anything here that needs to be done each time a network of * type BRIDGE is shutdown. On failure, undo anything you've done, @@ -2729,19 +2724,19 @@ networkCreateInterfacePool(virNetworkDefPtr netdef) static int -networkStartNetworkExternal(virNetworkObjPtr network) +networkStartNetworkExternal(virNetworkObjPtr obj) { /* put anything here that needs to be done each time a network of * type BRIDGE, PRIVATE, VEPA, HOSTDEV or PASSTHROUGH is started. On * failure, undo anything you've done, and return -1. On success * return 0. */ - return networkCreateInterfacePool(network->def); + return networkCreateInterfacePool(obj->def); } static int -networkShutdownNetworkExternal(virNetworkObjPtr network ATTRIBUTE_UNUSED) +networkShutdownNetworkExternal(virNetworkObjPtr obj ATTRIBUTE_UNUSED) { /* put anything here that needs to be done each time a network of * type BRIDGE, PRIVATE, VEPA, HOSTDEV or PASSTHROUGH is shutdown. On @@ -2754,13 +2749,13 @@ networkShutdownNetworkExternal(virNetworkObjPtr network ATTRIBUTE_UNUSED) static int networkStartNetwork(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { int ret = -1; - VIR_DEBUG("driver=%p, network=%p", driver, network); + VIR_DEBUG("driver=%p, network=%p", driver, obj); - if (virNetworkObjIsActive(network)) { + if (virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("network is already active")); return ret; @@ -2769,29 +2764,29 @@ networkStartNetwork(virNetworkDriverStatePtr driver, VIR_DEBUG("Beginning network startup process"); VIR_DEBUG("Setting current network def as transient"); - if (virNetworkObjSetDefTransient(network, true) < 0) + if (virNetworkObjSetDefTransient(obj, true) < 0) goto cleanup; /* Run an early hook to set-up missing devices. * If the script raised an error abort the launch. */ - if (networkRunHook(network, NULL, NULL, + if (networkRunHook(obj, NULL, NULL, VIR_HOOK_NETWORK_OP_START, VIR_HOOK_SUBOP_BEGIN) < 0) goto cleanup; - switch (network->def->forward.type) { + switch (obj->def->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: case VIR_NETWORK_FORWARD_ROUTE: case VIR_NETWORK_FORWARD_OPEN: - if (networkStartNetworkVirtual(driver, network) < 0) + if (networkStartNetworkVirtual(driver, obj) < 0) goto cleanup; break; case VIR_NETWORK_FORWARD_BRIDGE: - if (network->def->bridge) { - if (networkStartNetworkBridge(network) < 0) + if (obj->def->bridge) { + if (networkStartNetworkBridge(obj) < 0) goto cleanup; break; } @@ -2805,13 +2800,13 @@ networkStartNetwork(virNetworkDriverStatePtr driver, case VIR_NETWORK_FORWARD_VEPA: case VIR_NETWORK_FORWARD_PASSTHROUGH: case VIR_NETWORK_FORWARD_HOSTDEV: - if (networkStartNetworkExternal(network) < 0) + if (networkStartNetworkExternal(obj) < 0) goto cleanup; break; } /* finally we can call the 'started' hook script if any */ - if (networkRunHook(network, NULL, NULL, + if (networkRunHook(obj, NULL, NULL, VIR_HOOK_NETWORK_OP_STARTED, VIR_HOOK_SUBOP_BEGIN) < 0) goto cleanup; @@ -2820,19 +2815,19 @@ networkStartNetwork(virNetworkDriverStatePtr driver, * is setup. */ VIR_DEBUG("Writing network status to disk"); - if (virNetworkObjSaveStatus(driver->stateDir, network) < 0) + if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) goto cleanup; - network->active = 1; - VIR_INFO("Network '%s' started up", network->def->name); + obj->active = 1; + VIR_INFO("Network '%s' started up", obj->def->name); ret = 0; cleanup: if (ret < 0) { - virNetworkObjUnsetDefTransient(network); + virNetworkObjUnsetDefTransient(obj); virErrorPtr save_err = virSaveLastError(); int save_errno = errno; - networkShutdownNetwork(driver, network); + networkShutdownNetwork(driver, obj); virSetError(save_err); virFreeError(save_err); errno = save_errno; @@ -2843,36 +2838,36 @@ networkStartNetwork(virNetworkDriverStatePtr driver, static int networkShutdownNetwork(virNetworkDriverStatePtr driver, - virNetworkObjPtr network) + virNetworkObjPtr obj) { int ret = 0; char *stateFile; - VIR_INFO("Shutting down network '%s'", network->def->name); + VIR_INFO("Shutting down network '%s'", obj->def->name); - if (!virNetworkObjIsActive(network)) + if (!virNetworkObjIsActive(obj)) return 0; stateFile = virNetworkConfigFile(driver->stateDir, - network->def->name); + obj->def->name); if (!stateFile) return -1; unlink(stateFile); VIR_FREE(stateFile); - switch (network->def->forward.type) { + switch (obj->def->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: case VIR_NETWORK_FORWARD_ROUTE: case VIR_NETWORK_FORWARD_OPEN: - ret = networkShutdownNetworkVirtual(driver, network); + ret = networkShutdownNetworkVirtual(driver, obj); break; case VIR_NETWORK_FORWARD_BRIDGE: - if (network->def->bridge) { - ret = networkShutdownNetworkBridge(network); + if (obj->def->bridge) { + ret = networkShutdownNetworkBridge(obj); break; } /* intentionally fall through to the macvtap/direct case for @@ -2885,16 +2880,16 @@ networkShutdownNetwork(virNetworkDriverStatePtr driver, case VIR_NETWORK_FORWARD_VEPA: case VIR_NETWORK_FORWARD_PASSTHROUGH: case VIR_NETWORK_FORWARD_HOSTDEV: - ret = networkShutdownNetworkExternal(network); + ret = networkShutdownNetworkExternal(obj); break; } /* now that we know it's stopped call the hook if present */ - networkRunHook(network, NULL, NULL, VIR_HOOK_NETWORK_OP_STOPPED, + networkRunHook(obj, NULL, NULL, VIR_HOOK_NETWORK_OP_STOPPED, VIR_HOOK_SUBOP_END); - network->active = 0; - virNetworkObjUnsetDefTransient(network); + obj->active = 0; + virNetworkObjUnsetDefTransient(obj); return ret; } @@ -2904,11 +2899,11 @@ networkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj; + virNetworkPtr net = NULL; - network = virNetworkObjFindByUUID(driver->networks, uuid); - if (!network) { + obj = virNetworkObjFindByUUID(driver->networks, uuid); + if (!obj) { char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(uuid, uuidstr); virReportError(VIR_ERR_NO_NETWORK, @@ -2917,14 +2912,14 @@ networkLookupByUUID(virConnectPtr conn, goto cleanup; } - if (virNetworkLookupByUUIDEnsureACL(conn, network->def) < 0) + if (virNetworkLookupByUUIDEnsureACL(conn, obj->def) < 0) goto cleanup; - ret = virGetNetwork(conn, network->def->name, network->def->uuid); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: - virNetworkObjEndAPI(&network); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -2933,24 +2928,24 @@ networkLookupByName(virConnectPtr conn, const char *name) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj; + virNetworkPtr net = NULL; - network = virNetworkObjFindByName(driver->networks, name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), name); goto cleanup; } - if (virNetworkLookupByNameEnsureACL(conn, network->def) < 0) + if (virNetworkLookupByNameEnsureACL(conn, obj->def) < 0) goto cleanup; - ret = virGetNetwork(conn, network->def->name, network->def->uuid); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: - virNetworkObjEndAPI(&network); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -3504,8 +3499,8 @@ networkCreateXML(virConnectPtr conn, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkDefPtr def; - virNetworkObjPtr network = NULL; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj = NULL; + virNetworkPtr net = NULL; virObjectEventPtr event = NULL; if (!(def = virNetworkDefParseString(xml))) @@ -3521,31 +3516,31 @@ networkCreateXML(virConnectPtr conn, * we assign the def with live = true in anticipation that it will * be started momentarily. */ - if (!(network = virNetworkObjAssignDef(driver->networks, def, - VIR_NETWORK_OBJ_LIST_ADD_LIVE | - VIR_NETWORK_OBJ_LIST_ADD_CHECK_LIVE))) + if (!(obj = virNetworkObjAssignDef(driver->networks, def, + VIR_NETWORK_OBJ_LIST_ADD_LIVE | + VIR_NETWORK_OBJ_LIST_ADD_CHECK_LIVE))) goto cleanup; def = NULL; - if (networkStartNetwork(driver, network) < 0) { - virNetworkObjRemoveInactive(driver->networks, network); + if (networkStartNetwork(driver, obj) < 0) { + virNetworkObjRemoveInactive(driver->networks, obj); goto cleanup; } - event = virNetworkEventLifecycleNew(network->def->name, - network->def->uuid, + event = virNetworkEventLifecycleNew(obj->def->name, + obj->def->uuid, VIR_NETWORK_EVENT_STARTED, 0); - VIR_INFO("Creating network '%s'", network->def->name); - ret = virGetNetwork(conn, network->def->name, network->def->uuid); + VIR_INFO("Creating network '%s'", obj->def->name); + net = virGetNetwork(conn, obj->def->name, obj->def->uuid); cleanup: virNetworkDefFree(def); if (event) virObjectEventStateQueue(driver->networkEventState, event); - virNetworkObjEndAPI(&network); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -3556,8 +3551,8 @@ networkDefineXML(virConnectPtr conn, virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkDefPtr def = NULL; bool freeDef = true; - virNetworkObjPtr network = NULL; - virNetworkPtr ret = NULL; + virNetworkObjPtr obj = NULL; + virNetworkPtr net = NULL; virObjectEventPtr event = NULL; if (!(def = virNetworkDefParseString(xml))) @@ -3569,22 +3564,22 @@ networkDefineXML(virConnectPtr conn, if (networkValidate(driver, def) < 0) goto cleanup; - if (!(network = virNetworkObjAssignDef(driver->networks, def, 0))) + if (!(obj = virNetworkObjAssignDef(driver->networks, def, 0))) goto cleanup; /* def was assigned to network object */ freeDef = false; if (virNetworkSaveConfig(driver->networkConfigDir, def) < 0) { - if (!virNetworkObjIsActive(network)) { - virNetworkObjRemoveInactive(driver->networks, network); + if (!virNetworkObjIsActive(obj)) { + virNetworkObjRemoveInactive(driver->networks, obj); goto cleanup; } /* if network was active already, just undo new persistent * definition by making it transient. * XXX - this isn't necessarily the correct thing to do. */ - virNetworkObjUpdateAssignDef(network, NULL, false); + virNetworkObjUpdateAssignDef(obj, NULL, false); goto cleanup; } @@ -3593,15 +3588,15 @@ networkDefineXML(virConnectPtr conn, 0); VIR_INFO("Defining network '%s'", def->name); - ret = virGetNetwork(conn, def->name, def->uuid); + net = virGetNetwork(conn, def->name, def->uuid); cleanup: if (event) virObjectEventStateQueue(driver->networkEventState, event); if (freeDef) virNetworkDefFree(def); - virNetworkObjEndAPI(&network); - return ret; + virNetworkObjEndAPI(&obj); + return net; } @@ -3609,21 +3604,21 @@ static int networkUndefine(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; + virNetworkObjPtr obj; int ret = -1; bool active = false; virObjectEventPtr event = NULL; - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) goto cleanup; - if (virNetworkUndefineEnsureACL(net->conn, network->def) < 0) + if (virNetworkUndefineEnsureACL(net->conn, obj->def) < 0) goto cleanup; - if (virNetworkObjIsActive(network)) + if (virNetworkObjIsActive(obj)) active = true; - if (!network->persistent) { + if (!obj->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("can't undefine transient network")); goto cleanup; @@ -3632,24 +3627,24 @@ networkUndefine(virNetworkPtr net) /* remove autostart link */ if (virNetworkObjDeleteConfig(driver->networkConfigDir, driver->networkAutostartDir, - network) < 0) + obj) < 0) goto cleanup; - event = virNetworkEventLifecycleNew(network->def->name, - network->def->uuid, + event = virNetworkEventLifecycleNew(obj->def->name, + obj->def->uuid, VIR_NETWORK_EVENT_UNDEFINED, 0); - VIR_INFO("Undefining network '%s'", network->def->name); + VIR_INFO("Undefining network '%s'", obj->def->name); if (!active) { - if (networkRemoveInactive(driver, network) < 0) + if (networkRemoveInactive(driver, obj) < 0) goto cleanup; } else { /* if the network still exists, it was active, and we need to make * it transient (by deleting the persistent def) */ - virNetworkObjUpdateAssignDef(network, NULL, false); + virNetworkObjUpdateAssignDef(obj, NULL, false); } ret = 0; @@ -3657,7 +3652,7 @@ networkUndefine(virNetworkPtr net) cleanup: if (event) virObjectEventStateQueue(driver->networkEventState, event); - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -3671,7 +3666,7 @@ networkUpdate(virNetworkPtr net, unsigned int flags) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network = NULL; + virNetworkObjPtr obj = NULL; int isActive, ret = -1; size_t i; virNetworkIPDefPtr ipdef; @@ -3683,15 +3678,15 @@ networkUpdate(virNetworkPtr net, VIR_NETWORK_UPDATE_AFFECT_CONFIG, -1); - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) goto cleanup; - if (virNetworkUpdateEnsureACL(net->conn, network->def, flags) < 0) + if (virNetworkUpdateEnsureACL(net->conn, obj->def, flags) < 0) goto cleanup; /* see if we are listening for dhcp pre-modification */ for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET, i)); i++) { if (ipdef->nranges || ipdef->nhosts) { oldDhcpActive = true; @@ -3702,7 +3697,7 @@ networkUpdate(virNetworkPtr net, /* VIR_NETWORK_UPDATE_AFFECT_CURRENT means "change LIVE if network * is active, else change CONFIG */ - isActive = virNetworkObjIsActive(network); + isActive = virNetworkObjIsActive(obj); if ((flags & (VIR_NETWORK_UPDATE_AFFECT_LIVE | VIR_NETWORK_UPDATE_AFFECT_CONFIG)) == VIR_NETWORK_UPDATE_AFFECT_CURRENT) { @@ -3716,9 +3711,9 @@ networkUpdate(virNetworkPtr net, /* Take care of anything that must be done before updating the * live NetworkDef. */ - if (network->def->forward.type == VIR_NETWORK_FORWARD_NONE || - network->def->forward.type == VIR_NETWORK_FORWARD_NAT || - network->def->forward.type == VIR_NETWORK_FORWARD_ROUTE) { + if (obj->def->forward.type == VIR_NETWORK_FORWARD_NONE || + obj->def->forward.type == VIR_NETWORK_FORWARD_NAT || + obj->def->forward.type == VIR_NETWORK_FORWARD_ROUTE) { switch (section) { case VIR_NETWORK_SECTION_FORWARD: case VIR_NETWORK_SECTION_FORWARD_INTERFACE: @@ -3729,8 +3724,8 @@ networkUpdate(virNetworkPtr net, * old rules (and remember to load new ones after the * update). */ - if (network->def->forward.type != VIR_NETWORK_FORWARD_OPEN) { - networkRemoveFirewallRules(network->def); + if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN) { + networkRemoveFirewallRules(obj->def); needFirewallRefresh = true; } break; @@ -3741,19 +3736,19 @@ networkUpdate(virNetworkPtr net, } /* update the network config in memory/on disk */ - if (virNetworkObjUpdate(network, command, section, parentIndex, xml, flags) < 0) { + if (virNetworkObjUpdate(obj, command, section, parentIndex, xml, flags) < 0) { if (needFirewallRefresh) - ignore_value(networkAddFirewallRules(network->def)); + ignore_value(networkAddFirewallRules(obj->def)); goto cleanup; } - if (needFirewallRefresh && networkAddFirewallRules(network->def) < 0) + if (needFirewallRefresh && networkAddFirewallRules(obj->def) < 0) goto cleanup; if (flags & VIR_NETWORK_UPDATE_AFFECT_CONFIG) { /* save updated persistent config to disk */ if (virNetworkSaveConfig(driver->networkConfigDir, - virNetworkObjGetPersistentDef(network)) < 0) { + virNetworkObjGetPersistentDef(obj)) < 0) { goto cleanup; } } @@ -3776,7 +3771,7 @@ networkUpdate(virNetworkPtr net, * to "nobody" after it starts, and is unable to re-read * the conf file (owned by root, mode 600) */ - if (networkRestartDhcpDaemon(driver, network) < 0) + if (networkRestartDhcpDaemon(driver, obj) < 0) goto cleanup; } else if (section == VIR_NETWORK_SECTION_IP_DHCP_HOST) { @@ -3788,7 +3783,7 @@ networkUpdate(virNetworkPtr net, bool newDhcpActive = false; for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(network->def, AF_INET, i)); + (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET, i)); i++) { if (ipdef->nranges || ipdef->nhosts) { newDhcpActive = true; @@ -3797,8 +3792,8 @@ networkUpdate(virNetworkPtr net, } if ((newDhcpActive != oldDhcpActive && - networkRestartDhcpDaemon(driver, network) < 0) || - networkRefreshDhcpDaemon(driver, network) < 0) { + networkRestartDhcpDaemon(driver, obj) < 0) || + networkRefreshDhcpDaemon(driver, obj) < 0) { goto cleanup; } @@ -3807,7 +3802,7 @@ networkUpdate(virNetworkPtr net, * (not the .conf file) so we can just update the config * files and send SIGHUP to dnsmasq. */ - if (networkRefreshDhcpDaemon(driver, network) < 0) + if (networkRefreshDhcpDaemon(driver, obj) < 0) goto cleanup; } @@ -3816,23 +3811,23 @@ networkUpdate(virNetworkPtr net, /* only a change in IP addresses will affect radvd, and all of radvd's * config is stored in the conf file which will be re-read with a SIGHUP. */ - if (networkRefreshRadvd(driver, network) < 0) + if (networkRefreshRadvd(driver, obj) < 0) goto cleanup; } /* save current network state to disk */ - if ((ret = virNetworkObjSaveStatus(driver->stateDir, network)) < 0) + if ((ret = virNetworkObjSaveStatus(driver->stateDir, obj)) < 0) goto cleanup; } /* call the 'updated' network hook script */ - if (networkRunHook(network, NULL, NULL, VIR_HOOK_NETWORK_OP_UPDATED, + if (networkRunHook(obj, NULL, NULL, VIR_HOOK_NETWORK_OP_UPDATED, VIR_HOOK_SUBOP_BEGIN) < 0) goto cleanup; ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -3841,28 +3836,28 @@ static int networkCreate(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; + virNetworkObjPtr obj; int ret = -1; virObjectEventPtr event = NULL; - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) goto cleanup; - if (virNetworkCreateEnsureACL(net->conn, network->def) < 0) + if (virNetworkCreateEnsureACL(net->conn, obj->def) < 0) goto cleanup; - if ((ret = networkStartNetwork(driver, network)) < 0) + if ((ret = networkStartNetwork(driver, obj)) < 0) goto cleanup; - event = virNetworkEventLifecycleNew(network->def->name, - network->def->uuid, + event = virNetworkEventLifecycleNew(obj->def->name, + obj->def->uuid, VIR_NETWORK_EVENT_STARTED, 0); cleanup: if (event) virObjectEventStateQueue(driver->networkEventState, event); - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -3871,33 +3866,32 @@ static int networkDestroy(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; + virNetworkObjPtr obj; int ret = -1; virObjectEventPtr event = NULL; - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) goto cleanup; - if (virNetworkDestroyEnsureACL(net->conn, network->def) < 0) + if (virNetworkDestroyEnsureACL(net->conn, obj->def) < 0) goto cleanup; - if (!virNetworkObjIsActive(network)) { + if (!virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("network '%s' is not active"), - network->def->name); + obj->def->name); goto cleanup; } - if ((ret = networkShutdownNetwork(driver, network)) < 0) + if ((ret = networkShutdownNetwork(driver, obj)) < 0) goto cleanup; - event = virNetworkEventLifecycleNew(network->def->name, - network->def->uuid, + event = virNetworkEventLifecycleNew(obj->def->name, + obj->def->uuid, VIR_NETWORK_EVENT_STOPPED, 0); - if (!network->persistent && - networkRemoveInactive(driver, network) < 0) { + if (!obj->persistent && networkRemoveInactive(driver, obj) < 0) { ret = -1; goto cleanup; } @@ -3905,7 +3899,7 @@ networkDestroy(virNetworkPtr net) cleanup: if (event) virObjectEventStateQueue(driver->networkEventState, event); - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -3914,27 +3908,27 @@ static char * networkGetXMLDesc(virNetworkPtr net, unsigned int flags) { - virNetworkObjPtr network; + virNetworkObjPtr obj; virNetworkDefPtr def; char *ret = NULL; virCheckFlags(VIR_NETWORK_XML_INACTIVE, NULL); - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) return ret; - if (virNetworkGetXMLDescEnsureACL(net->conn, network->def) < 0) + if (virNetworkGetXMLDescEnsureACL(net->conn, obj->def) < 0) goto cleanup; - if ((flags & VIR_NETWORK_XML_INACTIVE) && network->newDef) - def = network->newDef; + if ((flags & VIR_NETWORK_XML_INACTIVE) && obj->newDef) + def = obj->newDef; else - def = network->def; + def = obj->def; ret = virNetworkDefFormat(def, flags); cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -3942,26 +3936,26 @@ networkGetXMLDesc(virNetworkPtr net, static char * networkGetBridgeName(virNetworkPtr net) { - virNetworkObjPtr network; + virNetworkObjPtr obj; char *bridge = NULL; - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) return bridge; - if (virNetworkGetBridgeNameEnsureACL(net->conn, network->def) < 0) + if (virNetworkGetBridgeNameEnsureACL(net->conn, obj->def) < 0) goto cleanup; - if (!(network->def->bridge)) { + if (!(obj->def->bridge)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' does not have a bridge name."), - network->def->name); + obj->def->name); goto cleanup; } - ignore_value(VIR_STRDUP(bridge, network->def->bridge)); + ignore_value(VIR_STRDUP(bridge, obj->def->bridge)); cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return bridge; } @@ -3970,20 +3964,20 @@ static int networkGetAutostart(virNetworkPtr net, int *autostart) { - virNetworkObjPtr network; + virNetworkObjPtr obj; int ret = -1; - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) return ret; - if (virNetworkGetAutostartEnsureACL(net->conn, network->def) < 0) + if (virNetworkGetAutostartEnsureACL(net->conn, obj->def) < 0) goto cleanup; - *autostart = network->autostart; + *autostart = obj->autostart; ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -3993,18 +3987,18 @@ networkSetAutostart(virNetworkPtr net, int autostart) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network; + virNetworkObjPtr obj; char *configFile = NULL, *autostartLink = NULL; int ret = -1; - if (!(network = networkObjFromNetwork(net))) + if (!(obj = networkObjFromNetwork(net))) goto cleanup; - if (virNetworkSetAutostartEnsureACL(net->conn, network->def) < 0) + if (virNetworkSetAutostartEnsureACL(net->conn, obj->def) < 0) goto cleanup; - if (!network->persistent) { + if (!obj->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot set autostart for transient network")); goto cleanup; @@ -4012,10 +4006,10 @@ networkSetAutostart(virNetworkPtr net, autostart = (autostart != 0); - if (network->autostart != autostart) { - if ((configFile = virNetworkConfigFile(driver->networkConfigDir, network->def->name)) == NULL) + if (obj->autostart != autostart) { + if ((configFile = virNetworkConfigFile(driver->networkConfigDir, obj->def->name)) == NULL) goto cleanup; - if ((autostartLink = virNetworkConfigFile(driver->networkAutostartDir, network->def->name)) == NULL) + if ((autostartLink = virNetworkConfigFile(driver->networkAutostartDir, obj->def->name)) == NULL) goto cleanup; if (autostart) { @@ -4041,20 +4035,20 @@ networkSetAutostart(virNetworkPtr net, } } - network->autostart = autostart; + obj->autostart = autostart; } ret = 0; cleanup: VIR_FREE(configFile); VIR_FREE(autostartLink); - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } static int -networkGetDHCPLeases(virNetworkPtr network, +networkGetDHCPLeases(virNetworkPtr net, const char *mac, virNetworkDHCPLeasePtr **leases, unsigned int flags) @@ -4089,10 +4083,10 @@ networkGetDHCPLeases(virNetworkPtr network, return -1; } - if (!(obj = networkObjFromNetwork(network))) + if (!(obj = networkObjFromNetwork(net))) return -1; - if (virNetworkGetDHCPLeasesEnsureACL(network->conn, obj->def) < 0) + if (virNetworkGetDHCPLeasesEnsureACL(net->conn, obj->def) < 0) goto cleanup; /* Retrieve custom leases file location */ @@ -4351,7 +4345,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, { virNetworkDriverStatePtr driver = networkGetDriver(); virDomainNetType actualType = iface->type; - virNetworkObjPtr network = NULL; + virNetworkObjPtr obj = NULL; virNetworkDefPtr netdef = NULL; virNetDevBandwidthPtr bandwidth = NULL; virPortGroupDefPtr portgroup = NULL; @@ -4367,16 +4361,16 @@ networkAllocateActualDevice(virDomainDefPtr dom, virDomainActualNetDefFree(iface->data.network.actual); iface->data.network.actual = NULL; - network = virNetworkObjFindByName(driver->networks, iface->data.network.name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, iface->data.network.name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), iface->data.network.name); goto error; } - netdef = network->def; + netdef = obj->def; - if (!virNetworkObjIsActive(network)) { + if (!virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("network '%s' is not active"), netdef->name); @@ -4448,7 +4442,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, iface->data.network.actual->data.bridge.macTableManager = netdef->macTableManager; - if (networkPlugBandwidth(network, iface) < 0) + if (networkPlugBandwidth(obj, iface) < 0) goto error; } else if ((netdef->forward.type == VIR_NETWORK_FORWARD_BRIDGE) && @@ -4669,7 +4663,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, } } - if (networkMacMgrAdd(driver, network, dom->name, &iface->mac) < 0) + if (networkMacMgrAdd(driver, obj, dom->name, &iface->mac) < 0) goto error; if (virNetDevVPortProfileCheckComplete(virtport, true) < 0) @@ -4727,7 +4721,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, if (dev) dev->connections++; /* finally we can call the 'plugged' hook script if any */ - if (networkRunHook(network, dom, iface, + if (networkRunHook(obj, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_PLUGGED, VIR_HOOK_SUBOP_BEGIN) < 0) { /* adjust for failure */ @@ -4742,7 +4736,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; error: @@ -4772,7 +4766,7 @@ networkNotifyActualDevice(virDomainDefPtr dom, { virNetworkDriverStatePtr driver = networkGetDriver(); virDomainNetType actualType = virDomainNetGetActualType(iface); - virNetworkObjPtr network; + virNetworkObjPtr obj; virNetworkDefPtr netdef; virNetworkForwardIfDefPtr dev = NULL; size_t i; @@ -4781,16 +4775,16 @@ networkNotifyActualDevice(virDomainDefPtr dom, if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK) return; - network = virNetworkObjFindByName(driver->networks, iface->data.network.name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, iface->data.network.name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), iface->data.network.name); goto error; } - netdef = network->def; + netdef = obj->def; - if (!virNetworkObjIsActive(network)) { + if (!virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("network '%s' is not active"), netdef->name); @@ -4952,7 +4946,7 @@ networkNotifyActualDevice(virDomainDefPtr dom, if (dev) dev->connections++; /* finally we can call the 'plugged' hook script if any */ - if (networkRunHook(network, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_PLUGGED, + if (networkRunHook(obj, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_PLUGGED, VIR_HOOK_SUBOP_BEGIN) < 0) { /* adjust for failure */ if (dev) @@ -4963,7 +4957,7 @@ networkNotifyActualDevice(virDomainDefPtr dom, networkLogAllocation(netdef, actualType, dev, iface, true); cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); VIR_FREE(master); return; @@ -4989,7 +4983,7 @@ networkReleaseActualDevice(virDomainDefPtr dom, { virNetworkDriverStatePtr driver = networkGetDriver(); virDomainNetType actualType = virDomainNetGetActualType(iface); - virNetworkObjPtr network; + virNetworkObjPtr obj; virNetworkDefPtr netdef; virNetworkForwardIfDefPtr dev = NULL; size_t i; @@ -4998,21 +4992,21 @@ networkReleaseActualDevice(virDomainDefPtr dom, if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK) return 0; - network = virNetworkObjFindByName(driver->networks, iface->data.network.name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, iface->data.network.name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), iface->data.network.name); goto error; } - netdef = network->def; + netdef = obj->def; if (iface->data.network.actual && (netdef->forward.type == VIR_NETWORK_FORWARD_NONE || netdef->forward.type == VIR_NETWORK_FORWARD_NAT || netdef->forward.type == VIR_NETWORK_FORWARD_ROUTE || netdef->forward.type == VIR_NETWORK_FORWARD_OPEN) && - networkUnplugBandwidth(network, iface) < 0) + networkUnplugBandwidth(obj, iface) < 0) goto error; if ((!iface->data.network.actual) || @@ -5091,20 +5085,20 @@ networkReleaseActualDevice(virDomainDefPtr dom, } success: - networkMacMgrDel(driver, network, dom->name, &iface->mac); + networkMacMgrDel(driver, obj, dom->name, &iface->mac); if (iface->data.network.actual) { netdef->connections--; if (dev) dev->connections--; /* finally we can call the 'unplugged' hook script if any */ - networkRunHook(network, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_UNPLUGGED, + networkRunHook(obj, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_UNPLUGGED, VIR_HOOK_SUBOP_BEGIN); networkLogAllocation(netdef, actualType, dev, iface, false); } ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK) { virDomainActualNetDefFree(iface->data.network.actual); iface->data.network.actual = NULL; @@ -5141,7 +5135,7 @@ networkGetNetworkAddress(const char *netname, { virNetworkDriverStatePtr driver = networkGetDriver(); int ret = -1; - virNetworkObjPtr network; + virNetworkObjPtr obj; virNetworkDefPtr netdef; virNetworkIPDefPtr ipdef; virSocketAddr addr; @@ -5149,14 +5143,14 @@ networkGetNetworkAddress(const char *netname, char *dev_name = NULL; *netaddr = NULL; - network = virNetworkObjFindByName(driver->networks, netname); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, netname); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), netname); goto cleanup; } - netdef = network->def; + netdef = obj->def; switch (netdef->forward.type) { case VIR_NETWORK_FORWARD_NONE: @@ -5210,7 +5204,7 @@ networkGetNetworkAddress(const char *netname, ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -5228,7 +5222,7 @@ int networkGetActualType(virDomainNetDefPtr iface) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network = NULL; + virNetworkObjPtr obj = NULL; virNetworkDefPtr netdef = NULL; int ret = -1; @@ -5238,14 +5232,14 @@ networkGetActualType(virDomainNetDefPtr iface) if (iface->data.network.actual) return iface->data.network.actual->type; - network = virNetworkObjFindByName(driver->networks, iface->data.network.name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, iface->data.network.name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), iface->data.network.name); return -1; } - netdef = network->def; + netdef = obj->def; if ((netdef->forward.type == VIR_NETWORK_FORWARD_NONE) || (netdef->forward.type == VIR_NETWORK_FORWARD_NAT) || @@ -5283,7 +5277,7 @@ networkGetActualType(virDomainNetDefPtr iface) } - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -5309,15 +5303,15 @@ networkGetActualType(virDomainNetDefPtr iface) * 1 if no QoS is set (@new_rate untouched) */ static int -networkCheckBandwidth(virNetworkObjPtr net, +networkCheckBandwidth(virNetworkObjPtr obj, virNetDevBandwidthPtr ifaceBand, virNetDevBandwidthPtr oldBandwidth, virMacAddr ifaceMac, unsigned long long *new_rate) { int ret = -1; - virNetDevBandwidthPtr netBand = net->def->bandwidth; - unsigned long long tmp_floor_sum = net->floor_sum; + virNetDevBandwidthPtr netBand = obj->def->bandwidth; + unsigned long long tmp_floor_sum = obj->floor_sum; unsigned long long tmp_new_rate = 0; char ifmac[VIR_MAC_STRING_BUFLEN]; @@ -5328,7 +5322,7 @@ networkCheckBandwidth(virNetworkObjPtr net, virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("Invalid use of 'floor' on interface with MAC " "address %s - network '%s' has no inbound QoS set"), - ifmac, net->def->name); + ifmac, obj->def->name); return -1; } @@ -5353,8 +5347,8 @@ networkCheckBandwidth(virNetworkObjPtr net, _("Cannot plug '%s' interface into '%s' because it " "would overcommit 'peak' on network '%s'"), ifmac, - net->def->bridge, - net->def->name); + obj->def->bridge, + obj->def->name); goto cleanup; } } else if (tmp_floor_sum > netBand->in->average) { @@ -5364,8 +5358,8 @@ networkCheckBandwidth(virNetworkObjPtr net, _("Cannot plug '%s' interface into '%s' because it " "would overcommit 'average' on network '%s'"), ifmac, - net->def->bridge, - net->def->name); + obj->def->bridge, + obj->def->name); goto cleanup; } @@ -5389,13 +5383,13 @@ networkCheckBandwidth(virNetworkObjPtr net, * Returns next free class ID or -1 if none is available. */ static ssize_t -networkNextClassID(virNetworkObjPtr net) +networkNextClassID(virNetworkObjPtr obj) { ssize_t ret = 0; - ret = virBitmapNextClearBit(net->class_id, -1); + ret = virBitmapNextClearBit(obj->class_id, -1); - if (ret < 0 || virBitmapSetBit(net->class_id, ret) < 0) + if (ret < 0 || virBitmapSetBit(obj->class_id, ret) < 0) return -1; return ret; @@ -5403,7 +5397,7 @@ networkNextClassID(virNetworkObjPtr net) static int -networkPlugBandwidthImpl(virNetworkObjPtr net, +networkPlugBandwidthImpl(virNetworkObjPtr obj, virDomainNetDefPtr iface, virNetDevBandwidthPtr ifaceBand, unsigned long long new_rate) @@ -5414,37 +5408,37 @@ networkPlugBandwidthImpl(virNetworkObjPtr net, int ret = -1; /* generate new class_id */ - if ((class_id = networkNextClassID(net)) < 0) { + if ((class_id = networkNextClassID(obj)) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not generate next class ID")); goto cleanup; } - plug_ret = virNetDevBandwidthPlug(net->def->bridge, net->def->bandwidth, + plug_ret = virNetDevBandwidthPlug(obj->def->bridge, obj->def->bandwidth, &iface->mac, ifaceBand, class_id); if (plug_ret < 0) { - ignore_value(virNetDevBandwidthUnplug(net->def->bridge, class_id)); + ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); goto cleanup; } /* QoS was set, generate new class ID */ iface->data.network.actual->class_id = class_id; /* update sum of 'floor'-s of attached NICs */ - net->floor_sum += ifaceBand->in->floor; + obj->floor_sum += ifaceBand->in->floor; /* update status file */ - if (virNetworkObjSaveStatus(driver->stateDir, net) < 0) { - ignore_value(virBitmapClearBit(net->class_id, class_id)); - net->floor_sum -= ifaceBand->in->floor; + if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { + ignore_value(virBitmapClearBit(obj->class_id, class_id)); + obj->floor_sum -= ifaceBand->in->floor; iface->data.network.actual->class_id = 0; - ignore_value(virNetDevBandwidthUnplug(net->def->bridge, class_id)); + ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); goto cleanup; } /* update rate for non guaranteed NICs */ - new_rate -= net->floor_sum; - if (virNetDevBandwidthUpdateRate(net->def->bridge, 2, - net->def->bandwidth, new_rate) < 0) + new_rate -= obj->floor_sum; + if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, + obj->def->bandwidth, new_rate) < 0) VIR_WARN("Unable to update rate for 1:2 class on %s bridge", - net->def->bridge); + obj->def->bridge); ret = 0; cleanup: @@ -5453,7 +5447,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr net, static int -networkPlugBandwidth(virNetworkObjPtr net, +networkPlugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface) { int ret = -1; @@ -5462,7 +5456,7 @@ networkPlugBandwidth(virNetworkObjPtr net, char ifmac[VIR_MAC_STRING_BUFLEN]; virNetDevBandwidthPtr ifaceBand = virDomainNetGetActualBandwidth(iface); - if ((plug_ret = networkCheckBandwidth(net, ifaceBand, NULL, + if ((plug_ret = networkCheckBandwidth(obj, ifaceBand, NULL, iface->mac, &new_rate)) < 0) { /* helper reported error */ goto cleanup; @@ -5483,7 +5477,7 @@ networkPlugBandwidth(virNetworkObjPtr net, goto cleanup; } - if (networkPlugBandwidthImpl(net, iface, ifaceBand, new_rate) < 0) + if (networkPlugBandwidthImpl(obj, iface, ifaceBand, new_rate) < 0) goto cleanup; ret = 0; @@ -5494,7 +5488,7 @@ networkPlugBandwidth(virNetworkObjPtr net, static int -networkUnplugBandwidth(virNetworkObjPtr net, +networkUnplugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface) { virNetworkDriverStatePtr driver = networkGetDriver(); @@ -5504,39 +5498,39 @@ networkUnplugBandwidth(virNetworkObjPtr net, if (iface->data.network.actual && iface->data.network.actual->class_id) { - if (!net->def->bandwidth || !net->def->bandwidth->in) { + if (!obj->def->bandwidth || !obj->def->bandwidth->in) { VIR_WARN("Network %s has no bandwidth but unplug requested", - net->def->name); + obj->def->name); goto cleanup; } /* we must remove class from bridge */ - new_rate = net->def->bandwidth->in->average; + new_rate = obj->def->bandwidth->in->average; - if (net->def->bandwidth->in->peak > 0) - new_rate = net->def->bandwidth->in->peak; + if (obj->def->bandwidth->in->peak > 0) + new_rate = obj->def->bandwidth->in->peak; - ret = virNetDevBandwidthUnplug(net->def->bridge, + ret = virNetDevBandwidthUnplug(obj->def->bridge, iface->data.network.actual->class_id); if (ret < 0) goto cleanup; /* update sum of 'floor'-s of attached NICs */ - net->floor_sum -= ifaceBand->in->floor; + obj->floor_sum -= ifaceBand->in->floor; /* return class ID */ - ignore_value(virBitmapClearBit(net->class_id, + ignore_value(virBitmapClearBit(obj->class_id, iface->data.network.actual->class_id)); /* update status file */ - if (virNetworkObjSaveStatus(driver->stateDir, net) < 0) { - net->floor_sum += ifaceBand->in->floor; - ignore_value(virBitmapSetBit(net->class_id, + if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { + obj->floor_sum += ifaceBand->in->floor; + ignore_value(virBitmapSetBit(obj->class_id, iface->data.network.actual->class_id)); goto cleanup; } /* update rate for non guaranteed NICs */ - new_rate -= net->floor_sum; - if (virNetDevBandwidthUpdateRate(net->def->bridge, 2, - net->def->bandwidth, new_rate) < 0) + new_rate -= obj->floor_sum; + if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, + obj->def->bandwidth, new_rate) < 0) VIR_WARN("Unable to update rate for 1:2 class on %s bridge", - net->def->bridge); + obj->def->bridge); /* no class is associated any longer */ iface->data.network.actual->class_id = 0; } @@ -5547,15 +5541,15 @@ networkUnplugBandwidth(virNetworkObjPtr net, static void -networkNetworkObjTaint(virNetworkObjPtr net, +networkNetworkObjTaint(virNetworkObjPtr obj, virNetworkTaintFlags taint) { - if (virNetworkObjTaint(net, taint)) { + if (virNetworkObjTaint(obj, taint)) { char uuidstr[VIR_UUID_STRING_BUFLEN]; - virUUIDFormat(net->def->uuid, uuidstr); + virUUIDFormat(obj->def->uuid, uuidstr); VIR_WARN("Network name='%s' uuid=%s is tainted: %s", - net->def->name, + obj->def->name, uuidstr, virNetworkTaintTypeToString(taint)); } @@ -5592,28 +5586,28 @@ networkBandwidthChangeAllowed(virDomainNetDefPtr iface, virNetDevBandwidthPtr newBandwidth) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network = NULL; + virNetworkObjPtr obj = NULL; virNetDevBandwidthPtr ifaceBand = virDomainNetGetActualBandwidth(iface); bool ret = false; if (!networkBandwidthGenericChecks(iface, newBandwidth)) return true; - network = virNetworkObjFindByName(driver->networks, iface->data.network.name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, iface->data.network.name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), iface->data.network.name); return false; } - if (networkCheckBandwidth(network, newBandwidth, ifaceBand, iface->mac, NULL) < 0) + if (networkCheckBandwidth(obj, newBandwidth, ifaceBand, iface->mac, NULL) < 0) goto cleanup; ret = true; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -5623,7 +5617,7 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, virNetDevBandwidthPtr newBandwidth) { virNetworkDriverStatePtr driver = networkGetDriver(); - virNetworkObjPtr network = NULL; + virNetworkObjPtr obj = NULL; virNetDevBandwidthPtr ifaceBand = virDomainNetGetActualBandwidth(iface); unsigned long long new_rate = 0; int plug_ret; @@ -5632,15 +5626,15 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, if (!networkBandwidthGenericChecks(iface, newBandwidth)) return 0; - network = virNetworkObjFindByName(driver->networks, iface->data.network.name); - if (!network) { + obj = virNetworkObjFindByName(driver->networks, iface->data.network.name); + if (!obj) { virReportError(VIR_ERR_NO_NETWORK, _("no network with matching name '%s'"), iface->data.network.name); return ret; } - if ((plug_ret = networkCheckBandwidth(network, newBandwidth, ifaceBand, + if ((plug_ret = networkCheckBandwidth(obj, newBandwidth, ifaceBand, iface->mac, &new_rate)) < 0) { /* helper reported error */ goto cleanup; @@ -5658,43 +5652,43 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, newBandwidth->in && newBandwidth->in->floor) { /* Either we just need to update @floor .. */ - if (virNetDevBandwidthUpdateRate(network->def->bridge, + if (virNetDevBandwidthUpdateRate(obj->def->bridge, iface->data.network.actual->class_id, - network->def->bandwidth, + obj->def->bandwidth, newBandwidth->in->floor) < 0) goto cleanup; - network->floor_sum -= ifaceBand->in->floor; - network->floor_sum += newBandwidth->in->floor; - new_rate -= network->floor_sum; + obj->floor_sum -= ifaceBand->in->floor; + obj->floor_sum += newBandwidth->in->floor; + new_rate -= obj->floor_sum; - if (virNetDevBandwidthUpdateRate(network->def->bridge, 2, - network->def->bandwidth, new_rate) < 0 || - virNetworkObjSaveStatus(driver->stateDir, network) < 0) { + if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, + obj->def->bandwidth, new_rate) < 0 || + virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { /* Ouch, rollback */ - network->floor_sum -= newBandwidth->in->floor; - network->floor_sum += ifaceBand->in->floor; + obj->floor_sum -= newBandwidth->in->floor; + obj->floor_sum += ifaceBand->in->floor; - ignore_value(virNetDevBandwidthUpdateRate(network->def->bridge, + ignore_value(virNetDevBandwidthUpdateRate(obj->def->bridge, iface->data.network.actual->class_id, - network->def->bandwidth, + obj->def->bandwidth, ifaceBand->in->floor)); goto cleanup; } } else if (newBandwidth->in && newBandwidth->in->floor) { /* .. or we need to plug in new .. */ - if (networkPlugBandwidthImpl(network, iface, newBandwidth, new_rate) < 0) + if (networkPlugBandwidthImpl(obj, iface, newBandwidth, new_rate) < 0) goto cleanup; } else { /* .. or unplug old. */ - if (networkUnplugBandwidth(network, iface) < 0) + if (networkUnplugBandwidth(obj, iface) < 0) goto cleanup; } ret = 0; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h index 7832b60..6d9aece 100644 --- a/src/network/bridge_driver.h +++ b/src/network/bridge_driver.h @@ -31,37 +31,49 @@ # include "virdnsmasq.h" # include "virnetworkobj.h" -int networkRegister(void); +int +networkRegister(void); # if WITH_NETWORK -int networkAllocateActualDevice(virDomainDefPtr dom, - virDomainNetDefPtr iface) +int +networkAllocateActualDevice(virDomainDefPtr dom, + virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -void networkNotifyActualDevice(virDomainDefPtr dom, - virDomainNetDefPtr iface) + +void +networkNotifyActualDevice(virDomainDefPtr dom, + virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -int networkReleaseActualDevice(virDomainDefPtr dom, - virDomainNetDefPtr iface) + +int +networkReleaseActualDevice(virDomainDefPtr dom, + virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -int networkGetNetworkAddress(const char *netname, char **netaddr) +int +networkGetNetworkAddress(const char *netname, + char **netaddr) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -int networkGetActualType(virDomainNetDefPtr iface) +int +networkGetActualType(virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1); -int networkDnsmasqConfContents(virNetworkObjPtr network, - const char *pidfile, - char **configstr, - dnsmasqContext *dctx, - dnsmasqCapsPtr caps); +int +networkDnsmasqConfContents(virNetworkObjPtr obj, + const char *pidfile, + char **configstr, + dnsmasqContext *dctx, + dnsmasqCapsPtr caps); -bool networkBandwidthChangeAllowed(virDomainNetDefPtr iface, - virNetDevBandwidthPtr newBandwidth) +bool +networkBandwidthChangeAllowed(virDomainNetDefPtr iface, + virNetDevBandwidthPtr newBandwidth) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -int networkBandwidthUpdate(virDomainNetDefPtr iface, - virNetDevBandwidthPtr newBandwidth) +int +networkBandwidthUpdate(virDomainNetDefPtr iface, + virNetDevBandwidthPtr newBandwidth) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); # else @@ -80,7 +92,7 @@ networkNotifyActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED, static inline int networkReleaseActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED, - virDomainNetDefPtr iface ATTRIBUTE_UNUSED) + virDomainNetDefPtr iface ATTRIBUTE_UNUSED) { return 0; } -- 2.9.3

On Fri, May 19, 2017 at 09:03:12AM -0400, John Ferlan wrote:
Use @obj for a virNetworkObjPtr
Use @net for a virNetworkPtr
Clean up the bridge_driver.h
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/network/bridge_driver.c | 966 ++++++++++++++++++++++---------------------- src/network/bridge_driver.h | 50 ++- 2 files changed, 511 insertions(+), 505 deletions(-)
[...]
diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h index 7832b60..6d9aece 100644 --- a/src/network/bridge_driver.h +++ b/src/network/bridge_driver.h @@ -31,37 +31,49 @@ # include "virdnsmasq.h" # include "virnetworkobj.h"
-int networkRegister(void); +int +networkRegister(void);
# if WITH_NETWORK -int networkAllocateActualDevice(virDomainDefPtr dom, - virDomainNetDefPtr iface) +int +networkAllocateActualDevice(virDomainDefPtr dom, + virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -void networkNotifyActualDevice(virDomainDefPtr dom, - virDomainNetDefPtr iface) + +void +networkNotifyActualDevice(virDomainDefPtr dom, + virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -int networkReleaseActualDevice(virDomainDefPtr dom, - virDomainNetDefPtr iface) + +int +networkReleaseActualDevice(virDomainDefPtr dom, + virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int networkGetNetworkAddress(const char *netname, char **netaddr) +int +networkGetNetworkAddress(const char *netname, + char **netaddr) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int networkGetActualType(virDomainNetDefPtr iface) +int +networkGetActualType(virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1);
-int networkDnsmasqConfContents(virNetworkObjPtr network, - const char *pidfile, - char **configstr, - dnsmasqContext *dctx, - dnsmasqCapsPtr caps); +int +networkDnsmasqConfContents(virNetworkObjPtr obj, + const char *pidfile, + char **configstr, + dnsmasqContext *dctx, + dnsmasqCapsPtr caps);
-bool networkBandwidthChangeAllowed(virDomainNetDefPtr iface, - virNetDevBandwidthPtr newBandwidth) +bool +networkBandwidthChangeAllowed(virDomainNetDefPtr iface, + virNetDevBandwidthPtr newBandwidth) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int networkBandwidthUpdate(virDomainNetDefPtr iface, - virNetDevBandwidthPtr newBandwidth) +int +networkBandwidthUpdate(virDomainNetDefPtr iface, + virNetDevBandwidthPtr newBandwidth) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
# else @@ -80,7 +92,7 @@ networkNotifyActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED,
static inline int networkReleaseActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED, - virDomainNetDefPtr iface ATTRIBUTE_UNUSED) + virDomainNetDefPtr iface ATTRIBUTE_UNUSED) { return 0; }
The formatting change for this file should have been part of the previous patch which is already pushed. Split the formatting change into a separate patch. The rename part is correct. Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

In preparation for having a private virNetworkObj - let's create/move some API's that handle the obj->macmap. The API's will be renamed to have a virNetworkObj prefix to follow conventions and the arguments slightly modified to accept what's necessary to complete their task. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 97 ++++++++++++++++++++++++++++++++++++++++++ src/conf/virnetworkobj.h | 26 ++++++++++++ src/libvirt_private.syms | 6 +++ src/network/bridge_driver.c | 101 ++++++++------------------------------------ 4 files changed, 147 insertions(+), 83 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 88e42b5..562fb91 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,103 @@ virNetworkObjEndAPI(virNetworkObjPtr *net) } +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj) +{ + return obj->macmap; +} + + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap) +{ + obj->macmap = macmap; +} + + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj) +{ + if (!virObjectUnref(obj->macmap)) + obj->macmap = NULL; +} + + +char * +virNetworkObjMacMgrFileName(const char *dnsmasqStateDir, + const char *bridge) +{ + char *filename; + + ignore_value(virAsprintf(&filename, "%s/%s.macs", dnsmasqStateDir, bridge)); + + return filename; +} + + +int +virNetworkObjMacMgrAdd(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + char *file = NULL; + int ret = -1; + + if (!obj->macmap) + return 0; + + virMacAddrFormat(mac, macStr); + + if (!(file = virNetworkObjMacMgrFileName(dnsmasqStateDir, obj->def->bridge))) + goto cleanup; + + if (virMacMapAdd(obj->macmap, domain, macStr) < 0) + goto cleanup; + + if (virMacMapWriteFile(obj->macmap, file) < 0) + goto cleanup; + + ret = 0; + cleanup: + VIR_FREE(file); + return ret; +} + + +int +virNetworkObjMacMgrDel(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + char *file = NULL; + int ret = -1; + + if (!obj->macmap) + return 0; + + virMacAddrFormat(mac, macStr); + + if (!(file = virNetworkObjMacMgrFileName(dnsmasqStateDir, obj->def->bridge))) + goto cleanup; + + if (virMacMapRemove(obj->macmap, domain, macStr) < 0) + goto cleanup; + + if (virMacMapWriteFile(obj->macmap, file) < 0) + goto cleanup; + + ret = 0; + cleanup: + VIR_FREE(file); + return ret; +} + + virNetworkObjListPtr virNetworkObjListNew(void) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 8090c2e..da12848 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -50,6 +50,32 @@ struct _virNetworkObj { virNetworkObjPtr virNetworkObjNew(void); +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj); + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap); + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj); + +char * +virNetworkObjMacMgrFileName(const char *dnsmasqStateDir, + const char *bridge); + +int +virNetworkObjMacMgrAdd(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac); + +int +virNetworkObjMacMgrDel(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac); + void virNetworkObjEndAPI(virNetworkObjPtr *net); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d361454..1907afe 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -931,6 +931,7 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; virNetworkObjListExport; virNetworkObjListForEach; @@ -940,12 +941,17 @@ virNetworkObjListNumOfNetworks; virNetworkObjListPrune; virNetworkObjLoadAllConfigs; virNetworkObjLoadAllState; +virNetworkObjMacMgrAdd; +virNetworkObjMacMgrDel; +virNetworkObjMacMgrFileName; virNetworkObjNew; virNetworkObjRemoveInactive; virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; virNetworkObjSetDefTransient; +virNetworkObjSetMacMap; virNetworkObjTaint; +virNetworkObjUnrefMacMap; virNetworkObjUnsetDefTransient; virNetworkObjUpdate; virNetworkObjUpdateAssignDef; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index d888391..d8d3782 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -322,18 +322,6 @@ networkRadvdConfigFileName(virNetworkDriverStatePtr driver, } -static char * -networkMacMgrFileName(virNetworkDriverStatePtr driver, - const char *bridge) -{ - char *filename; - - ignore_value(virAsprintf(&filename, "%s/%s.macs", - driver->dnsmasqStateDir, bridge)); - return filename; -} - - /* do needed cleanup steps and remove the network from the list */ static int networkRemoveInactive(virNetworkDriverStatePtr driver, @@ -375,7 +363,8 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, if (!(statusfile = virNetworkConfigFile(driver->stateDir, def->name))) goto cleanup; - if (!(macMapFile = networkMacMgrFileName(driver, def->bridge))) + if (!(macMapFile = virNetworkObjMacMgrFileName(driver->dnsmasqStateDir, + def->bridge))) goto cleanup; /* dnsmasq */ @@ -412,68 +401,6 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, } -static int -networkMacMgrAdd(virNetworkDriverStatePtr driver, - virNetworkObjPtr obj, - const char *domain, - const virMacAddr *mac) -{ - char macStr[VIR_MAC_STRING_BUFLEN]; - char *file = NULL; - int ret = -1; - - if (!obj->macmap) - return 0; - - virMacAddrFormat(mac, macStr); - - if (!(file = networkMacMgrFileName(driver, obj->def->bridge))) - goto cleanup; - - if (virMacMapAdd(obj->macmap, domain, macStr) < 0) - goto cleanup; - - if (virMacMapWriteFile(obj->macmap, file) < 0) - goto cleanup; - - ret = 0; - cleanup: - VIR_FREE(file); - return ret; -} - - -static int -networkMacMgrDel(virNetworkDriverStatePtr driver, - virNetworkObjPtr obj, - const char *domain, - const virMacAddr *mac) -{ - char macStr[VIR_MAC_STRING_BUFLEN]; - char *file = NULL; - int ret = -1; - - if (!obj->macmap) - return 0; - - virMacAddrFormat(mac, macStr); - - if (!(file = networkMacMgrFileName(driver, obj->def->bridge))) - goto cleanup; - - if (virMacMapRemove(obj->macmap, domain, macStr) < 0) - goto cleanup; - - if (virMacMapWriteFile(obj->macmap, file) < 0) - goto cleanup; - - ret = 0; - cleanup: - VIR_FREE(file); - return ret; -} - - static char * networkBridgeDummyNicName(const char *brname) { @@ -505,6 +432,7 @@ networkUpdateState(virNetworkObjPtr obj, { virNetworkDriverStatePtr driver = opaque; dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); + virMacMapPtr macmap; char *macMapFile = NULL; int ret = -1; @@ -523,12 +451,15 @@ networkUpdateState(virNetworkObjPtr obj, if (!(obj->def->bridge && virNetDevExists(obj->def->bridge) == 1)) obj->active = 0; - if (!(macMapFile = networkMacMgrFileName(driver, obj->def->bridge))) + if (!(macMapFile = virNetworkObjMacMgrFileName(driver->dnsmasqStateDir, + obj->def->bridge))) goto cleanup; - if (!(obj->macmap = virMacMapNew(macMapFile))) + if (!(macmap = virMacMapNew(macMapFile))) goto cleanup; + virNetworkObjSetMacMap(obj, macmap); + break; case VIR_NETWORK_FORWARD_BRIDGE: @@ -2332,6 +2263,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkIPDefPtr ipdef; virNetDevIPRoutePtr routedef; char *macTapIfName = NULL; + virMacMapPtr macmap; char *macMapFile = NULL; int tapfd = -1; @@ -2380,10 +2312,13 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } } - if (!(macMapFile = networkMacMgrFileName(driver, obj->def->bridge)) || - !(obj->macmap = virMacMapNew(macMapFile))) + if (!(macMapFile = virNetworkObjMacMgrFileName(driver->dnsmasqStateDir, + obj->def->bridge)) || + !(macmap = virMacMapNew(macMapFile))) goto err1; + virNetworkObjSetMacMap(obj, macmap); + /* Set bridge options */ /* delay is configured in seconds, but virNetDevBridgeSetSTPDelay @@ -2546,8 +2481,7 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, if (obj->def->bandwidth) virNetDevBandwidthClear(obj->def->bridge); - if (!virObjectUnref(obj->macmap)) - obj->macmap = NULL; + virNetworkObjUnrefMacMap(obj); if (obj->radvdPid > 0) { char *radvdpidbase; @@ -4663,7 +4597,8 @@ networkAllocateActualDevice(virDomainDefPtr dom, } } - if (networkMacMgrAdd(driver, obj, dom->name, &iface->mac) < 0) + if (virNetworkObjMacMgrAdd(obj, driver->dnsmasqStateDir, + dom->name, &iface->mac) < 0) goto error; if (virNetDevVPortProfileCheckComplete(virtport, true) < 0) @@ -5085,7 +5020,7 @@ networkReleaseActualDevice(virDomainDefPtr dom, } success: - networkMacMgrDel(driver, obj, dom->name, &iface->mac); + virNetworkObjMacMgrDel(obj, driver->dnsmasqStateDir, dom->name, &iface->mac); if (iface->data.network.actual) { netdef->connections--; -- 2.9.3

On Fri, May 19, 2017 at 09:03:13AM -0400, John Ferlan wrote:
In preparation for having a private virNetworkObj - let's create/move some API's that handle the obj->macmap. The API's will be renamed to have a virNetworkObj prefix to follow conventions and the arguments slightly modified to accept what's necessary to complete their task.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 97 ++++++++++++++++++++++++++++++++++++++++++ src/conf/virnetworkobj.h | 26 ++++++++++++ src/libvirt_private.syms | 6 +++ src/network/bridge_driver.c | 101 ++++++++------------------------------------ 4 files changed, 147 insertions(+), 83 deletions(-)
diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 88e42b5..562fb91 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,103 @@ virNetworkObjEndAPI(virNetworkObjPtr *net) }
+virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj) +{ + return obj->macmap; +} + + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap) +{ + obj->macmap = macmap; +} + + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj) +{ + if (!virObjectUnref(obj->macmap)) + obj->macmap = NULL; +}
You are just moving the code so it would be nice as a followup to fix this function. It seems kind of wrong to set obj->macmap to NULL only if it was the last reference. We should always set it to NULL because the virNetworkObjDispose() would call virObjectUnref() again. Currently it doesn't hit any issue, but if someone gets the macmap by using virNetworkObjGetMacMap() and creates its own reference, the virNetworkObjDispose() would remove the reference and possible free the macmap which would lead to crash.
+ + +char * +virNetworkObjMacMgrFileName(const char *dnsmasqStateDir, + const char *bridge) +{ + char *filename; + + ignore_value(virAsprintf(&filename, "%s/%s.macs", dnsmasqStateDir, bridge)); + + return filename; +}
This function doesn't have anything in common with the virNetworkObj so it should be moved into src/util/virmacmap.c since the output is used only by virMacMap* functions from that module. The rest of the patch seems to be correct. Pavel

Move networkMacMgrFileName into src/util/virmacmap.c and rename to virMacMapFileName. We're about to move some more MacMgr processing files into virnetworkobj and it doesn't make sense to have this helper in the driver or in virnetworkobj. Signed-off-by: John Ferlan <jferlan@redhat.com> --- NB: From review - splitting patch 5 into 3 parts. This is just the dealing with the file name patch. src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 24 +++++++----------------- src/util/virmacmap.c | 12 ++++++++++++ src/util/virmacmap.h | 4 ++++ 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d984176..6f4667f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2057,6 +2057,7 @@ virMacAddrSetRaw; # util/virmacmap.h virMacMapAdd; virMacMapDumpStr; +virMacMapFileName; virMacMapLookup; virMacMapNew; virMacMapRemove; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index fd0e6ca..de2e83c 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -322,18 +322,6 @@ networkRadvdConfigFileName(virNetworkDriverStatePtr driver, } -static char * -networkMacMgrFileName(virNetworkDriverStatePtr driver, - const char *bridge) -{ - char *filename; - - ignore_value(virAsprintf(&filename, "%s/%s.macs", - driver->dnsmasqStateDir, bridge)); - return filename; -} - - /* do needed cleanup steps and remove the network from the list */ static int networkRemoveInactive(virNetworkDriverStatePtr driver, @@ -375,7 +363,7 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, if (!(statusfile = virNetworkConfigFile(driver->stateDir, def->name))) goto cleanup; - if (!(macMapFile = networkMacMgrFileName(driver, def->bridge))) + if (!(macMapFile = virMacMapFileName(driver->dnsmasqStateDir, def->bridge))) goto cleanup; /* dnsmasq */ @@ -427,7 +415,7 @@ networkMacMgrAdd(virNetworkDriverStatePtr driver, virMacAddrFormat(mac, macStr); - if (!(file = networkMacMgrFileName(driver, obj->def->bridge))) + if (!(file = virMacMapFileName(driver->dnsmasqStateDir, obj->def->bridge))) goto cleanup; if (virMacMapAdd(obj->macmap, domain, macStr) < 0) @@ -458,7 +446,7 @@ networkMacMgrDel(virNetworkDriverStatePtr driver, virMacAddrFormat(mac, macStr); - if (!(file = networkMacMgrFileName(driver, obj->def->bridge))) + if (!(file = virMacMapFileName(driver->dnsmasqStateDir, obj->def->bridge))) goto cleanup; if (virMacMapRemove(obj->macmap, domain, macStr) < 0) @@ -523,7 +511,8 @@ networkUpdateState(virNetworkObjPtr obj, if (!(obj->def->bridge && virNetDevExists(obj->def->bridge) == 1)) obj->active = 0; - if (!(macMapFile = networkMacMgrFileName(driver, obj->def->bridge))) + if (!(macMapFile = virMacMapFileName(driver->dnsmasqStateDir, + obj->def->bridge))) goto cleanup; if (!(obj->macmap = virMacMapNew(macMapFile))) @@ -2380,7 +2369,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } } - if (!(macMapFile = networkMacMgrFileName(driver, obj->def->bridge)) || + if (!(macMapFile = virMacMapFileName(driver->dnsmasqStateDir, + obj->def->bridge)) || !(obj->macmap = virMacMapNew(macMapFile))) goto err1; diff --git a/src/util/virmacmap.c b/src/util/virmacmap.c index a9697e3..42890ba 100644 --- a/src/util/virmacmap.c +++ b/src/util/virmacmap.c @@ -294,6 +294,18 @@ virMacMapWriteFileLocked(virMacMapPtr mgr, } +char * +virMacMapFileName(const char *dnsmasqStateDir, + const char *bridge) +{ + char *filename; + + ignore_value(virAsprintf(&filename, "%s/%s.macs", dnsmasqStateDir, bridge)); + + return filename; +} + + #define VIR_MAC_HASH_TABLE_SIZE 10 virMacMapPtr diff --git a/src/util/virmacmap.h b/src/util/virmacmap.h index 82da833..e6f754e 100644 --- a/src/util/virmacmap.h +++ b/src/util/virmacmap.h @@ -27,6 +27,10 @@ typedef struct virMacMap virMacMap; typedef virMacMap *virMacMapPtr; +char * +virMacMapFileName(const char *dnsmasqStateDir, + const char *bridge); + virMacMapPtr virMacMapNew(const char *file); int virMacMapAdd(virMacMapPtr mgr, -- 2.9.4

In preparation for having a private virNetworkObj - let's create/move some API's that handle the obj->macmap. The API's will be renamed to have a virNetworkObj prefix to follow conventions and the arguments slightly modified to accept what's necessary to complete their task. Signed-off-by: John Ferlan <jferlan@redhat.com> --- NB: From review - this is the updated changes with the virMacMapFileName already moved. src/conf/virnetworkobj.c | 85 +++++++++++++++++++++++++++++++++++++++++++++ src/conf/virnetworkobj.h | 22 ++++++++++++ src/libvirt_private.syms | 5 +++ src/network/bridge_driver.c | 80 +++++++----------------------------------- 4 files changed, 124 insertions(+), 68 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index ccde72e..5578ac3 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,91 @@ virNetworkObjEndAPI(virNetworkObjPtr *net) } +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj) +{ + return obj->macmap; +} + + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap) +{ + obj->macmap = macmap; +} + + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj) +{ + if (!virObjectUnref(obj->macmap)) + obj->macmap = NULL; +} + + +int +virNetworkObjMacMgrAdd(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + char *file = NULL; + int ret = -1; + + if (!obj->macmap) + return 0; + + virMacAddrFormat(mac, macStr); + + if (!(file = virMacMapFileName(dnsmasqStateDir, obj->def->bridge))) + goto cleanup; + + if (virMacMapAdd(obj->macmap, domain, macStr) < 0) + goto cleanup; + + if (virMacMapWriteFile(obj->macmap, file) < 0) + goto cleanup; + + ret = 0; + cleanup: + VIR_FREE(file); + return ret; +} + + +int +virNetworkObjMacMgrDel(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + char *file = NULL; + int ret = -1; + + if (!obj->macmap) + return 0; + + virMacAddrFormat(mac, macStr); + + if (!(file = virMacMapFileName(dnsmasqStateDir, obj->def->bridge))) + goto cleanup; + + if (virMacMapRemove(obj->macmap, domain, macStr) < 0) + goto cleanup; + + if (virMacMapWriteFile(obj->macmap, file) < 0) + goto cleanup; + + ret = 0; + cleanup: + VIR_FREE(file); + return ret; +} + + virNetworkObjListPtr virNetworkObjListNew(void) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 8090c2e..5c3d9a0 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -50,6 +50,28 @@ struct _virNetworkObj { virNetworkObjPtr virNetworkObjNew(void); +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj); + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap); + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj); + +int +virNetworkObjMacMgrAdd(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac); + +int +virNetworkObjMacMgrDel(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac); + void virNetworkObjEndAPI(virNetworkObjPtr *net); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6f4667f..0eb5749 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -943,6 +943,7 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; virNetworkObjListExport; virNetworkObjListForEach; @@ -952,12 +953,16 @@ virNetworkObjListNumOfNetworks; virNetworkObjListPrune; virNetworkObjLoadAllConfigs; virNetworkObjLoadAllState; +virNetworkObjMacMgrAdd; +virNetworkObjMacMgrDel; virNetworkObjNew; virNetworkObjRemoveInactive; virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; virNetworkObjSetDefTransient; +virNetworkObjSetMacMap; virNetworkObjTaint; +virNetworkObjUnrefMacMap; virNetworkObjUnsetDefTransient; virNetworkObjUpdate; virNetworkObjUpdateAssignDef; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index de2e83c..a730742 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -400,68 +400,6 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, } -static int -networkMacMgrAdd(virNetworkDriverStatePtr driver, - virNetworkObjPtr obj, - const char *domain, - const virMacAddr *mac) -{ - char macStr[VIR_MAC_STRING_BUFLEN]; - char *file = NULL; - int ret = -1; - - if (!obj->macmap) - return 0; - - virMacAddrFormat(mac, macStr); - - if (!(file = virMacMapFileName(driver->dnsmasqStateDir, obj->def->bridge))) - goto cleanup; - - if (virMacMapAdd(obj->macmap, domain, macStr) < 0) - goto cleanup; - - if (virMacMapWriteFile(obj->macmap, file) < 0) - goto cleanup; - - ret = 0; - cleanup: - VIR_FREE(file); - return ret; -} - - -static int -networkMacMgrDel(virNetworkDriverStatePtr driver, - virNetworkObjPtr obj, - const char *domain, - const virMacAddr *mac) -{ - char macStr[VIR_MAC_STRING_BUFLEN]; - char *file = NULL; - int ret = -1; - - if (!obj->macmap) - return 0; - - virMacAddrFormat(mac, macStr); - - if (!(file = virMacMapFileName(driver->dnsmasqStateDir, obj->def->bridge))) - goto cleanup; - - if (virMacMapRemove(obj->macmap, domain, macStr) < 0) - goto cleanup; - - if (virMacMapWriteFile(obj->macmap, file) < 0) - goto cleanup; - - ret = 0; - cleanup: - VIR_FREE(file); - return ret; -} - - static char * networkBridgeDummyNicName(const char *brname) { @@ -493,6 +431,7 @@ networkUpdateState(virNetworkObjPtr obj, { virNetworkDriverStatePtr driver = opaque; dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); + virMacMapPtr macmap; char *macMapFile = NULL; int ret = -1; @@ -515,9 +454,11 @@ networkUpdateState(virNetworkObjPtr obj, obj->def->bridge))) goto cleanup; - if (!(obj->macmap = virMacMapNew(macMapFile))) + if (!(macmap = virMacMapNew(macMapFile))) goto cleanup; + virNetworkObjSetMacMap(obj, macmap); + break; case VIR_NETWORK_FORWARD_BRIDGE: @@ -2321,6 +2262,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkIPDefPtr ipdef; virNetDevIPRoutePtr routedef; char *macTapIfName = NULL; + virMacMapPtr macmap; char *macMapFile = NULL; int tapfd = -1; @@ -2371,9 +2313,11 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, if (!(macMapFile = virMacMapFileName(driver->dnsmasqStateDir, obj->def->bridge)) || - !(obj->macmap = virMacMapNew(macMapFile))) + !(macmap = virMacMapNew(macMapFile))) goto err1; + virNetworkObjSetMacMap(obj, macmap); + /* Set bridge options */ /* delay is configured in seconds, but virNetDevBridgeSetSTPDelay @@ -2536,8 +2480,7 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, if (obj->def->bandwidth) virNetDevBandwidthClear(obj->def->bridge); - if (!virObjectUnref(obj->macmap)) - obj->macmap = NULL; + virNetworkObjUnrefMacMap(obj); if (obj->radvdPid > 0) { char *radvdpidbase; @@ -4653,7 +4596,8 @@ networkAllocateActualDevice(virDomainDefPtr dom, } } - if (networkMacMgrAdd(driver, obj, dom->name, &iface->mac) < 0) + if (virNetworkObjMacMgrAdd(obj, driver->dnsmasqStateDir, + dom->name, &iface->mac) < 0) goto error; if (virNetDevVPortProfileCheckComplete(virtport, true) < 0) @@ -5075,7 +5019,7 @@ networkReleaseActualDevice(virDomainDefPtr dom, } success: - networkMacMgrDel(driver, obj, dom->name, &iface->mac); + virNetworkObjMacMgrDel(obj, driver->dnsmasqStateDir, dom->name, &iface->mac); if (iface->data.network.actual) { netdef->connections--; -- 2.9.4

Since we can only ever have one reference to obj->macmap, rather than only clearing obj->macmap during virNetworkObjUnrefMacMap (e.g. virtual network from networkShutdownNetwork), let's just unconditionally clear the obj->macmap to ensure that some future change that created it's own reference to obj->macmap wouldn't have that reference disappear if virNetworkObjDispose got called. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 5578ac3..bb7225c 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -125,8 +125,8 @@ virNetworkObjSetMacMap(virNetworkObjPtr obj, void virNetworkObjUnrefMacMap(virNetworkObjPtr obj) { - if (!virObjectUnref(obj->macmap)) - obj->macmap = NULL; + virObjectUnref(obj->macmap); + obj->macmap = NULL; } -- 2.9.4

In preparation for making the object private, create/use a couple of API's to get/set the obj->dnsmasqPid and obj->radvdPid. NB: Since the pid's can sometimes changed based on intervening functions, be sure to always fetch the latest value. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 30 ++++++++++++++ src/conf/virnetworkobj.h | 14 +++++++ src/libvirt_private.syms | 4 ++ src/network/bridge_driver.c | 96 ++++++++++++++++++++++++++++----------------- 4 files changed, 109 insertions(+), 35 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 562fb91..e44684a 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,36 @@ virNetworkObjEndAPI(virNetworkObjPtr *net) } +pid_t +virNetworkObjGetDnsmasqPid(virNetworkObjPtr obj) +{ + return obj->dnsmasqPid; +} + + +void +virNetworkObjSetDnsmasqPid(virNetworkObjPtr obj, + pid_t dnsmasqPid) +{ + obj->dnsmasqPid = dnsmasqPid; +} + + +pid_t +virNetworkObjGetRadvdPid(virNetworkObjPtr obj) +{ + return obj->radvdPid; +} + + +void +virNetworkObjSetRadvdPid(virNetworkObjPtr obj, + pid_t radvdPid) +{ + obj->radvdPid = radvdPid; +} + + virMacMapPtr virNetworkObjGetMacMap(virNetworkObjPtr obj) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index da12848..9323692 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -53,6 +53,20 @@ virNetworkObjNew(void); virMacMapPtr virNetworkObjGetMacMap(virNetworkObjPtr obj); +pid_t +virNetworkObjGetDnsmasqPid(virNetworkObjPtr obj); + +void +virNetworkObjSetDnsmasqPid(virNetworkObjPtr obj, + pid_t dnsmasqPid); + +pid_t +virNetworkObjGetRadvdPid(virNetworkObjPtr obj); + +void +virNetworkObjSetRadvdPid(virNetworkObjPtr obj, + pid_t radvdPid); + void virNetworkObjSetMacMap(virNetworkObjPtr obj, virMacMapPtr macmap); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 1907afe..56b969c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -931,8 +931,10 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetDnsmasqPid; virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; +virNetworkObjGetRadvdPid; virNetworkObjListExport; virNetworkObjListForEach; virNetworkObjListGetNames; @@ -949,7 +951,9 @@ virNetworkObjRemoveInactive; virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; virNetworkObjSetDefTransient; +virNetworkObjSetDnsmasqPid; virNetworkObjSetMacMap; +virNetworkObjSetRadvdPid; virNetworkObjTaint; virNetworkObjUnrefMacMap; virNetworkObjUnsetDefTransient; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index d8d3782..31a3d40 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -485,12 +485,15 @@ networkUpdateState(virNetworkObjPtr obj, /* Try and read dnsmasq/radvd pids of active networks */ if (obj->active && obj->def->ips && (obj->def->nips > 0)) { + pid_t radvdPid; + pid_t dnsmasqPid; char *radvdpidbase; ignore_value(virPidFileReadIfAlive(driver->pidDir, obj->def->name, - &obj->dnsmasqPid, + &dnsmasqPid, dnsmasqCapsGetBinaryPath(dnsmasq_caps))); + virNetworkObjSetDnsmasqPid(obj, dnsmasqPid); radvdpidbase = networkRadvdPidfileBasename(obj->def->name); if (!radvdpidbase) @@ -498,7 +501,8 @@ networkUpdateState(virNetworkObjPtr obj, ignore_value(virPidFileReadIfAlive(driver->pidDir, radvdpidbase, - &obj->radvdPid, RADVD)); + &radvdPid, RADVD)); + virNetworkObjSetRadvdPid(obj, radvdPid); VIR_FREE(radvdpidbase); } @@ -1481,7 +1485,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, char *configstr = NULL; char *leaseshelper_path = NULL; - obj->dnsmasqPid = -1; + virNetworkObjSetDnsmasqPid(obj, -1); if (networkDnsmasqConfContents(obj, pidfile, &configstr, dctx, dnsmasq_caps) < 0) @@ -1534,6 +1538,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, bool needDnsmasq = false; virCommandPtr cmd = NULL; char *pidfile = NULL; + pid_t dnsmasqPid; int ret = -1; dnsmasqContext *dctx = NULL; @@ -1602,9 +1607,10 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, * pid */ - ret = virPidFileRead(driver->pidDir, obj->def->name, &obj->dnsmasqPid); + ret = virPidFileRead(driver->pidDir, obj->def->name, &dnsmasqPid); if (ret < 0) goto cleanup; + virNetworkObjSetDnsmasqPid(obj, dnsmasqPid); ret = 0; cleanup: @@ -1628,6 +1634,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, { int ret = -1; size_t i; + pid_t dnsmasqPid; virNetworkIPDefPtr ipdef, ipv4def, ipv6def; dnsmasqContext *dctx = NULL; @@ -1636,7 +1643,8 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, return 0; /* if there's no running dnsmasq, just start it */ - if (obj->dnsmasqPid <= 0 || (kill(obj->dnsmasqPid, 0) < 0)) + dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); + if (dnsmasqPid <= 0 || (kill(dnsmasqPid, 0) < 0)) return networkStartDhcpDaemon(driver, obj); VIR_INFO("Refreshing dnsmasq for network %s", obj->def->bridge); @@ -1677,7 +1685,8 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, if ((ret = dnsmasqSave(dctx)) < 0) goto cleanup; - ret = kill(obj->dnsmasqPid, SIGHUP); + dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); + ret = kill(dnsmasqPid, SIGHUP); cleanup: dnsmasqContextFree(dctx); return ret; @@ -1695,10 +1704,12 @@ static int networkRestartDhcpDaemon(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + pid_t dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); + /* if there is a running dnsmasq, kill it */ - if (obj->dnsmasqPid > 0) { - networkKillDaemon(obj->dnsmasqPid, "dnsmasq", obj->def->name); - obj->dnsmasqPid = -1; + if (dnsmasqPid > 0) { + networkKillDaemon(dnsmasqPid, "dnsmasq", obj->def->name); + virNetworkObjSetDnsmasqPid(obj, -1); } /* now start dnsmasq if it should be started */ return networkStartDhcpDaemon(driver, obj); @@ -1838,13 +1849,14 @@ networkStartRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); + pid_t radvdPid; char *pidfile = NULL; char *radvdpidbase = NULL; char *configfile = NULL; virCommandPtr cmd = NULL; int ret = -1; - obj->radvdPid = -1; + virNetworkObjSetRadvdPid(obj, -1); /* Is dnsmasq handling RA? */ if (DNSMASQ_RA_SUPPORT(dnsmasq_caps)) { @@ -1908,8 +1920,9 @@ networkStartRadvd(virNetworkDriverStatePtr driver, if (virCommandRun(cmd, NULL) < 0) goto cleanup; - if (virPidFileRead(driver->pidDir, radvdpidbase, &obj->radvdPid) < 0) + if (virPidFileRead(driver->pidDir, radvdpidbase, &radvdPid) < 0) goto cleanup; + virNetworkObjSetRadvdPid(obj, radvdPid); ret = 0; cleanup: @@ -1928,26 +1941,29 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, { dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); char *radvdpidbase; + pid_t radvdPid; /* Is dnsmasq handling RA? */ if (DNSMASQ_RA_SUPPORT(dnsmasq_caps)) { virObjectUnref(dnsmasq_caps); - if (obj->radvdPid <= 0) + radvdPid = virNetworkObjGetRadvdPid(obj); + if (radvdPid <= 0) return 0; /* radvd should not be running but in case it is */ - if ((networkKillDaemon(obj->radvdPid, "radvd", obj->def->name) >= 0) && + if ((networkKillDaemon(radvdPid, "radvd", obj->def->name) >= 0) && ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name)) != NULL)) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); } - obj->radvdPid = -1; + virNetworkObjSetRadvdPid(obj, -1); return 0; } virObjectUnref(dnsmasq_caps); /* if there's no running radvd, just start it */ - if (obj->radvdPid <= 0 || (kill(obj->radvdPid, 0) < 0)) + radvdPid = virNetworkObjGetRadvdPid(obj); + if (radvdPid <= 0 || (kill(radvdPid, 0) < 0)) return networkStartRadvd(driver, obj); if (!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0)) { @@ -1958,7 +1974,7 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, if (networkRadvdConfWrite(driver, obj, NULL) < 0) return -1; - return kill(obj->radvdPid, SIGHUP); + return kill(radvdPid, SIGHUP); } @@ -1968,21 +1984,22 @@ static int networkRestartRadvd(virNetworkObjPtr obj) { char *radvdpidbase; + pid_t radvdPid = virNeworkObjGetRadvdPid(obj); /* if there is a running radvd, kill it */ - if (obj->radvdPid > 0) { + if (radvdPid > 0) { /* essentially ignore errors from the following two functions, * since there's really no better recovery to be done than to * just push ahead (and that may be exactly what's needed). */ - if ((networkKillDaemon(obj->radvdPid, "radvd", + if ((networkKillDaemon(radvdPid, "radvd", obj->def->name) >= 0) && ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name)) != NULL)) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); } - obj->radvdPid = -1; + virNetworkObjSetRadvdPid(obj, -1); } /* now start radvd if it should be started */ return networkStartRadvd(obj); @@ -2266,6 +2283,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virMacMapPtr macmap; char *macMapFile = NULL; int tapfd = -1; + pid_t dnsmasqPid; /* Check to see if any network IP collides with an existing route */ if (networkCheckRouteCollision(obj->def) < 0) @@ -2433,9 +2451,10 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, if (!save_err) save_err = virSaveLastError(); - if (obj->dnsmasqPid > 0) { - kill(obj->dnsmasqPid, SIGTERM); - obj->dnsmasqPid = -1; + dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); + if (dnsmasqPid > 0) { + kill(dnsmasqPid, SIGTERM); + virNetworkObjSetDnsmasqPid(obj, -1); } err3: @@ -2478,15 +2497,19 @@ static int networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + pid_t radvdPid; + pid_t dnsmasqPid; + if (obj->def->bandwidth) virNetDevBandwidthClear(obj->def->bridge); virNetworkObjUnrefMacMap(obj); - if (obj->radvdPid > 0) { + radvdPid = virNetworkObjGetRadvdPid(obj); + if (radvdPid > 0) { char *radvdpidbase; - kill(obj->radvdPid, SIGTERM); + kill(radvdPid, SIGTERM); /* attempt to delete the pidfile we created */ if ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name))) { virPidFileDelete(driver->pidDir, radvdpidbase); @@ -2494,8 +2517,9 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, } } - if (obj->dnsmasqPid > 0) - kill(obj->dnsmasqPid, SIGTERM); + dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); + if (dnsmasqPid > 0) + kill(dnsmasqPid, SIGTERM); if (obj->def->mac_specified) { char *macTapIfName = networkBridgeDummyNicName(obj->def->bridge); @@ -2513,15 +2537,17 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, ignore_value(virNetDevBridgeDelete(obj->def->bridge)); /* See if its still alive and really really kill it */ - if (obj->dnsmasqPid > 0 && - (kill(obj->dnsmasqPid, 0) == 0)) - kill(obj->dnsmasqPid, SIGKILL); - obj->dnsmasqPid = -1; - - if (obj->radvdPid > 0 && - (kill(obj->radvdPid, 0) == 0)) - kill(obj->radvdPid, SIGKILL); - obj->radvdPid = -1; + dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); + if (dnsmasqPid > 0 && + (kill(dnsmasqPid, 0) == 0)) + kill(dnsmasqPid, SIGKILL); + virNetworkObjSetDnsmasqPid(obj, -1); + + radvdPid = virNetworkObjGetRadvdPid(obj); + if (radvdPid > 0 && + (kill(radvdPid, 0) == 0)) + kill(radvdPid, SIGKILL); + virNetworkObjSetRadvdPid(obj, -1); return 0; } -- 2.9.3

On Fri, May 19, 2017 at 09:03:14AM -0400, John Ferlan wrote:
In preparation for making the object private, create/use a couple of API's to get/set the obj->dnsmasqPid and obj->radvdPid.
NB: Since the pid's can sometimes changed based on intervening functions, be sure to always fetch the latest value.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 30 ++++++++++++++ src/conf/virnetworkobj.h | 14 +++++++ src/libvirt_private.syms | 4 ++ src/network/bridge_driver.c | 96 ++++++++++++++++++++++++++++----------------- 4 files changed, 109 insertions(+), 35 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Change the variable name to be a bit more descriptive and less confusing when used with the data.network.actual->class_id. In preparation for privatizing virNetworkObj, create accessor function to fetch the @classIdMap. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 46 ++++++++++++++++++++++++++------------------- src/conf/virnetworkobj.h | 5 ++++- src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 13 ++++++++----- 4 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index e44684a..991916a 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -79,13 +79,13 @@ virNetworkObjNew(void) if (!(net = virObjectLockableNew(virNetworkObjClass))) return NULL; - if (!(net->class_id = virBitmapNew(CLASS_ID_BITMAP_SIZE))) + if (!(net->classIdMap = virBitmapNew(CLASS_ID_BITMAP_SIZE))) goto error; /* The first three class IDs are already taken */ - ignore_value(virBitmapSetBit(net->class_id, 0)); - ignore_value(virBitmapSetBit(net->class_id, 1)); - ignore_value(virBitmapSetBit(net->class_id, 2)); + ignore_value(virBitmapSetBit(net->classIdMap, 0)); + ignore_value(virBitmapSetBit(net->classIdMap, 1)); + ignore_value(virBitmapSetBit(net->classIdMap, 2)); return net; @@ -137,6 +137,13 @@ virNetworkObjSetRadvdPid(virNetworkObjPtr obj, } +virBitmapPtr +virNetworkObjGetClassIdMap(virNetworkObjPtr obj) +{ + return obj->classIdMap; +} + + virMacMapPtr virNetworkObjGetMacMap(virNetworkObjPtr obj) { @@ -388,7 +395,7 @@ virNetworkObjDispose(void *obj) virNetworkDefFree(net->def); virNetworkDefFree(net->newDef); - virBitmapFree(net->class_id); + virBitmapFree(net->classIdMap); virObjectUnref(net->macmap); } @@ -728,17 +735,17 @@ virNetworkObjFormat(virNetworkObjPtr net, unsigned int flags) { virBuffer buf = VIR_BUFFER_INITIALIZER; - char *class_id = virBitmapFormat(net->class_id); + char *classIdStr = virBitmapFormat(net->classIdMap); size_t i; - if (!class_id) + if (!classIdStr) goto error; virBufferAddLit(&buf, "<networkstatus>\n"); virBufferAdjustIndent(&buf, 2); - virBufferAsprintf(&buf, "<class_id bitmap='%s'/>\n", class_id); + virBufferAsprintf(&buf, "<class_id bitmap='%s'/>\n", classIdStr); virBufferAsprintf(&buf, "<floor sum='%llu'/>\n", net->floor_sum); - VIR_FREE(class_id); + VIR_FREE(classIdStr); for (i = 0; i < VIR_NETWORK_TAINT_LAST; i++) { if (net->taint & (1 << i)) @@ -795,7 +802,7 @@ virNetworkLoadState(virNetworkObjListPtr nets, xmlDocPtr xml = NULL; xmlNodePtr node = NULL, *nodes = NULL; xmlXPathContextPtr ctxt = NULL; - virBitmapPtr class_id_map = NULL; + virBitmapPtr classIdMap = NULL; unsigned long long floor_sum_val = 0; unsigned int taint = 0; int n; @@ -832,18 +839,19 @@ virNetworkLoadState(virNetworkObjListPtr nets, if (xmlStrEqual(node->name, BAD_CAST "networkstatus")) { /* Newer network status file. Contains useful * info which are not to be found in bare config XML */ - char *class_id = NULL; + char *classIdStr = NULL; char *floor_sum = NULL; ctxt->node = node; - if ((class_id = virXPathString("string(./class_id[1]/@bitmap)", ctxt))) { - if (virBitmapParse(class_id, &class_id_map, + if ((classIdStr = virXPathString("string(./class_id[1]/@bitmap)", + ctxt))) { + if (virBitmapParse(classIdStr, &classIdMap, CLASS_ID_BITMAP_SIZE) < 0) { - VIR_FREE(class_id); + VIR_FREE(classIdStr); goto error; } } - VIR_FREE(class_id); + VIR_FREE(classIdStr); floor_sum = virXPathString("string(./floor[1]/@sum)", ctxt); if (floor_sum && @@ -885,9 +893,9 @@ virNetworkLoadState(virNetworkObjListPtr nets, /* do not put any "goto error" below this comment */ /* assign status data stored in the network object */ - if (class_id_map) { - virBitmapFree(net->class_id); - net->class_id = class_id_map; + if (classIdMap) { + virBitmapFree(net->classIdMap); + net->classIdMap = classIdMap; } if (floor_sum_val > 0) @@ -904,7 +912,7 @@ virNetworkLoadState(virNetworkObjListPtr nets, error: VIR_FREE(nodes); - virBitmapFree(class_id_map); + virBitmapFree(classIdMap); virNetworkDefFree(def); goto cleanup; } diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 9323692..eec38e2 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -38,7 +38,7 @@ struct _virNetworkObj { virNetworkDefPtr def; /* The current definition */ virNetworkDefPtr newDef; /* New definition to activate at shutdown */ - virBitmapPtr class_id; /* bitmap of class IDs for QoS */ + virBitmapPtr classIdMap; /* bitmap of class IDs for QoS */ unsigned long long floor_sum; /* sum of all 'floor'-s of attached NICs */ unsigned int taint; @@ -67,6 +67,9 @@ void virNetworkObjSetRadvdPid(virNetworkObjPtr obj, pid_t radvdPid); +virBitmapPtr +virNetworkObjGetClassIdMap(virNetworkObjPtr obj); + void virNetworkObjSetMacMap(virNetworkObjPtr obj, virMacMapPtr macmap); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 56b969c..20ab35b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -931,6 +931,7 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetClassIdMap; virNetworkObjGetDnsmasqPid; virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 31a3d40..879901a 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -5347,10 +5347,11 @@ static ssize_t networkNextClassID(virNetworkObjPtr obj) { ssize_t ret = 0; + virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); - ret = virBitmapNextClearBit(obj->class_id, -1); + ret = virBitmapNextClearBit(classIdMap, -1); - if (ret < 0 || virBitmapSetBit(obj->class_id, ret) < 0) + if (ret < 0 || virBitmapSetBit(classIdMap, ret) < 0) return -1; return ret; @@ -5364,6 +5365,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, unsigned long long new_rate) { virNetworkDriverStatePtr driver = networkGetDriver(); + virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); ssize_t class_id = 0; int plug_ret; int ret = -1; @@ -5388,7 +5390,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, obj->floor_sum += ifaceBand->in->floor; /* update status file */ if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { - ignore_value(virBitmapClearBit(obj->class_id, class_id)); + ignore_value(virBitmapClearBit(classIdMap, class_id)); obj->floor_sum -= ifaceBand->in->floor; iface->data.network.actual->class_id = 0; ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); @@ -5452,6 +5454,7 @@ static int networkUnplugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface) { + virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); virNetworkDriverStatePtr driver = networkGetDriver(); int ret = 0; unsigned long long new_rate; @@ -5477,12 +5480,12 @@ networkUnplugBandwidth(virNetworkObjPtr obj, /* update sum of 'floor'-s of attached NICs */ obj->floor_sum -= ifaceBand->in->floor; /* return class ID */ - ignore_value(virBitmapClearBit(obj->class_id, + ignore_value(virBitmapClearBit(classIdMap, iface->data.network.actual->class_id)); /* update status file */ if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { obj->floor_sum += ifaceBand->in->floor; - ignore_value(virBitmapSetBit(obj->class_id, + ignore_value(virBitmapSetBit(classIdMap, iface->data.network.actual->class_id)); goto cleanup; } -- 2.9.3

On Fri, May 19, 2017 at 09:03:15AM -0400, John Ferlan wrote:
Change the variable name to be a bit more descriptive and less confusing when used with the data.network.actual->class_id.
In preparation for privatizing virNetworkObj, create accessor function to fetch the @classIdMap.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 46 ++++++++++++++++++++++++++------------------- src/conf/virnetworkobj.h | 5 ++++- src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 13 ++++++++----- 4 files changed, 40 insertions(+), 25 deletions(-)
This should be split into two patches, it's doing two different things, anyway Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

In preparation for making the object private, create a couple of API's to get/set the obj->floor_sum. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 15 +++++++++++++++ src/conf/virnetworkobj.h | 7 +++++++ src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 35 +++++++++++++++++++++++------------ 4 files changed, 47 insertions(+), 12 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 991916a..a848203 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -151,6 +151,21 @@ virNetworkObjGetMacMap(virNetworkObjPtr obj) } +unsigned long long +virNetworkObjGetFloorSum(virNetworkObjPtr obj) +{ + return obj->floor_sum; +} + + +void +virNetworkObjSetFloorSum(virNetworkObjPtr obj, + unsigned long long floor_sum) +{ + obj->floor_sum = floor_sum; +} + + void virNetworkObjSetMacMap(virNetworkObjPtr obj, virMacMapPtr macmap) diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index eec38e2..aa544ed 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -70,6 +70,13 @@ virNetworkObjSetRadvdPid(virNetworkObjPtr obj, virBitmapPtr virNetworkObjGetClassIdMap(virNetworkObjPtr obj); +unsigned long long +virNetworkObjGetFloorSum(virNetworkObjPtr obj); + +void +virNetworkObjSetFloorSum(virNetworkObjPtr obj, + unsigned long long floor_sum); + void virNetworkObjSetMacMap(virNetworkObjPtr obj, virMacMapPtr macmap); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 20ab35b..150b6f1 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -933,6 +933,7 @@ virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; virNetworkObjGetClassIdMap; virNetworkObjGetDnsmasqPid; +virNetworkObjGetFloorSum; virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; virNetworkObjGetRadvdPid; @@ -953,6 +954,7 @@ virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; virNetworkObjSetDefTransient; virNetworkObjSetDnsmasqPid; +virNetworkObjSetFloorSum; virNetworkObjSetMacMap; virNetworkObjSetRadvdPid; virNetworkObjTaint; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 879901a..cd91a1a 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -5272,7 +5272,7 @@ networkCheckBandwidth(virNetworkObjPtr obj, { int ret = -1; virNetDevBandwidthPtr netBand = obj->def->bandwidth; - unsigned long long tmp_floor_sum = obj->floor_sum; + unsigned long long tmp_floor_sum = virNetworkObjGetFloorSum(obj); unsigned long long tmp_new_rate = 0; char ifmac[VIR_MAC_STRING_BUFLEN]; @@ -5366,6 +5366,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, { virNetworkDriverStatePtr driver = networkGetDriver(); virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); + unsigned long long tmp_floor_sum = virNetworkObjGetFloorSum(obj); ssize_t class_id = 0; int plug_ret; int ret = -1; @@ -5387,17 +5388,19 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, /* QoS was set, generate new class ID */ iface->data.network.actual->class_id = class_id; /* update sum of 'floor'-s of attached NICs */ - obj->floor_sum += ifaceBand->in->floor; + tmp_floor_sum += ifaceBand->in->floor; + virNetworkObjSetFloorSum(obj, tmp_floor_sum); /* update status file */ if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { ignore_value(virBitmapClearBit(classIdMap, class_id)); - obj->floor_sum -= ifaceBand->in->floor; + tmp_floor_sum -= ifaceBand->in->floor; + virNetworkObjSetFloorSum(obj, tmp_floor_sum); iface->data.network.actual->class_id = 0; ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); goto cleanup; } /* update rate for non guaranteed NICs */ - new_rate -= obj->floor_sum; + new_rate -= tmp_floor_sum; if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, obj->def->bandwidth, new_rate) < 0) VIR_WARN("Unable to update rate for 1:2 class on %s bridge", @@ -5455,6 +5458,7 @@ networkUnplugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface) { virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); + unsigned long long tmp_floor_sum = virNetworkObjGetFloorSum(obj); virNetworkDriverStatePtr driver = networkGetDriver(); int ret = 0; unsigned long long new_rate; @@ -5478,19 +5482,22 @@ networkUnplugBandwidth(virNetworkObjPtr obj, if (ret < 0) goto cleanup; /* update sum of 'floor'-s of attached NICs */ - obj->floor_sum -= ifaceBand->in->floor; + tmp_floor_sum -= ifaceBand->in->floor; + virNetworkObjSetFloorSum(obj, tmp_floor_sum); + /* return class ID */ ignore_value(virBitmapClearBit(classIdMap, iface->data.network.actual->class_id)); /* update status file */ if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { - obj->floor_sum += ifaceBand->in->floor; + tmp_floor_sum += ifaceBand->in->floor; + virNetworkObjSetFloorSum(obj, tmp_floor_sum); ignore_value(virBitmapSetBit(classIdMap, iface->data.network.actual->class_id)); goto cleanup; } /* update rate for non guaranteed NICs */ - new_rate -= obj->floor_sum; + new_rate -= tmp_floor_sum; if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, obj->def->bandwidth, new_rate) < 0) VIR_WARN("Unable to update rate for 1:2 class on %s bridge", @@ -5582,6 +5589,7 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj = NULL; + unsigned long long tmp_floor_sum; virNetDevBandwidthPtr ifaceBand = virDomainNetGetActualBandwidth(iface); unsigned long long new_rate = 0; int plug_ret; @@ -5622,16 +5630,19 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, newBandwidth->in->floor) < 0) goto cleanup; - obj->floor_sum -= ifaceBand->in->floor; - obj->floor_sum += newBandwidth->in->floor; - new_rate -= obj->floor_sum; + tmp_floor_sum = virNetworkObjGetFloorSum(obj); + tmp_floor_sum -= ifaceBand->in->floor; + tmp_floor_sum += newBandwidth->in->floor; + virNetworkObjSetFloorSum(obj, tmp_floor_sum); + new_rate -= tmp_floor_sum; if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, obj->def->bandwidth, new_rate) < 0 || virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { /* Ouch, rollback */ - obj->floor_sum -= newBandwidth->in->floor; - obj->floor_sum += ifaceBand->in->floor; + tmp_floor_sum -= newBandwidth->in->floor; + tmp_floor_sum += ifaceBand->in->floor; + virNetworkObjSetFloorSum(obj, tmp_floor_sum); ignore_value(virNetDevBandwidthUpdateRate(obj->def->bridge, iface->data.network.actual->class_id, -- 2.9.3

On Fri, May 19, 2017 at 09:03:16AM -0400, John Ferlan wrote:
In preparation for making the object private, create a couple of API's to get/set the obj->floor_sum.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 15 +++++++++++++++ src/conf/virnetworkobj.h | 7 +++++++ src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 35 +++++++++++++++++++++++------------ 4 files changed, 47 insertions(+), 12 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

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@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/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index a848203..488fffd 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,20 @@ virNetworkObjEndAPI(virNetworkObjPtr *net) } +virNetworkDefPtr +virNetworkObjGetDef(virNetworkObjPtr obj) +{ + return obj->def; +} + + +virNetworkDefPtr +virNetworkObjGetNewDef(virNetworkObjPtr obj) +{ + return obj->newDef; +} + + pid_t virNetworkObjGetDnsmasqPid(virNetworkObjPtr obj) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index aa544ed..4b7c982 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -50,6 +50,12 @@ struct _virNetworkObj { virNetworkObjPtr virNetworkObjNew(void); +virNetworkDefPtr +virNetworkObjGetDef(virNetworkObjPtr obj); + +virNetworkDefPtr +virNetworkObjGetNewDef(virNetworkObjPtr obj); + virMacMapPtr virNetworkObjGetMacMap(virNetworkObjPtr obj); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 150b6f1..6b4c37c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -932,9 +932,11 @@ virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; virNetworkObjGetClassIdMap; +virNetworkObjGetDef; virNetworkObjGetDnsmasqPid; virNetworkObjGetFloorSum; virNetworkObjGetMacMap; +virNetworkObjGetNewDef; virNetworkObjGetPersistentDef; virNetworkObjGetRadvdPid; virNetworkObjListExport; 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 @@ -213,6 +213,7 @@ networkRunHook(virNetworkObjPtr obj, int op, int sub_op) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virBuffer buf = VIR_BUFFER_INITIALIZER; char *xml = NULL, *net_xml = NULL, *dom_xml = NULL; int hookret; @@ -229,7 +230,7 @@ networkRunHook(virNetworkObjPtr obj, virBufferAdjustIndent(&buf, 2); if (iface && virDomainNetDefFormat(&buf, iface, NULL, 0) < 0) goto cleanup; - if (virNetworkDefFormatBuf(&buf, obj->def, 0) < 0) + if (virNetworkDefFormatBuf(&buf, def, 0) < 0) goto cleanup; if (dom && virDomainDefFormatInternal(dom, NULL, 0, &buf) < 0) goto cleanup; @@ -241,7 +242,7 @@ networkRunHook(virNetworkObjPtr obj, goto cleanup; xml = virBufferContentAndReset(&buf); - hookret = virHookCall(VIR_HOOK_DRIVER_NETWORK, obj->def->name, + hookret = virHookCall(VIR_HOOK_DRIVER_NETWORK, def->name, op, sub_op, NULL, xml, NULL); /* @@ -430,6 +431,7 @@ static int networkUpdateState(virNetworkObjPtr obj, void *opaque) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virNetworkDriverStatePtr driver = opaque; dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); virMacMapPtr macmap; @@ -442,17 +444,17 @@ networkUpdateState(virNetworkObjPtr obj, goto cleanup; } - switch (obj->def->forward.type) { + switch (def->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: case VIR_NETWORK_FORWARD_ROUTE: case VIR_NETWORK_FORWARD_OPEN: /* If bridge doesn't exist, then mark it inactive */ - if (!(obj->def->bridge && virNetDevExists(obj->def->bridge) == 1)) + if (!(def->bridge && virNetDevExists(def->bridge) == 1)) obj->active = 0; if (!(macMapFile = virNetworkObjMacMgrFileName(driver->dnsmasqStateDir, - obj->def->bridge))) + def->bridge))) goto cleanup; if (!(macmap = virMacMapNew(macMapFile))) @@ -463,8 +465,8 @@ networkUpdateState(virNetworkObjPtr obj, break; case VIR_NETWORK_FORWARD_BRIDGE: - if (obj->def->bridge) { - if (virNetDevExists(obj->def->bridge) != 1) + if (def->bridge) { + if (virNetDevExists(def->bridge) != 1) obj->active = 0; break; } @@ -484,18 +486,18 @@ networkUpdateState(virNetworkObjPtr obj, } /* Try and read dnsmasq/radvd pids of active networks */ - if (obj->active && obj->def->ips && (obj->def->nips > 0)) { + if (obj->active && def->ips && (def->nips > 0)) { pid_t radvdPid; pid_t dnsmasqPid; char *radvdpidbase; ignore_value(virPidFileReadIfAlive(driver->pidDir, - obj->def->name, + def->name, &dnsmasqPid, dnsmasqCapsGetBinaryPath(dnsmasq_caps))); virNetworkObjSetDnsmasqPid(obj, dnsmasqPid); - radvdpidbase = networkRadvdPidfileBasename(obj->def->name); + radvdpidbase = networkRadvdPidfileBasename(def->name); if (!radvdpidbase) goto cleanup; @@ -1017,11 +1019,12 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, dnsmasqContext *dctx, dnsmasqCapsPtr caps ATTRIBUTE_UNUSED) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virBuffer configbuf = VIR_BUFFER_INITIALIZER; int r, ret = -1; int nbleases = 0; size_t i; - virNetworkDNSDefPtr dns = &obj->def->dns; + virNetworkDNSDefPtr dns = &def->dns; bool wantDNS = dns->enable != VIR_TRISTATE_BOOL_NO; virNetworkIPDefPtr tmpipdef, ipdef, ipv4def, ipv6def; bool ipv6SLAAC; @@ -1055,7 +1058,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, "## or other application using the libvirt API.\n" "##\n## dnsmasq conf file created by libvirt\n" "strict-order\n", - obj->def->name); + def->name); /* if dns is disabled, set its listening port to 0, which * tells dnsmasq to not listen @@ -1063,7 +1066,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, if (!wantDNS) virBufferAddLit(&configbuf, "port=0\n"); - if (wantDNS && obj->def->dns.forwarders) { + if (wantDNS && def->dns.forwarders) { /* addNoResolv should be set to true if there are any entries * that specify an IP address for requests, but no domain * qualifier (implying that all requests otherwise "unclaimed" @@ -1073,8 +1076,8 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, */ bool addNoResolv = false; - for (i = 0; i < obj->def->dns.nfwds; i++) { - virNetworkDNSForwarderPtr fwd = &obj->def->dns.forwarders[i]; + for (i = 0; i < def->dns.nfwds; i++) { + virNetworkDNSForwarderPtr fwd = &def->dns.forwarders[i]; virBufferAddLit(&configbuf, "server="); if (fwd->domain) @@ -1097,23 +1100,23 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, virBufferAddLit(&configbuf, "no-resolv\n"); } - if (obj->def->domain) { - if (obj->def->domainLocalOnly == VIR_TRISTATE_BOOL_YES) { + if (def->domain) { + if (def->domainLocalOnly == VIR_TRISTATE_BOOL_YES) { virBufferAsprintf(&configbuf, "local=/%s/\n", - obj->def->domain); + def->domain); } virBufferAsprintf(&configbuf, "domain=%s\n" "expand-hosts\n", - obj->def->domain); + def->domain); } if (wantDNS && - networkDnsmasqConfLocalPTRs(&configbuf, obj->def) < 0) + networkDnsmasqConfLocalPTRs(&configbuf, def) < 0) goto cleanup; - if (wantDNS && obj->def->dns.forwardPlainNames == VIR_TRISTATE_BOOL_NO) { + if (wantDNS && def->dns.forwardPlainNames == VIR_TRISTATE_BOOL_NO) { virBufferAddLit(&configbuf, "domain-needed\n"); /* need to specify local=// whether or not a domain is * specified, unless the config says we should forward "plain" @@ -1144,19 +1147,19 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, virBufferAsprintf(&configbuf, "bind-dynamic\n" "interface=%s\n", - obj->def->bridge); + def->bridge); } else { virBufferAddLit(&configbuf, "bind-interfaces\n"); /* * --interface does not actually work with dnsmasq < 2.47, * due to DAD for ipv6 addresses on the interface. * - * virCommandAddArgList(cmd, "--interface", obj->def->bridge, NULL); + * virCommandAddArgList(cmd, "--interface", def->bridge, NULL); * * So listen on all defined IPv[46] addresses */ for (i = 0; - (tmpipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i)); + (tmpipdef = virNetworkDefGetIPByIndex(def, AF_UNSPEC, i)); i++) { char *ipaddr = virSocketAddrFormat(&tmpipdef->address); @@ -1202,7 +1205,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, * via the sender's link-local address. The only thing we can do * is set the lifetime of this route to 0, i.e. disable it. */ - if (obj->def->forward.type == VIR_NETWORK_FORWARD_NONE) { + if (def->forward.type == VIR_NETWORK_FORWARD_NONE) { virBufferAddLit(&configbuf, "dhcp-option=3\n" "no-resolv\n"); if (dnsmasqCapsGet(caps, DNSMASQ_CAPS_RA_PARAM)) { @@ -1226,14 +1229,14 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, virReportError(VIR_ERR_INTERNAL_ERROR, _("Missing required 'service' " "attribute in SRV record of network '%s'"), - obj->def->name); + def->name); goto cleanup; } if (!dns->srvs[i].protocol) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Missing required 'service' " "attribute in SRV record of network '%s'"), - obj->def->name); + def->name); goto cleanup; } /* RFC2782 requires that service and protocol be preceded by @@ -1275,7 +1278,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, /* Find the first dhcp for both IPv4 and IPv6 */ for (i = 0, ipv4def = NULL, ipv6def = NULL, ipv6SLAAC = false; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i)); + (ipdef = virNetworkDefGetIPByIndex(def, AF_UNSPEC, i)); i++) { if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) { if (ipdef->nranges || ipdef->nhosts) { @@ -1337,7 +1340,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, if (prefix < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("bridge '%s' has an invalid prefix"), - obj->def->bridge); + def->bridge); goto cleanup; } for (r = 0; r < ipdef->nranges; r++) { @@ -1443,7 +1446,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, virBufferAddLit(&configbuf, "enable-ra\n"); } else { for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); + (ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, i)); i++) { if (!(ipdef->nranges || ipdef->nhosts)) { char *bridgeaddr = virSocketAddrFormat(&ipdef->address); @@ -1478,6 +1481,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, char *pidfile, dnsmasqContext *dctx) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); virCommandPtr cmd = NULL; int ret = -1; @@ -1494,7 +1498,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, goto cleanup; /* construct the filename */ - if (!(configfile = networkDnsmasqConfigFileName(driver, obj->def->name))) + if (!(configfile = networkDnsmasqConfigFileName(driver, def->name))) goto cleanup; /* Write the file */ @@ -1516,7 +1520,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverStatePtr driver, /* Libvirt gains full control of leases database */ virCommandAddArgFormat(cmd, "--leasefile-ro"); virCommandAddArgFormat(cmd, "--dhcp-script=%s", leaseshelper_path); - virCommandAddEnvPair(cmd, "VIR_BRIDGE_NAME", obj->def->bridge); + virCommandAddEnvPair(cmd, "VIR_BRIDGE_NAME", def->bridge); *cmdout = cmd; ret = 0; @@ -1533,6 +1537,7 @@ static int networkStartDhcpDaemon(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virNetworkIPDefPtr ipdef; size_t i; bool needDnsmasq = false; @@ -1544,7 +1549,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, /* see if there are any IP addresses that need a dhcp server */ i = 0; - while ((ipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i))) { + while ((ipdef = virNetworkDefGetIPByIndex(def, AF_UNSPEC, i))) { i++; if (ipdef->nranges || ipdef->nhosts) needDnsmasq = true; @@ -1556,7 +1561,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, goto cleanup; } - if (!needDnsmasq && obj->def->dns.enable == VIR_TRISTATE_BOOL_NO) { + if (!needDnsmasq && def->dns.enable == VIR_TRISTATE_BOOL_NO) { /* no DHCP services needed, and user disabled DNS service */ ret = 0; goto cleanup; @@ -1569,8 +1574,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, goto cleanup; } - if (!(pidfile = virPidFileBuildPath(driver->pidDir, - obj->def->name))) + if (!(pidfile = virPidFileBuildPath(driver->pidDir, def->name))) goto cleanup; if (virFileMakePath(driver->dnsmasqStateDir) < 0) { @@ -1580,7 +1584,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, goto cleanup; } - dctx = dnsmasqContextNew(obj->def->name, driver->dnsmasqStateDir); + dctx = dnsmasqContextNew(def->name, driver->dnsmasqStateDir); if (dctx == NULL) goto cleanup; @@ -1607,7 +1611,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, * pid */ - ret = virPidFileRead(driver->pidDir, obj->def->name, &dnsmasqPid); + ret = virPidFileRead(driver->pidDir, def->name, &dnsmasqPid); if (ret < 0) goto cleanup; virNetworkObjSetDnsmasqPid(obj, dnsmasqPid); @@ -1632,6 +1636,7 @@ static int networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); int ret = -1; size_t i; pid_t dnsmasqPid; @@ -1639,7 +1644,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, dnsmasqContext *dctx = NULL; /* if no IP addresses specified, nothing to do */ - if (!virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, 0)) + if (!virNetworkDefGetIPByIndex(def, AF_UNSPEC, 0)) return 0; /* if there's no running dnsmasq, just start it */ @@ -1647,8 +1652,8 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, if (dnsmasqPid <= 0 || (kill(dnsmasqPid, 0) < 0)) return networkStartDhcpDaemon(driver, obj); - VIR_INFO("Refreshing dnsmasq for network %s", obj->def->bridge); - if (!(dctx = dnsmasqContextNew(obj->def->name, + VIR_INFO("Refreshing dnsmasq for network %s", def->bridge); + if (!(dctx = dnsmasqContextNew(def->name, driver->dnsmasqStateDir))) { goto cleanup; } @@ -1659,7 +1664,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, */ ipv4def = NULL; for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET, i)); + (ipdef = virNetworkDefGetIPByIndex(def, AF_INET, i)); i++) { if (!ipv4def && (ipdef->nranges || ipdef->nhosts)) ipv4def = ipdef; @@ -1667,7 +1672,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, ipv6def = NULL; for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); + (ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, i)); i++) { if (!ipv6def && (ipdef->nranges || ipdef->nhosts)) ipv6def = ipdef; @@ -1679,7 +1684,7 @@ networkRefreshDhcpDaemon(virNetworkDriverStatePtr driver, if (ipv6def && (networkBuildDnsmasqDhcpHostsList(dctx, ipv6def) < 0)) goto cleanup; - if (networkBuildDnsmasqHostsList(dctx, &obj->def->dns) < 0) + if (networkBuildDnsmasqHostsList(dctx, &def->dns) < 0) goto cleanup; if ((ret = dnsmasqSave(dctx)) < 0) @@ -1704,11 +1709,12 @@ static int networkRestartDhcpDaemon(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); pid_t dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); /* if there is a running dnsmasq, kill it */ if (dnsmasqPid > 0) { - networkKillDaemon(dnsmasqPid, "dnsmasq", obj->def->name); + networkKillDaemon(dnsmasqPid, "dnsmasq", def->name); virNetworkObjSetDnsmasqPid(obj, -1); } /* now start dnsmasq if it should be started */ @@ -1726,6 +1732,7 @@ static int networkRadvdConfContents(virNetworkObjPtr obj, char **configstr) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virBuffer configbuf = VIR_BUFFER_INITIALIZER; int ret = -1; size_t i; @@ -1735,9 +1742,7 @@ networkRadvdConfContents(virNetworkObjPtr obj, *configstr = NULL; /* Check if DHCPv6 is needed */ - for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); - i++) { + for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, i)); i++) { v6present = true; if (ipdef->nranges || ipdef->nhosts) { dhcp6 = true; @@ -1760,14 +1765,12 @@ networkRadvdConfContents(virNetworkObjPtr obj, " IgnoreIfMissing on;\n" " AdvManagedFlag %s;\n" "%s", - obj->def->bridge, + def->bridge, dhcp6 ? "on" : "off", dhcp6 ? "\n" : radvd1); /* add a section for each IPv6 address in the config */ - for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, i)); - i++) { + for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, i)); i++) { int prefix; char *netaddr; @@ -1775,7 +1778,7 @@ networkRadvdConfContents(virNetworkObjPtr obj, if (prefix < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("bridge '%s' has an invalid prefix"), - obj->def->bridge); + def->bridge); goto cleanup; } if (!(netaddr = virSocketAddrFormat(&ipdef->address))) @@ -1808,6 +1811,7 @@ networkRadvdConfWrite(virNetworkDriverStatePtr driver, virNetworkObjPtr obj, char **configFile) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); int ret = -1; char *configStr = NULL; char *myConfigFile = NULL; @@ -1826,7 +1830,7 @@ networkRadvdConfWrite(virNetworkDriverStatePtr driver, } /* construct the filename */ - if (!(*configFile = networkRadvdConfigFileName(driver, obj->def->name))) + if (!(*configFile = networkRadvdConfigFileName(driver, def->name))) goto cleanup; /* write the file */ if (virFileWriteStr(*configFile, configStr, 0600) < 0) { @@ -1848,6 +1852,7 @@ static int networkStartRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); pid_t radvdPid; char *pidfile = NULL; @@ -1864,7 +1869,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, goto cleanup; } - if (!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0)) { + if (!virNetworkDefGetIPByIndex(def, AF_INET6, 0)) { /* no IPv6 addresses, so we don't need to run radvd */ ret = 0; goto cleanup; @@ -1892,7 +1897,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, } /* construct pidfile name */ - if (!(radvdpidbase = networkRadvdPidfileBasename(obj->def->name))) + if (!(radvdpidbase = networkRadvdPidfileBasename(def->name))) goto cleanup; if (!(pidfile = virPidFileBuildPath(driver->pidDir, radvdpidbase))) goto cleanup; @@ -1939,6 +1944,7 @@ static int networkRefreshRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); dnsmasqCapsPtr dnsmasq_caps = networkGetDnsmasqCaps(driver); char *radvdpidbase; pid_t radvdPid; @@ -1950,8 +1956,8 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, if (radvdPid <= 0) return 0; /* radvd should not be running but in case it is */ - if ((networkKillDaemon(radvdPid, "radvd", obj->def->name) >= 0) && - ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name)) + if ((networkKillDaemon(radvdPid, "radvd", def->name) >= 0) && + ((radvdpidbase = networkRadvdPidfileBasename(def->name)) != NULL)) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); @@ -1966,7 +1972,7 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, if (radvdPid <= 0 || (kill(radvdPid, 0) < 0)) return networkStartRadvd(driver, obj); - if (!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0)) { + if (!virNetworkDefGetIPByIndex(def, AF_INET6, 0)) { /* no IPv6 addresses, so we don't need to run radvd */ return 0; } @@ -1983,6 +1989,7 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, static int networkRestartRadvd(virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); char *radvdpidbase; pid_t radvdPid = virNeworkObjGetRadvdPid(obj); @@ -1992,9 +1999,8 @@ networkRestartRadvd(virNetworkObjPtr obj) * since there's really no better recovery to be done than to * just push ahead (and that may be exactly what's needed). */ - if ((networkKillDaemon(radvdPid, "radvd", - obj->def->name) >= 0) && - ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name)) + if ((networkKillDaemon(radvdPid, "radvd", def->name) >= 0) && + ((radvdpidbase = networkRadvdPidfileBasename(def->name)) != NULL)) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); @@ -2011,14 +2017,16 @@ static int networkRefreshDaemonsHelper(virNetworkObjPtr obj, void *opaque) { + virNetworkDefPtr def; virNetworkDriverStatePtr driver = opaque; virObjectLock(obj); + def = virNetworkObjGetDef(obj); if (virNetworkObjIsActive(obj) && - ((obj->def->forward.type == VIR_NETWORK_FORWARD_NONE) || - (obj->def->forward.type == VIR_NETWORK_FORWARD_NAT) || - (obj->def->forward.type == VIR_NETWORK_FORWARD_ROUTE) || - (obj->def->forward.type == VIR_NETWORK_FORWARD_OPEN))) { + ((def->forward.type == VIR_NETWORK_FORWARD_NONE) || + (def->forward.type == VIR_NETWORK_FORWARD_NAT) || + (def->forward.type == VIR_NETWORK_FORWARD_ROUTE) || + (def->forward.type == VIR_NETWORK_FORWARD_OPEN))) { /* Only the three L3 network types that are configured by * libvirt will have a dnsmasq or radvd daemon associated * with them. Here we send a SIGHUP to an existing @@ -2050,19 +2058,21 @@ static int networkReloadFirewallRulesHelper(virNetworkObjPtr obj, void *opaque ATTRIBUTE_UNUSED) { + virNetworkDefPtr def; virObjectLock(obj); + def = virNetworkObjGetDef(obj); if (virNetworkObjIsActive(obj) && - ((obj->def->forward.type == VIR_NETWORK_FORWARD_NONE) || - (obj->def->forward.type == VIR_NETWORK_FORWARD_NAT) || - (obj->def->forward.type == VIR_NETWORK_FORWARD_ROUTE))) { + ((def->forward.type == VIR_NETWORK_FORWARD_NONE) || + (def->forward.type == VIR_NETWORK_FORWARD_NAT) || + (def->forward.type == VIR_NETWORK_FORWARD_ROUTE))) { /* Only three of the L3 network types that are configured by * libvirt need to have iptables rules reloaded. The 4th L3 * network type, forward='open', doesn't need this because it * has no iptables rules. */ - networkRemoveFirewallRules(obj->def); - if (networkAddFirewallRules(obj->def) < 0) { + networkRemoveFirewallRules(def); + if (networkAddFirewallRules(def) < 0) { /* failed to add but already logged */ } } @@ -2109,22 +2119,23 @@ networkEnableIPForwarding(bool enableIPv4, static int networkSetIPv6Sysctls(virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); char *field = NULL; int ret = -1; - bool enableIPv6 = !!virNetworkDefGetIPByIndex(obj->def, AF_INET6, 0); + bool enableIPv6 = !!virNetworkDefGetIPByIndex(def, AF_INET6, 0); /* set disable_ipv6 if there are no ipv6 addresses defined for the * network. But also unset it if there *are* ipv6 addresses, as we * can't be sure of its default value. */ if (virAsprintf(&field, SYSCTL_PATH "/net/ipv6/conf/%s/disable_ipv6", - obj->def->bridge) < 0) + def->bridge) < 0) goto cleanup; if (access(field, W_OK) < 0 && errno == ENOENT) { if (!enableIPv6) VIR_DEBUG("ipv6 appears to already be disabled on %s", - obj->def->bridge); + def->bridge); ret = 0; goto cleanup; } @@ -2132,7 +2143,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr obj) if (virFileWriteStr(field, enableIPv6 ? "0" : "1", 0) < 0) { virReportSystemError(errno, _("cannot write to %s to enable/disable IPv6 " - "on bridge %s"), field, obj->def->bridge); + "on bridge %s"), field, def->bridge); goto cleanup; } VIR_FREE(field); @@ -2145,7 +2156,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr obj) * their own router advertisements. */ if (virAsprintf(&field, SYSCTL_PATH "/net/ipv6/conf/%s/accept_ra", - obj->def->bridge) < 0) + def->bridge) < 0) goto cleanup; if (virFileWriteStr(field, "0", 0) < 0) { @@ -2159,7 +2170,7 @@ networkSetIPv6Sysctls(virNetworkObjPtr obj) * definition), must always have autoconf=0. */ if (virAsprintf(&field, SYSCTL_PATH "/net/ipv6/conf/%s/autoconf", - obj->def->bridge) < 0) + def->bridge) < 0) goto cleanup; if (virFileWriteStr(field, "0", 0) < 0) { @@ -2180,17 +2191,17 @@ static int networkAddAddrToBridge(virNetworkObjPtr obj, virNetworkIPDefPtr ipdef) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); int prefix = virNetworkIPDefPrefix(ipdef); if (prefix < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("bridge '%s' has an invalid netmask or IP address"), - obj->def->bridge); + def->bridge); return -1; } - if (virNetDevIPAddrAdd(obj->def->bridge, - &ipdef->address, NULL, prefix) < 0) + if (virNetDevIPAddrAdd(def->bridge, &ipdef->address, NULL, prefix) < 0) return -1; return 0; @@ -2201,11 +2212,11 @@ static int networkStartHandleMACTableManagerMode(virNetworkObjPtr obj, const char *macTapIfName) { - const char *brname = obj->def->bridge; + virNetworkDefPtr def = virNetworkObjGetDef(obj); + const char *brname = def->bridge; if (brname && - obj->def->macTableManager - == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) { + def->macTableManager == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) { if (virNetDevBridgeSetVlanFiltering(brname, true) < 0) return -1; if (macTapIfName) { @@ -2224,6 +2235,7 @@ static int networkAddRouteToBridge(virNetworkObjPtr obj, virNetDevIPRoutePtr routedef) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); int prefix = virNetDevIPRouteGetPrefix(routedef); unsigned int metric = virNetDevIPRouteGetMetric(routedef); virSocketAddrPtr addr = virNetDevIPRouteGetAddress(routedef); @@ -2233,28 +2245,28 @@ networkAddRouteToBridge(virNetworkObjPtr obj, virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' has an invalid netmask " "or IP address in route definition"), - obj->def->name); + def->name); return -1; } - if (virNetDevIPRouteAdd(obj->def->bridge, addr, - prefix, gateway, metric) < 0) { + if (virNetDevIPRouteAdd(def->bridge, addr, prefix, gateway, metric) < 0) return -1; - } + return 0; } static int networkWaitDadFinish(virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virNetworkIPDefPtr ipdef; virSocketAddrPtr *addrs = NULL, addr = NULL; size_t naddrs = 0; int ret = -1; - VIR_DEBUG("Begin waiting for IPv6 DAD on network %s", obj->def->name); + VIR_DEBUG("Begin waiting for IPv6 DAD on network %s", def->name); - while ((ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET6, naddrs))) { + while ((ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, naddrs))) { addr = &ipdef->address; if (VIR_APPEND_ELEMENT_COPY(addrs, naddrs, addr) < 0) goto cleanup; @@ -2265,7 +2277,7 @@ networkWaitDadFinish(virNetworkObjPtr obj) cleanup: VIR_FREE(addrs); VIR_DEBUG("Finished waiting for IPv6 DAD on network %s with status %d", - obj->def->name, ret); + def->name, ret); return ret; } @@ -2274,6 +2286,7 @@ static int networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); size_t i; bool v4present = false, v6present = false; virErrorPtr save_err = NULL; @@ -2286,11 +2299,11 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, pid_t dnsmasqPid; /* Check to see if any network IP collides with an existing route */ - if (networkCheckRouteCollision(obj->def) < 0) + if (networkCheckRouteCollision(def) < 0) return -1; /* Create and configure the bridge device */ - if (!obj->def->bridge) { + if (!def->bridge) { /* bridge name can only be empty if the config files were * edited directly. Otherwise networkValidate() (called after * parsing the XML from networkCreateXML() and @@ -2301,27 +2314,27 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, */ virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' has no bridge name defined"), - obj->def->name); + def->name); return -1; } - if (virNetDevBridgeCreate(obj->def->bridge) < 0) + if (virNetDevBridgeCreate(def->bridge) < 0) return -1; - if (obj->def->mac_specified) { + if (def->mac_specified) { /* To set a mac for the bridge, we need to define a dummy tap * device, set its mac, then attach it to the bridge. As long * as its mac address is lower than any other interface that * gets attached, the bridge will always maintain this mac * address. */ - macTapIfName = networkBridgeDummyNicName(obj->def->bridge); + macTapIfName = networkBridgeDummyNicName(def->bridge); if (!macTapIfName) goto err0; /* Keep tun fd open and interface up to allow for IPv6 DAD to happen */ - if (virNetDevTapCreateInBridgePort(obj->def->bridge, - &macTapIfName, &obj->def->mac, + if (virNetDevTapCreateInBridgePort(def->bridge, + &macTapIfName, &def->mac, NULL, NULL, &tapfd, 1, NULL, NULL, - NULL, obj->def->mtu, NULL, + NULL, def->mtu, NULL, VIR_NETDEV_TAP_CREATE_USE_MAC_FOR_BRIDGE | VIR_NETDEV_TAP_CREATE_IFUP | VIR_NETDEV_TAP_CREATE_PERSIST) < 0) { @@ -2331,7 +2344,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } if (!(macMapFile = virNetworkObjMacMgrFileName(driver->dnsmasqStateDir, - obj->def->bridge)) || + def->bridge)) || !(macmap = virMacMapNew(macMapFile))) goto err1; @@ -2342,12 +2355,10 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, /* delay is configured in seconds, but virNetDevBridgeSetSTPDelay * expects milliseconds */ - if (virNetDevBridgeSetSTPDelay(obj->def->bridge, - obj->def->delay * 1000) < 0) + if (virNetDevBridgeSetSTPDelay(def->bridge, def->delay * 1000) < 0) goto err1; - if (virNetDevBridgeSetSTP(obj->def->bridge, - obj->def->stp ? true : false) < 0) + if (virNetDevBridgeSetSTP(def->bridge, def->stp ? true : false) < 0) goto err1; /* Disable IPv6 on the bridge if there are no IPv6 addresses @@ -2357,13 +2368,11 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, goto err1; /* Add "once per network" rules */ - if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN && - networkAddFirewallRules(obj->def) < 0) + if (def->forward.type != VIR_NETWORK_FORWARD_OPEN && + networkAddFirewallRules(def) < 0) goto err1; - for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_UNSPEC, i)); - i++) { + for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_UNSPEC, i)); i++) { if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) v4present = true; if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET6)) @@ -2378,13 +2387,13 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, goto err2; /* Bring up the bridge interface */ - if (virNetDevSetOnline(obj->def->bridge, 1) < 0) + if (virNetDevSetOnline(def->bridge, 1) < 0) goto err2; - for (i = 0; i < obj->def->nroutes; i++) { + for (i = 0; i < def->nroutes; i++) { virSocketAddrPtr gateway = NULL; - routedef = obj->def->routes[i]; + routedef = def->routes[i]; gateway = virNetDevIPRouteGetGateway(routedef); /* Add the IP route to the bridge */ @@ -2399,7 +2408,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } /* If forward.type != NONE, turn on global IP forwarding */ - if (obj->def->forward.type != VIR_NETWORK_FORWARD_NONE) { + if (def->forward.type != VIR_NETWORK_FORWARD_NONE) { if (v6present && !virNetDevIPCheckIPv6Forwarding()) goto err3; /* Precise error message already provided */ @@ -2435,7 +2444,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, VIR_FORCE_CLOSE(tapfd); } - if (virNetDevBandwidthSet(obj->def->bridge, obj->def->bandwidth, true) < 0) + if (virNetDevBandwidthSet(def->bridge, def->bandwidth, true) < 0) goto err5; VIR_FREE(macTapIfName); @@ -2444,8 +2453,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, return 0; err5: - if (obj->def->bandwidth) - virNetDevBandwidthClear(obj->def->bridge); + if (def->bandwidth) + virNetDevBandwidthClear(def->bridge); err4: if (!save_err) @@ -2460,13 +2469,13 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, err3: if (!save_err) save_err = virSaveLastError(); - ignore_value(virNetDevSetOnline(obj->def->bridge, 0)); + ignore_value(virNetDevSetOnline(def->bridge, 0)); err2: if (!save_err) save_err = virSaveLastError(); - if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN) - networkRemoveFirewallRules(obj->def); + if (def->forward.type != VIR_NETWORK_FORWARD_OPEN) + networkRemoveFirewallRules(def); err1: if (!save_err) @@ -2482,7 +2491,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, err0: if (!save_err) save_err = virSaveLastError(); - ignore_value(virNetDevBridgeDelete(obj->def->bridge)); + ignore_value(virNetDevBridgeDelete(def->bridge)); if (save_err) { virSetError(save_err); @@ -2497,11 +2506,12 @@ static int networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); pid_t radvdPid; pid_t dnsmasqPid; - if (obj->def->bandwidth) - virNetDevBandwidthClear(obj->def->bridge); + if (def->bandwidth) + virNetDevBandwidthClear(def->bridge); virNetworkObjUnrefMacMap(obj); @@ -2511,7 +2521,7 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, kill(radvdPid, SIGTERM); /* attempt to delete the pidfile we created */ - if ((radvdpidbase = networkRadvdPidfileBasename(obj->def->name))) { + if ((radvdpidbase = networkRadvdPidfileBasename(def->name))) { virPidFileDelete(driver->pidDir, radvdpidbase); VIR_FREE(radvdpidbase); } @@ -2521,20 +2531,20 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver, if (dnsmasqPid > 0) kill(dnsmasqPid, SIGTERM); - if (obj->def->mac_specified) { - char *macTapIfName = networkBridgeDummyNicName(obj->def->bridge); + if (def->mac_specified) { + char *macTapIfName = networkBridgeDummyNicName(def->bridge); if (macTapIfName) { ignore_value(virNetDevTapDelete(macTapIfName, NULL)); VIR_FREE(macTapIfName); } } - ignore_value(virNetDevSetOnline(obj->def->bridge, 0)); + ignore_value(virNetDevSetOnline(def->bridge, 0)); - if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN) - networkRemoveFirewallRules(obj->def); + if (def->forward.type != VIR_NETWORK_FORWARD_OPEN) + networkRemoveFirewallRules(def); - ignore_value(virNetDevBridgeDelete(obj->def->bridge)); + ignore_value(virNetDevBridgeDelete(def->bridge)); /* See if its still alive and really really kill it */ dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); @@ -2691,7 +2701,7 @@ networkStartNetworkExternal(virNetworkObjPtr obj) * failure, undo anything you've done, and return -1. On success * return 0. */ - return networkCreateInterfacePool(obj->def); + return networkCreateInterfacePool(virNetworkObjGetDef(obj)); } @@ -2711,6 +2721,7 @@ static int networkStartNetwork(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); int ret = -1; VIR_DEBUG("driver=%p, network=%p", driver, obj); @@ -2734,7 +2745,7 @@ networkStartNetwork(virNetworkDriverStatePtr driver, VIR_HOOK_SUBOP_BEGIN) < 0) goto cleanup; - switch (obj->def->forward.type) { + switch (def->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: @@ -2745,7 +2756,7 @@ networkStartNetwork(virNetworkDriverStatePtr driver, break; case VIR_NETWORK_FORWARD_BRIDGE: - if (obj->def->bridge) { + if (def->bridge) { if (networkStartNetworkBridge(obj) < 0) goto cleanup; break; @@ -2779,7 +2790,7 @@ networkStartNetwork(virNetworkDriverStatePtr driver, goto cleanup; obj->active = 1; - VIR_INFO("Network '%s' started up", obj->def->name); + VIR_INFO("Network '%s' started up", def->name); ret = 0; cleanup: @@ -2800,23 +2811,23 @@ static int networkShutdownNetwork(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); int ret = 0; char *stateFile; - VIR_INFO("Shutting down network '%s'", obj->def->name); + VIR_INFO("Shutting down network '%s'", def->name); if (!virNetworkObjIsActive(obj)) return 0; - stateFile = virNetworkConfigFile(driver->stateDir, - obj->def->name); + stateFile = virNetworkConfigFile(driver->stateDir, def->name); if (!stateFile) return -1; unlink(stateFile); VIR_FREE(stateFile); - switch (obj->def->forward.type) { + switch (def->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: @@ -2826,7 +2837,7 @@ networkShutdownNetwork(virNetworkDriverStatePtr driver, break; case VIR_NETWORK_FORWARD_BRIDGE: - if (obj->def->bridge) { + if (def->bridge) { ret = networkShutdownNetworkBridge(obj); break; } @@ -2860,6 +2871,7 @@ networkLookupByUUID(virConnectPtr conn, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; + virNetworkDefPtr def; virNetworkPtr net = NULL; obj = virNetworkObjFindByUUID(driver->networks, uuid); @@ -2871,11 +2883,12 @@ networkLookupByUUID(virConnectPtr conn, uuidstr); goto cleanup; } + def = virNetworkObjGetDef(obj); - if (virNetworkLookupByUUIDEnsureACL(conn, obj->def) < 0) + if (virNetworkLookupByUUIDEnsureACL(conn, def) < 0) goto cleanup; - net = virGetNetwork(conn, obj->def->name, obj->def->uuid); + net = virGetNetwork(conn, def->name, def->uuid); cleanup: virNetworkObjEndAPI(&obj); @@ -2889,6 +2902,7 @@ networkLookupByName(virConnectPtr conn, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; + virNetworkDefPtr def; virNetworkPtr net = NULL; obj = virNetworkObjFindByName(driver->networks, name); @@ -2897,11 +2911,12 @@ networkLookupByName(virConnectPtr conn, _("no network with matching name '%s'"), name); goto cleanup; } + def = virNetworkObjGetDef(obj); - if (virNetworkLookupByNameEnsureACL(conn, obj->def) < 0) + if (virNetworkLookupByNameEnsureACL(conn, def) < 0) goto cleanup; - net = virGetNetwork(conn, obj->def->name, obj->def->uuid); + net = virGetNetwork(conn, def->name, def->uuid); cleanup: virNetworkObjEndAPI(&obj); @@ -3061,7 +3076,7 @@ networkIsActive(virNetworkPtr net) if (!(obj = networkObjFromNetwork(net))) return ret; - if (virNetworkIsActiveEnsureACL(net->conn, obj->def) < 0) + if (virNetworkIsActiveEnsureACL(net->conn, virNetworkObjGetDef(obj)) < 0) goto cleanup; ret = virNetworkObjIsActive(obj); @@ -3081,7 +3096,7 @@ networkIsPersistent(virNetworkPtr net) if (!(obj = networkObjFromNetwork(net))) return ret; - if (virNetworkIsPersistentEnsureACL(net->conn, obj->def) < 0) + if (virNetworkIsPersistentEnsureACL(net->conn, virNetworkObjGetDef(obj)) < 0) goto cleanup; ret = obj->persistent; @@ -3460,6 +3475,7 @@ networkCreateXML(virConnectPtr conn, virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkDefPtr def; virNetworkObjPtr obj = NULL; + virNetworkDefPtr objdef; virNetworkPtr net = NULL; virObjectEventPtr event = NULL; @@ -3481,19 +3497,20 @@ networkCreateXML(virConnectPtr conn, VIR_NETWORK_OBJ_LIST_ADD_CHECK_LIVE))) goto cleanup; def = NULL; + objdef = virNetworkObjGetDef(obj); if (networkStartNetwork(driver, obj) < 0) { virNetworkObjRemoveInactive(driver->networks, obj); goto cleanup; } - event = virNetworkEventLifecycleNew(obj->def->name, - obj->def->uuid, + event = virNetworkEventLifecycleNew(objdef->name, + objdef->uuid, VIR_NETWORK_EVENT_STARTED, 0); - VIR_INFO("Creating network '%s'", obj->def->name); - net = virGetNetwork(conn, obj->def->name, obj->def->uuid); + VIR_INFO("Creating network '%s'", objdef->name); + net = virGetNetwork(conn, objdef->name, objdef->uuid); cleanup: virNetworkDefFree(def); @@ -3565,14 +3582,16 @@ networkUndefine(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; + virNetworkDefPtr def; int ret = -1; bool active = false; virObjectEventPtr event = NULL; if (!(obj = networkObjFromNetwork(net))) goto cleanup; + def = virNetworkObjGetDef(obj); - if (virNetworkUndefineEnsureACL(net->conn, obj->def) < 0) + if (virNetworkUndefineEnsureACL(net->conn, def) < 0) goto cleanup; if (virNetworkObjIsActive(obj)) @@ -3590,12 +3609,12 @@ networkUndefine(virNetworkPtr net) obj) < 0) goto cleanup; - event = virNetworkEventLifecycleNew(obj->def->name, - obj->def->uuid, + event = virNetworkEventLifecycleNew(def->name, + def->uuid, VIR_NETWORK_EVENT_UNDEFINED, 0); - VIR_INFO("Undefining network '%s'", obj->def->name); + VIR_INFO("Undefining network '%s'", def->name); if (!active) { if (networkRemoveInactive(driver, obj) < 0) goto cleanup; @@ -3627,6 +3646,7 @@ networkUpdate(virNetworkPtr net, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj = NULL; + virNetworkDefPtr def; int isActive, ret = -1; size_t i; virNetworkIPDefPtr ipdef; @@ -3640,13 +3660,14 @@ networkUpdate(virNetworkPtr net, if (!(obj = networkObjFromNetwork(net))) goto cleanup; + def = virNetworkObjGetDef(obj); - if (virNetworkUpdateEnsureACL(net->conn, obj->def, flags) < 0) + if (virNetworkUpdateEnsureACL(net->conn, def, flags) < 0) goto cleanup; /* see if we are listening for dhcp pre-modification */ for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET, i)); + (ipdef = virNetworkDefGetIPByIndex(def, AF_INET, i)); i++) { if (ipdef->nranges || ipdef->nhosts) { oldDhcpActive = true; @@ -3671,9 +3692,9 @@ networkUpdate(virNetworkPtr net, /* Take care of anything that must be done before updating the * live NetworkDef. */ - if (obj->def->forward.type == VIR_NETWORK_FORWARD_NONE || - obj->def->forward.type == VIR_NETWORK_FORWARD_NAT || - obj->def->forward.type == VIR_NETWORK_FORWARD_ROUTE) { + if (def->forward.type == VIR_NETWORK_FORWARD_NONE || + def->forward.type == VIR_NETWORK_FORWARD_NAT || + def->forward.type == VIR_NETWORK_FORWARD_ROUTE) { switch (section) { case VIR_NETWORK_SECTION_FORWARD: case VIR_NETWORK_SECTION_FORWARD_INTERFACE: @@ -3684,8 +3705,8 @@ networkUpdate(virNetworkPtr net, * old rules (and remember to load new ones after the * update). */ - if (obj->def->forward.type != VIR_NETWORK_FORWARD_OPEN) { - networkRemoveFirewallRules(obj->def); + if (def->forward.type != VIR_NETWORK_FORWARD_OPEN) { + networkRemoveFirewallRules(def); needFirewallRefresh = true; } break; @@ -3698,11 +3719,11 @@ networkUpdate(virNetworkPtr net, /* update the network config in memory/on disk */ if (virNetworkObjUpdate(obj, command, section, parentIndex, xml, flags) < 0) { if (needFirewallRefresh) - ignore_value(networkAddFirewallRules(obj->def)); + ignore_value(networkAddFirewallRules(def)); goto cleanup; } - if (needFirewallRefresh && networkAddFirewallRules(obj->def) < 0) + if (needFirewallRefresh && networkAddFirewallRules(def) < 0) goto cleanup; if (flags & VIR_NETWORK_UPDATE_AFFECT_CONFIG) { @@ -3742,8 +3763,7 @@ networkUpdate(virNetworkPtr net, */ bool newDhcpActive = false; - for (i = 0; - (ipdef = virNetworkDefGetIPByIndex(obj->def, AF_INET, i)); + for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_INET, i)); i++) { if (ipdef->nranges || ipdef->nhosts) { newDhcpActive = true; @@ -3797,20 +3817,22 @@ networkCreate(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; + virNetworkDefPtr def; int ret = -1; virObjectEventPtr event = NULL; if (!(obj = networkObjFromNetwork(net))) goto cleanup; + def = virNetworkObjGetDef(obj); - if (virNetworkCreateEnsureACL(net->conn, obj->def) < 0) + if (virNetworkCreateEnsureACL(net->conn, def) < 0) goto cleanup; if ((ret = networkStartNetwork(driver, obj)) < 0) goto cleanup; - event = virNetworkEventLifecycleNew(obj->def->name, - obj->def->uuid, + event = virNetworkEventLifecycleNew(def->name, + def->uuid, VIR_NETWORK_EVENT_STARTED, 0); @@ -3827,27 +3849,29 @@ networkDestroy(virNetworkPtr net) { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; + virNetworkDefPtr def; int ret = -1; virObjectEventPtr event = NULL; if (!(obj = networkObjFromNetwork(net))) goto cleanup; + def = virNetworkObjGetDef(obj); - if (virNetworkDestroyEnsureACL(net->conn, obj->def) < 0) + if (virNetworkDestroyEnsureACL(net->conn, def) < 0) goto cleanup; if (!virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("network '%s' is not active"), - obj->def->name); + def->name); goto cleanup; } if ((ret = networkShutdownNetwork(driver, obj)) < 0) goto cleanup; - event = virNetworkEventLifecycleNew(obj->def->name, - obj->def->uuid, + event = virNetworkEventLifecycleNew(def->name, + def->uuid, VIR_NETWORK_EVENT_STOPPED, 0); @@ -3870,20 +3894,24 @@ networkGetXMLDesc(virNetworkPtr net, { virNetworkObjPtr obj; virNetworkDefPtr def; + virNetworkDefPtr objdef; + virNetworkDefPtr newDef; 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); @@ -3897,22 +3925,24 @@ static char * networkGetBridgeName(virNetworkPtr net) { virNetworkObjPtr obj; + virNetworkDefPtr def; char *bridge = NULL; if (!(obj = networkObjFromNetwork(net))) return bridge; + def = virNetworkObjGetDef(obj); - if (virNetworkGetBridgeNameEnsureACL(net->conn, obj->def) < 0) + if (virNetworkGetBridgeNameEnsureACL(net->conn, def) < 0) goto cleanup; - if (!(obj->def->bridge)) { + if (!(def->bridge)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' does not have a bridge name."), - obj->def->name); + def->name); goto cleanup; } - ignore_value(VIR_STRDUP(bridge, obj->def->bridge)); + ignore_value(VIR_STRDUP(bridge, def->bridge)); cleanup: virNetworkObjEndAPI(&obj); @@ -3930,7 +3960,7 @@ networkGetAutostart(virNetworkPtr net, if (!(obj = networkObjFromNetwork(net))) return ret; - if (virNetworkGetAutostartEnsureACL(net->conn, obj->def) < 0) + if (virNetworkGetAutostartEnsureACL(net->conn, virNetworkObjGetDef(obj)) < 0) goto cleanup; *autostart = obj->autostart; @@ -3948,14 +3978,15 @@ networkSetAutostart(virNetworkPtr net, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; + virNetworkDefPtr def; char *configFile = NULL, *autostartLink = NULL; int ret = -1; - if (!(obj = networkObjFromNetwork(net))) goto cleanup; + def = virNetworkObjGetDef(obj); - if (virNetworkSetAutostartEnsureACL(net->conn, obj->def) < 0) + if (virNetworkSetAutostartEnsureACL(net->conn, def) < 0) goto cleanup; if (!obj->persistent) { @@ -3967,9 +3998,11 @@ networkSetAutostart(virNetworkPtr net, autostart = (autostart != 0); if (obj->autostart != autostart) { - if ((configFile = virNetworkConfigFile(driver->networkConfigDir, obj->def->name)) == NULL) + if ((configFile = virNetworkConfigFile(driver->networkConfigDir, + def->name)) == NULL) goto cleanup; - if ((autostartLink = virNetworkConfigFile(driver->networkAutostartDir, obj->def->name)) == NULL) + if ((autostartLink = virNetworkConfigFile(driver->networkAutostartDir, + def->name)) == NULL) goto cleanup; if (autostart) { @@ -4033,6 +4066,7 @@ networkGetDHCPLeases(virNetworkPtr net, virNetworkDHCPLeasePtr lease = NULL; virNetworkDHCPLeasePtr *leases_ret = NULL; virNetworkObjPtr obj; + virNetworkDefPtr def; virMacAddr mac_addr; virCheckFlags(0, -1); @@ -4045,12 +4079,13 @@ networkGetDHCPLeases(virNetworkPtr net, if (!(obj = networkObjFromNetwork(net))) return -1; + def = virNetworkObjGetDef(obj); - if (virNetworkGetDHCPLeasesEnsureACL(net->conn, obj->def) < 0) + if (virNetworkGetDHCPLeasesEnsureACL(net->conn, def) < 0) goto cleanup; /* Retrieve custom leases file location */ - custom_lease_file = networkDnsmasqLeaseFileNameCustom(driver, obj->def->bridge); + custom_lease_file = networkDnsmasqLeaseFileNameCustom(driver, def->bridge); /* Read entire contents */ if ((custom_lease_file_len = virFileReadAll(custom_lease_file, @@ -4126,8 +4161,8 @@ networkGetDHCPLeases(virNetworkPtr net, lease->type = ipv6 ? VIR_IP_ADDR_TYPE_IPV6 : VIR_IP_ADDR_TYPE_IPV4; /* Obtain prefix */ - for (j = 0; j < obj->def->nips; j++) { - ipdef_tmp = &obj->def->ips[j]; + for (j = 0; j < def->nips; j++) { + ipdef_tmp = &def->ips[j]; if (ipv6 && VIR_SOCKET_ADDR_IS_FAMILY(&ipdef_tmp->address, AF_INET6)) { @@ -4145,7 +4180,7 @@ networkGetDHCPLeases(virNetworkPtr net, if ((VIR_STRDUP(lease->mac, mac_tmp) < 0) || (VIR_STRDUP(lease->ipaddr, ip_tmp) < 0) || - (VIR_STRDUP(lease->iface, obj->def->bridge) < 0)) + (VIR_STRDUP(lease->iface, def->bridge) < 0)) goto error; /* Fields that can be NULL */ @@ -4328,7 +4363,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, iface->data.network.name); goto error; } - netdef = obj->def; + netdef = virNetworkObjGetDef(obj); if (!virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -4743,7 +4778,7 @@ networkNotifyActualDevice(virDomainDefPtr dom, iface->data.network.name); goto error; } - netdef = obj->def; + netdef = virNetworkObjGetDef(obj); if (!virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -4960,7 +4995,7 @@ networkReleaseActualDevice(virDomainDefPtr dom, iface->data.network.name); goto error; } - netdef = obj->def; + netdef = virNetworkObjGetDef(obj); if (iface->data.network.actual && (netdef->forward.type == VIR_NETWORK_FORWARD_NONE || @@ -5111,7 +5146,7 @@ networkGetNetworkAddress(const char *netname, netname); goto cleanup; } - netdef = obj->def; + netdef = virNetworkObjGetDef(obj); switch (netdef->forward.type) { case VIR_NETWORK_FORWARD_NONE: @@ -5200,7 +5235,7 @@ networkGetActualType(virDomainNetDefPtr iface) iface->data.network.name); return -1; } - netdef = obj->def; + netdef = virNetworkObjGetDef(obj); if ((netdef->forward.type == VIR_NETWORK_FORWARD_NONE) || (netdef->forward.type == VIR_NETWORK_FORWARD_NAT) || @@ -5271,7 +5306,8 @@ networkCheckBandwidth(virNetworkObjPtr obj, unsigned long long *new_rate) { int ret = -1; - virNetDevBandwidthPtr netBand = obj->def->bandwidth; + virNetworkDefPtr def = virNetworkObjGetDef(obj); + virNetDevBandwidthPtr netBand = def->bandwidth; unsigned long long tmp_floor_sum = virNetworkObjGetFloorSum(obj); unsigned long long tmp_new_rate = 0; char ifmac[VIR_MAC_STRING_BUFLEN]; @@ -5283,7 +5319,7 @@ networkCheckBandwidth(virNetworkObjPtr obj, virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("Invalid use of 'floor' on interface with MAC " "address %s - network '%s' has no inbound QoS set"), - ifmac, obj->def->name); + ifmac, def->name); return -1; } @@ -5308,8 +5344,8 @@ networkCheckBandwidth(virNetworkObjPtr obj, _("Cannot plug '%s' interface into '%s' because it " "would overcommit 'peak' on network '%s'"), ifmac, - obj->def->bridge, - obj->def->name); + def->bridge, + def->name); goto cleanup; } } else if (tmp_floor_sum > netBand->in->average) { @@ -5319,8 +5355,8 @@ networkCheckBandwidth(virNetworkObjPtr obj, _("Cannot plug '%s' interface into '%s' because it " "would overcommit 'average' on network '%s'"), ifmac, - obj->def->bridge, - obj->def->name); + def->bridge, + def->name); goto cleanup; } @@ -5365,6 +5401,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, unsigned long long new_rate) { virNetworkDriverStatePtr driver = networkGetDriver(); + virNetworkDefPtr def = virNetworkObjGetDef(obj); virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); unsigned long long tmp_floor_sum = virNetworkObjGetFloorSum(obj); ssize_t class_id = 0; @@ -5378,10 +5415,10 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, goto cleanup; } - plug_ret = virNetDevBandwidthPlug(obj->def->bridge, obj->def->bandwidth, + plug_ret = virNetDevBandwidthPlug(def->bridge, def->bandwidth, &iface->mac, ifaceBand, class_id); if (plug_ret < 0) { - ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); + ignore_value(virNetDevBandwidthUnplug(def->bridge, class_id)); goto cleanup; } @@ -5396,15 +5433,15 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, tmp_floor_sum -= ifaceBand->in->floor; virNetworkObjSetFloorSum(obj, tmp_floor_sum); iface->data.network.actual->class_id = 0; - ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); + ignore_value(virNetDevBandwidthUnplug(def->bridge, class_id)); goto cleanup; } /* update rate for non guaranteed NICs */ new_rate -= tmp_floor_sum; - if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, - obj->def->bandwidth, new_rate) < 0) + if (virNetDevBandwidthUpdateRate(def->bridge, 2, + def->bandwidth, new_rate) < 0) VIR_WARN("Unable to update rate for 1:2 class on %s bridge", - obj->def->bridge); + def->bridge); ret = 0; cleanup: @@ -5457,6 +5494,7 @@ static int networkUnplugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); unsigned long long tmp_floor_sum = virNetworkObjGetFloorSum(obj); virNetworkDriverStatePtr driver = networkGetDriver(); @@ -5466,18 +5504,18 @@ networkUnplugBandwidth(virNetworkObjPtr obj, if (iface->data.network.actual && iface->data.network.actual->class_id) { - if (!obj->def->bandwidth || !obj->def->bandwidth->in) { + if (!def->bandwidth || !def->bandwidth->in) { VIR_WARN("Network %s has no bandwidth but unplug requested", - obj->def->name); + def->name); goto cleanup; } /* we must remove class from bridge */ - new_rate = obj->def->bandwidth->in->average; + new_rate = def->bandwidth->in->average; - if (obj->def->bandwidth->in->peak > 0) - new_rate = obj->def->bandwidth->in->peak; + if (def->bandwidth->in->peak > 0) + new_rate = def->bandwidth->in->peak; - ret = virNetDevBandwidthUnplug(obj->def->bridge, + ret = virNetDevBandwidthUnplug(def->bridge, iface->data.network.actual->class_id); if (ret < 0) goto cleanup; @@ -5498,10 +5536,10 @@ networkUnplugBandwidth(virNetworkObjPtr obj, } /* update rate for non guaranteed NICs */ new_rate -= tmp_floor_sum; - if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, - obj->def->bandwidth, new_rate) < 0) + if (virNetDevBandwidthUpdateRate(def->bridge, 2, + def->bandwidth, new_rate) < 0) VIR_WARN("Unable to update rate for 1:2 class on %s bridge", - obj->def->bridge); + def->bridge); /* no class is associated any longer */ iface->data.network.actual->class_id = 0; } @@ -5515,14 +5553,14 @@ static void networkNetworkObjTaint(virNetworkObjPtr obj, virNetworkTaintFlags taint) { + virNetworkDefPtr def = virNetworkObjGetDef(obj); + if (virNetworkObjTaint(obj, taint)) { char uuidstr[VIR_UUID_STRING_BUFLEN]; - virUUIDFormat(obj->def->uuid, uuidstr); + virUUIDFormat(def->uuid, uuidstr); VIR_WARN("Network name='%s' uuid=%s is tainted: %s", - obj->def->name, - uuidstr, - virNetworkTaintTypeToString(taint)); + def->name, uuidstr, virNetworkTaintTypeToString(taint)); } } @@ -5589,6 +5627,7 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj = NULL; + virNetworkDefPtr def; unsigned long long tmp_floor_sum; virNetDevBandwidthPtr ifaceBand = virDomainNetGetActualBandwidth(iface); unsigned long long new_rate = 0; @@ -5605,6 +5644,7 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, iface->data.network.name); return ret; } + def = virNetworkObjGetDef(obj); if ((plug_ret = networkCheckBandwidth(obj, newBandwidth, ifaceBand, iface->mac, &new_rate)) < 0) { @@ -5624,9 +5664,9 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, newBandwidth->in && newBandwidth->in->floor) { /* Either we just need to update @floor .. */ - if (virNetDevBandwidthUpdateRate(obj->def->bridge, + if (virNetDevBandwidthUpdateRate(def->bridge, iface->data.network.actual->class_id, - obj->def->bandwidth, + def->bandwidth, newBandwidth->in->floor) < 0) goto cleanup; @@ -5636,17 +5676,17 @@ networkBandwidthUpdate(virDomainNetDefPtr iface, virNetworkObjSetFloorSum(obj, tmp_floor_sum); new_rate -= tmp_floor_sum; - if (virNetDevBandwidthUpdateRate(obj->def->bridge, 2, - obj->def->bandwidth, new_rate) < 0 || + if (virNetDevBandwidthUpdateRate(def->bridge, 2, + def->bandwidth, new_rate) < 0 || virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { /* Ouch, rollback */ tmp_floor_sum -= newBandwidth->in->floor; tmp_floor_sum += ifaceBand->in->floor; virNetworkObjSetFloorSum(obj, tmp_floor_sum); - ignore_value(virNetDevBandwidthUpdateRate(obj->def->bridge, + ignore_value(virNetDevBandwidthUpdateRate(def->bridge, iface->data.network.actual->class_id, - obj->def->bandwidth, + def->bandwidth, ifaceBand->in->floor)); goto cleanup; } 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 @@ -3230,12 +3230,14 @@ testNetworkLookupByUUID(virConnectPtr conn, { testDriverPtr privconn = conn->privateData; virNetworkObjPtr obj; + virNetworkDefPtr def; virNetworkPtr net = NULL; if (!(obj = testNetworkObjFindByUUID(privconn, uuid))) goto cleanup; + def = virNetworkObjGetDef(obj); - net = virGetNetwork(conn, obj->def->name, obj->def->uuid); + net = virGetNetwork(conn, def->name, def->uuid); cleanup: virNetworkObjEndAPI(&obj); @@ -3264,12 +3266,14 @@ testNetworkLookupByName(virConnectPtr conn, { testDriverPtr privconn = conn->privateData; virNetworkObjPtr obj; + virNetworkDefPtr def; virNetworkPtr net = NULL; if (!(obj = testNetworkObjFindByName(privconn, name))) goto cleanup; + def = virNetworkObjGetDef(obj); - net = virGetNetwork(conn, obj->def->name, obj->def->uuid); + net = virGetNetwork(conn, def->name, def->uuid); cleanup: virNetworkObjEndAPI(&obj); @@ -3384,6 +3388,7 @@ testNetworkCreateXML(virConnectPtr conn, const char *xml) testDriverPtr privconn = conn->privateData; virNetworkDefPtr def; virNetworkObjPtr obj = NULL; + virNetworkDefPtr objdef; 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; virNetworkPtr net = NULL; virObjectEventPtr event = NULL; @@ -3427,12 +3434,13 @@ testNetworkDefineXML(virConnectPtr conn, if (!(obj = virNetworkObjAssignDef(privconn->networks, def, 0))) goto cleanup; def = NULL; + objdef = virNetworkObjGetDef(obj); - event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, + event = virNetworkEventLifecycleNew(objdef->name, objdef->uuid, VIR_NETWORK_EVENT_DEFINED, 0); - net = virGetNetwork(conn, obj->def->name, obj->def->uuid); + net = virGetNetwork(conn, objdef->name, objdef->uuid); cleanup: virNetworkDefFree(def); @@ -3521,11 +3529,13 @@ testNetworkCreate(virNetworkPtr net) { testDriverPtr privconn = net->conn->privateData; virNetworkObjPtr obj; + virNetworkDefPtr def; int ret = -1; virObjectEventPtr event = NULL; if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; + def = virNetworkObjGetDef(obj); if (virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -3534,7 +3544,7 @@ testNetworkCreate(virNetworkPtr net) } obj->active = 1; - event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, + event = virNetworkEventLifecycleNew(def->name, def->uuid, VIR_NETWORK_EVENT_STARTED, 0); ret = 0; @@ -3551,14 +3561,16 @@ testNetworkDestroy(virNetworkPtr net) { testDriverPtr privconn = net->conn->privateData; virNetworkObjPtr obj; + virNetworkDefPtr def; int ret = -1; virObjectEventPtr event = NULL; if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; + def = virNetworkObjGetDef(obj); obj->active = 0; - event = virNetworkEventLifecycleNew(obj->def->name, obj->def->uuid, + event = virNetworkEventLifecycleNew(def->name, def->uuid, VIR_NETWORK_EVENT_STOPPED, 0); if (!obj->persistent) @@ -3586,7 +3598,7 @@ testNetworkGetXMLDesc(virNetworkPtr net, if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - ret = virNetworkDefFormat(obj->def, flags); + ret = virNetworkDefFormat(virNetworkObjGetDef(obj), flags); cleanup: virNetworkObjEndAPI(&obj); @@ -3600,18 +3612,20 @@ testNetworkGetBridgeName(virNetworkPtr net) testDriverPtr privconn = net->conn->privateData; char *bridge = NULL; virNetworkObjPtr obj; + virNetworkDefPtr def; if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; + def = virNetworkObjGetDef(obj); - if (!(obj->def->bridge)) { + if (!(def->bridge)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("network '%s' does not have a bridge name."), - obj->def->name); + def->name); goto cleanup; } - ignore_value(VIR_STRDUP(bridge, obj->def->bridge)); + ignore_value(VIR_STRDUP(bridge, def->bridge)); cleanup: virNetworkObjEndAPI(&obj); -- 2.9.3

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

In preparation for privatizing the virNetworkObj structure, move the guts of the Get/Set Autostart from the driver into virnetworkobj. Alter the driver to make the calls to the networkobj code. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ src/conf/virnetworkobj.h | 11 ++++++- src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 53 ++++---------------------------- src/test/test_driver.c | 6 ++-- 5 files changed, 96 insertions(+), 50 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 488fffd..a21aa26 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -121,6 +121,80 @@ virNetworkObjGetNewDef(virNetworkObjPtr obj) } +int +virNetworkObjGetAutostart(virNetworkObjPtr obj) +{ + return obj->autostart; +} + + +int +virNetworkObjSetAutostart(virNetworkObjPtr obj, + const char *configDir, + const char *autostartDir, + int autostart) +{ + virNetworkDefPtr def = obj->def; + char *configFile = NULL; + char *autostartLink = NULL; + int ret = -1; + + if (!obj->persistent) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("cannot set autostart for transient network '%s'"), + def->name); + return -1; + } + + autostart = (autostart != 0); + + if (obj->autostart != autostart) { + if (configDir && autostartDir) { + if (!(configFile = virNetworkConfigFile(configDir, def->name))) + goto cleanup; + + if (!(autostartLink = virNetworkConfigFile(autostartDir, + def->name))) + goto cleanup; + + if (autostart) { + if (virFileMakePath(autostartDir) < 0) { + virReportSystemError(errno, + _("cannot create autostart dir '%s'"), + autostartDir); + goto cleanup; + } + + if (symlink(configFile, autostartLink) < 0) { + virReportSystemError(errno, + _("failed to create symlink '%s' " + "to '%s'"), + autostartLink, configFile); + goto cleanup; + } + } else { + if (unlink(autostartLink) < 0 && + errno != ENOENT && errno != ENOTDIR) { + virReportSystemError(errno, + _("failed to delete symlink '%s'"), + autostartLink); + goto cleanup; + } + } + } + + obj->autostart = autostart; + } + + ret = 0; + + cleanup: + VIR_FREE(configFile); + VIR_FREE(autostartLink); + return ret; +} + + pid_t virNetworkObjGetDnsmasqPid(virNetworkObjPtr obj) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 4b7c982..55a5331 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -32,7 +32,7 @@ struct _virNetworkObj { pid_t dnsmasqPid; pid_t radvdPid; unsigned int active : 1; - unsigned int autostart : 1; + int autostart; unsigned int persistent : 1; virNetworkDefPtr def; /* The current definition */ @@ -56,6 +56,15 @@ virNetworkObjGetDef(virNetworkObjPtr obj); virNetworkDefPtr virNetworkObjGetNewDef(virNetworkObjPtr obj); +int +virNetworkObjGetAutostart(virNetworkObjPtr obj); + +int +virNetworkObjSetAutostart(virNetworkObjPtr obj, + const char *configDir, + const char *autostartDir, + int autostart); + virMacMapPtr virNetworkObjGetMacMap(virNetworkObjPtr obj); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6b4c37c..b148eeb 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -931,6 +931,7 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetAutostart; virNetworkObjGetClassIdMap; virNetworkObjGetDef; virNetworkObjGetDnsmasqPid; @@ -954,6 +955,7 @@ virNetworkObjNew; virNetworkObjRemoveInactive; virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; +virNetworkObjSetAutostart; virNetworkObjSetDefTransient; virNetworkObjSetDnsmasqPid; virNetworkObjSetFloorSum; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index f8e11e2..029f1b5 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -525,7 +525,7 @@ networkAutostartConfig(virNetworkObjPtr obj, int ret = -1; virObjectLock(obj); - if (obj->autostart && + if (virNetworkObjGetAutostart(obj) && !virNetworkObjIsActive(obj) && networkStartNetwork(driver, obj) < 0) goto cleanup; @@ -3963,7 +3963,7 @@ networkGetAutostart(virNetworkPtr net, if (virNetworkGetAutostartEnsureACL(net->conn, virNetworkObjGetDef(obj)) < 0) goto cleanup; - *autostart = obj->autostart; + *autostart = virNetworkObjGetAutostart(obj); ret = 0; cleanup: @@ -3978,63 +3978,22 @@ networkSetAutostart(virNetworkPtr net, { virNetworkDriverStatePtr driver = networkGetDriver(); virNetworkObjPtr obj; - virNetworkDefPtr def; - char *configFile = NULL, *autostartLink = NULL; int ret = -1; if (!(obj = networkObjFromNetwork(net))) goto cleanup; - def = virNetworkObjGetDef(obj); - if (virNetworkSetAutostartEnsureACL(net->conn, def) < 0) + if (virNetworkSetAutostartEnsureACL(net->conn, + virNetworkObjGetDef(obj)) < 0) goto cleanup; - if (!obj->persistent) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("cannot set autostart for transient network")); + if (virNetworkObjSetAutostart(obj, driver->networkConfigDir, + driver->networkAutostartDir, autostart) < 0) goto cleanup; - } - - autostart = (autostart != 0); - if (obj->autostart != autostart) { - if ((configFile = virNetworkConfigFile(driver->networkConfigDir, - def->name)) == NULL) - goto cleanup; - if ((autostartLink = virNetworkConfigFile(driver->networkAutostartDir, - def->name)) == NULL) - goto cleanup; - - if (autostart) { - if (virFileMakePath(driver->networkAutostartDir) < 0) { - virReportSystemError(errno, - _("cannot create autostart directory '%s'"), - driver->networkAutostartDir); - goto cleanup; - } - - if (symlink(configFile, autostartLink) < 0) { - virReportSystemError(errno, - _("Failed to create symlink '%s' to '%s'"), - autostartLink, configFile); - goto cleanup; - } - } else { - if (unlink(autostartLink) < 0 && errno != ENOENT && errno != ENOTDIR) { - virReportSystemError(errno, - _("Failed to delete symlink '%s'"), - autostartLink); - goto cleanup; - } - } - - obj->autostart = autostart; - } ret = 0; cleanup: - VIR_FREE(configFile); - VIR_FREE(autostartLink); virNetworkObjEndAPI(&obj); return ret; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index ee473ba..e14fc63 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -3644,7 +3644,7 @@ testNetworkGetAutostart(virNetworkPtr net, if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - *autostart = obj->autostart; + *autostart = virNetworkObjGetAutostart(obj); ret = 0; cleanup: @@ -3664,7 +3664,9 @@ testNetworkSetAutostart(virNetworkPtr net, if (!(obj = testNetworkObjFindByName(privconn, net->name))) goto cleanup; - obj->autostart = autostart ? 1 : 0; + if (virNetworkObjSetAutostart(obj, NULL, NULL, autostart) < 0) + goto cleanup; + ret = 0; cleanup: -- 2.9.3

On Fri, May 19, 2017 at 09:03:18AM -0400, John Ferlan wrote:
In preparation for privatizing the virNetworkObj structure, move the guts of the Get/Set Autostart from the driver into virnetworkobj. Alter the driver to make the calls to the networkobj code.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ src/conf/virnetworkobj.h | 11 ++++++- src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 53 ++++---------------------------- src/test/test_driver.c | 6 ++-- 5 files changed, 96 insertions(+), 50 deletions(-)
diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 488fffd..a21aa26 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -121,6 +121,80 @@ virNetworkObjGetNewDef(virNetworkObjPtr obj) }
+int +virNetworkObjGetAutostart(virNetworkObjPtr obj) +{ + return obj->autostart; +} + + +int +virNetworkObjSetAutostart(virNetworkObjPtr obj, + const char *configDir, + const char *autostartDir, + int autostart) +{ + virNetworkDefPtr def = obj->def; + char *configFile = NULL; + char *autostartLink = NULL; + int ret = -1; + + if (!obj->persistent) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("cannot set autostart for transient network '%s'"), + def->name); + return -1; + } + + autostart = (autostart != 0); + + if (obj->autostart != autostart) { + if (configDir && autostartDir) { + if (!(configFile = virNetworkConfigFile(configDir, def->name))) + goto cleanup; + + if (!(autostartLink = virNetworkConfigFile(autostartDir, + def->name))) + goto cleanup; + + if (autostart) { + if (virFileMakePath(autostartDir) < 0) { + virReportSystemError(errno, + _("cannot create autostart dir '%s'"), + autostartDir); + goto cleanup; + } + + if (symlink(configFile, autostartLink) < 0) { + virReportSystemError(errno, + _("failed to create symlink '%s' " + "to '%s'"), + autostartLink, configFile); + goto cleanup; + } + } else { + if (unlink(autostartLink) < 0 && + errno != ENOENT && errno != ENOTDIR) { + virReportSystemError(errno, + _("failed to delete symlink '%s'"), + autostartLink); + goto cleanup; + } + } + } + + obj->autostart = autostart; + } + + ret = 0; + + cleanup: + VIR_FREE(configFile); + VIR_FREE(autostartLink); + return ret; +}
The same review as for [1], keep the file operations in driver code. Pavel [1] <https://www.redhat.com/archives/libvir-list/2017-July/msg00359.html>

In order to privatize the virNetworkObj create accessors in virnetworkobj in order to handle the get/set of the active value. Also rather than an unsigned int, convert it to a boolean to match other drivers representation and the reality of what it is. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 17 ++++++++++++++++- src/conf/virnetworkobj.h | 15 ++++++++------- src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 10 +++++----- src/test/test_driver.c | 8 ++++---- 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index a21aa26..5918bce 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -121,6 +121,21 @@ virNetworkObjGetNewDef(virNetworkObjPtr obj) } +bool +virNetworkObjIsActive(virNetworkObjPtr obj) +{ + return obj->active; +} + + +void +virNetworkObjSetActive(virNetworkObjPtr obj, + bool active) +{ + obj->active = active; +} + + int virNetworkObjGetAutostart(virNetworkObjPtr obj) { @@ -1005,7 +1020,7 @@ virNetworkLoadState(virNetworkObjListPtr nets, net->floor_sum = floor_sum_val; net->taint = taint; - net->active = 1; /* any network with a state file is by definition active */ + net->active = true; /* any network with a state file is by definition active */ cleanup: VIR_FREE(configFile); diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 55a5331..60f0e0e 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -31,7 +31,7 @@ struct _virNetworkObj { pid_t dnsmasqPid; pid_t radvdPid; - unsigned int active : 1; + bool active; int autostart; unsigned int persistent : 1; @@ -56,6 +56,13 @@ virNetworkObjGetDef(virNetworkObjPtr obj); virNetworkDefPtr virNetworkObjGetNewDef(virNetworkObjPtr obj); +bool +virNetworkObjIsActive(virNetworkObjPtr obj); + +void +virNetworkObjSetActive(virNetworkObjPtr obj, + bool active); + int virNetworkObjGetAutostart(virNetworkObjPtr obj); @@ -121,12 +128,6 @@ virNetworkObjEndAPI(virNetworkObjPtr *net); typedef struct _virNetworkObjList virNetworkObjList; typedef virNetworkObjList *virNetworkObjListPtr; -static inline int -virNetworkObjIsActive(const virNetworkObj *net) -{ - return net->active; -} - virNetworkObjListPtr virNetworkObjListNew(void); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index b148eeb..85f4cbd 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -940,6 +940,7 @@ virNetworkObjGetMacMap; virNetworkObjGetNewDef; virNetworkObjGetPersistentDef; virNetworkObjGetRadvdPid; +virNetworkObjIsActive; virNetworkObjListExport; virNetworkObjListForEach; virNetworkObjListGetNames; @@ -955,6 +956,7 @@ virNetworkObjNew; virNetworkObjRemoveInactive; virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; +virNetworkObjSetActive; virNetworkObjSetAutostart; virNetworkObjSetDefTransient; virNetworkObjSetDnsmasqPid; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 029f1b5..8ac5c7b 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -451,7 +451,7 @@ networkUpdateState(virNetworkObjPtr obj, case VIR_NETWORK_FORWARD_OPEN: /* If bridge doesn't exist, then mark it inactive */ if (!(def->bridge && virNetDevExists(def->bridge) == 1)) - obj->active = 0; + virNetworkObjSetActive(obj, false); if (!(macMapFile = virNetworkObjMacMgrFileName(driver->dnsmasqStateDir, def->bridge))) @@ -467,7 +467,7 @@ networkUpdateState(virNetworkObjPtr obj, case VIR_NETWORK_FORWARD_BRIDGE: if (def->bridge) { if (virNetDevExists(def->bridge) != 1) - obj->active = 0; + virNetworkObjSetActive(obj, false); break; } /* intentionally drop through to common case for all @@ -486,7 +486,7 @@ networkUpdateState(virNetworkObjPtr obj, } /* Try and read dnsmasq/radvd pids of active networks */ - if (obj->active && def->ips && (def->nips > 0)) { + if (virNetworkObjIsActive(obj) && def->ips && (def->nips > 0)) { pid_t radvdPid; pid_t dnsmasqPid; char *radvdpidbase; @@ -2789,7 +2789,7 @@ networkStartNetwork(virNetworkDriverStatePtr driver, if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) goto cleanup; - obj->active = 1; + virNetworkObjSetActive(obj, true); VIR_INFO("Network '%s' started up", def->name); ret = 0; @@ -2859,7 +2859,7 @@ networkShutdownNetwork(virNetworkDriverStatePtr driver, networkRunHook(obj, NULL, NULL, VIR_HOOK_NETWORK_OP_STOPPED, VIR_HOOK_SUBOP_END); - obj->active = 0; + virNetworkObjSetActive(obj, false); virNetworkObjUnsetDefTransient(obj); return ret; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index e14fc63..ff03d30 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -986,7 +986,7 @@ testParseNetworks(testDriverPtr privconn, goto error; } - obj->active = 1; + virNetworkObjSetActive(obj, true); virNetworkObjEndAPI(&obj); } @@ -3401,7 +3401,7 @@ testNetworkCreateXML(virConnectPtr conn, const char *xml) goto cleanup; def = NULL; objdef = virNetworkObjGetDef(obj); - obj->active = 1; + virNetworkObjSetActive(obj, true); event = virNetworkEventLifecycleNew(objdef->name, objdef->uuid, VIR_NETWORK_EVENT_STARTED, @@ -3543,7 +3543,7 @@ testNetworkCreate(virNetworkPtr net) goto cleanup; } - obj->active = 1; + virNetworkObjSetActive(obj, true); event = virNetworkEventLifecycleNew(def->name, def->uuid, VIR_NETWORK_EVENT_STARTED, 0); @@ -3569,7 +3569,7 @@ testNetworkDestroy(virNetworkPtr net) goto cleanup; def = virNetworkObjGetDef(obj); - obj->active = 0; + virNetworkObjSetActive(obj, false); event = virNetworkEventLifecycleNew(def->name, def->uuid, VIR_NETWORK_EVENT_STOPPED, 0); -- 2.9.3

On Fri, May 19, 2017 at 09:03:19AM -0400, John Ferlan wrote:
In order to privatize the virNetworkObj create accessors in virnetworkobj in order to handle the get/set of the active value.
Also rather than an unsigned int, convert it to a boolean to match other drivers representation and the reality of what it is.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 17 ++++++++++++++++- src/conf/virnetworkobj.h | 15 ++++++++------- src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 10 +++++----- src/test/test_driver.c | 8 ++++---- 5 files changed, 35 insertions(+), 17 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

In preparation to privatize the virNetworkObj - create an accessor function to get the current @persistent value. Also change the value to a bool rather than an unsigned int (since that's how it's generated anyway). Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 7 +++++++ src/conf/virnetworkobj.h | 5 ++++- src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 7 ++++--- src/test/test_driver.c | 4 ++-- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 5918bce..229375a 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -136,6 +136,13 @@ virNetworkObjSetActive(virNetworkObjPtr obj, } +bool +virNetworkObjIsPersistent(virNetworkObjPtr obj) +{ + return obj->persistent; +} + + int virNetworkObjGetAutostart(virNetworkObjPtr obj) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 60f0e0e..666c2a5 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -33,7 +33,7 @@ struct _virNetworkObj { pid_t radvdPid; bool active; int autostart; - unsigned int persistent : 1; + bool persistent; virNetworkDefPtr def; /* The current definition */ virNetworkDefPtr newDef; /* New definition to activate at shutdown */ @@ -63,6 +63,9 @@ void virNetworkObjSetActive(virNetworkObjPtr obj, bool active); +bool +virNetworkObjIsPersistent(virNetworkObjPtr obj); + int virNetworkObjGetAutostart(virNetworkObjPtr obj); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 85f4cbd..4af8f8a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -941,6 +941,7 @@ virNetworkObjGetNewDef; virNetworkObjGetPersistentDef; virNetworkObjGetRadvdPid; virNetworkObjIsActive; +virNetworkObjIsPersistent; virNetworkObjListExport; virNetworkObjListForEach; virNetworkObjListGetNames; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 8ac5c7b..e2e9d13 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -3099,7 +3099,7 @@ networkIsPersistent(virNetworkPtr net) if (virNetworkIsPersistentEnsureACL(net->conn, virNetworkObjGetDef(obj)) < 0) goto cleanup; - ret = obj->persistent; + ret = virNetworkObjIsPersistent(obj); cleanup: virNetworkObjEndAPI(&obj); @@ -3597,7 +3597,7 @@ networkUndefine(virNetworkPtr net) if (virNetworkObjIsActive(obj)) active = true; - if (!obj->persistent) { + if (!virNetworkObjIsPersistent(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("can't undefine transient network")); goto cleanup; @@ -3875,7 +3875,8 @@ networkDestroy(virNetworkPtr net) VIR_NETWORK_EVENT_STOPPED, 0); - if (!obj->persistent && networkRemoveInactive(driver, obj) < 0) { + if (!virNetworkObjIsPersistent(obj) && + networkRemoveInactive(driver, obj) < 0) { ret = -1; goto cleanup; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index ff03d30..dd78b52 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -3374,7 +3374,7 @@ testNetworkIsPersistent(virNetworkPtr net) if (!(obj = testNetworkObjFindByUUID(privconn, net->uuid))) goto cleanup; - ret = obj->persistent; + ret = virNetworkObjIsPersistent(obj); cleanup: virNetworkObjEndAPI(&obj); @@ -3573,7 +3573,7 @@ testNetworkDestroy(virNetworkPtr net) event = virNetworkEventLifecycleNew(def->name, def->uuid, VIR_NETWORK_EVENT_STOPPED, 0); - if (!obj->persistent) + if (!virNetworkObjIsPersistent(obj)) virNetworkObjRemoveInactive(privconn->networks, obj); ret = 0; -- 2.9.3

On Fri, May 19, 2017 at 09:03:20AM -0400, John Ferlan wrote:
In preparation to privatize the virNetworkObj - create an accessor function to get the current @persistent value. Also change the value to a bool rather than an unsigned int (since that's how it's generated anyway).
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 7 +++++++ src/conf/virnetworkobj.h | 5 ++++- src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 7 ++++--- src/test/test_driver.c | 4 ++-- 5 files changed, 18 insertions(+), 6 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Consistently use @obj for a virNetworkObjPtr. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 333 +++++++++++++++++++++++------------------------ 1 file changed, 166 insertions(+), 167 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 229375a..4f32767 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -71,39 +71,39 @@ VIR_ONCE_GLOBAL_INIT(virNetworkObj) virNetworkObjPtr virNetworkObjNew(void) { - virNetworkObjPtr net; + virNetworkObjPtr obj; if (virNetworkObjInitialize() < 0) return NULL; - if (!(net = virObjectLockableNew(virNetworkObjClass))) + if (!(obj = virObjectLockableNew(virNetworkObjClass))) return NULL; - if (!(net->classIdMap = virBitmapNew(CLASS_ID_BITMAP_SIZE))) + if (!(obj->classIdMap = virBitmapNew(CLASS_ID_BITMAP_SIZE))) goto error; /* The first three class IDs are already taken */ - ignore_value(virBitmapSetBit(net->classIdMap, 0)); - ignore_value(virBitmapSetBit(net->classIdMap, 1)); - ignore_value(virBitmapSetBit(net->classIdMap, 2)); + ignore_value(virBitmapSetBit(obj->classIdMap, 0)); + ignore_value(virBitmapSetBit(obj->classIdMap, 1)); + ignore_value(virBitmapSetBit(obj->classIdMap, 2)); - return net; + return obj; error: - virObjectUnref(net); + virObjectUnref(obj); return NULL; } void -virNetworkObjEndAPI(virNetworkObjPtr *net) +virNetworkObjEndAPI(virNetworkObjPtr *obj) { - if (!*net) + if (!*obj) return; - virObjectUnlock(*net); - virObjectUnref(*net); - *net = NULL; + virObjectUnlock(*obj); + virObjectUnref(*obj); + *obj = NULL; } @@ -399,15 +399,15 @@ virNetworkObjPtr virNetworkObjFindByUUIDLocked(virNetworkObjListPtr nets, const unsigned char *uuid) { - virNetworkObjPtr ret = NULL; + virNetworkObjPtr obj = NULL; char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(uuid, uuidstr); - ret = virHashLookup(nets->objs, uuidstr); - if (ret) - virObjectRef(ret); - return ret; + obj = virHashLookup(nets->objs, uuidstr); + if (obj) + virObjectRef(obj); + return obj; } @@ -425,14 +425,14 @@ virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets, const unsigned char *uuid) { - virNetworkObjPtr ret; + virNetworkObjPtr obj; virObjectLock(nets); - ret = virNetworkObjFindByUUIDLocked(nets, uuid); + obj = virNetworkObjFindByUUIDLocked(nets, uuid); virObjectUnlock(nets); - if (ret) - virObjectLock(ret); - return ret; + if (obj) + virObjectLock(obj); + return obj; } @@ -441,13 +441,13 @@ virNetworkObjSearchName(const void *payload, const void *name ATTRIBUTE_UNUSED, const void *data) { - virNetworkObjPtr net = (virNetworkObjPtr) payload; + virNetworkObjPtr obj = (virNetworkObjPtr) payload; int want = 0; - virObjectLock(net); - if (STREQ(net->def->name, (const char *)data)) + virObjectLock(obj); + if (STREQ(obj->def->name, (const char *)data)) want = 1; - virObjectUnlock(net); + virObjectUnlock(obj); return want; } @@ -465,12 +465,12 @@ virNetworkObjPtr virNetworkObjFindByNameLocked(virNetworkObjListPtr nets, const char *name) { - virNetworkObjPtr ret = NULL; + virNetworkObjPtr obj = NULL; - ret = virHashSearch(nets->objs, virNetworkObjSearchName, name); - if (ret) - virObjectRef(ret); - return ret; + obj = virHashSearch(nets->objs, virNetworkObjSearchName, name); + if (obj) + virObjectRef(obj); + return obj; } @@ -488,14 +488,14 @@ virNetworkObjPtr virNetworkObjFindByName(virNetworkObjListPtr nets, const char *name) { - virNetworkObjPtr ret; + virNetworkObjPtr obj; virObjectLock(nets); - ret = virNetworkObjFindByNameLocked(nets, name); + obj = virNetworkObjFindByNameLocked(nets, name); virObjectUnlock(nets); - if (ret) - virObjectLock(ret); - return ret; + if (obj) + virObjectLock(obj); + return obj; } @@ -514,21 +514,21 @@ virNetworkObjTaint(virNetworkObjPtr obj, static void -virNetworkObjDispose(void *obj) +virNetworkObjDispose(void *opaque) { - virNetworkObjPtr net = obj; + virNetworkObjPtr obj = opaque; - virNetworkDefFree(net->def); - virNetworkDefFree(net->newDef); - virBitmapFree(net->classIdMap); - virObjectUnref(net->macmap); + virNetworkDefFree(obj->def); + virNetworkDefFree(obj->newDef); + virBitmapFree(obj->classIdMap); + virObjectUnref(obj->macmap); } static void -virNetworkObjListDispose(void *obj) +virNetworkObjListDispose(void *opaque) { - virNetworkObjListPtr nets = obj; + virNetworkObjListPtr nets = opaque; virHashFree(nets->objs); } @@ -551,7 +551,7 @@ virNetworkObjListDispose(void *obj) * */ void -virNetworkObjUpdateAssignDef(virNetworkObjPtr network, +virNetworkObjUpdateAssignDef(virNetworkObjPtr obj, virNetworkDefPtr def, bool live) { @@ -560,38 +560,38 @@ virNetworkObjUpdateAssignDef(virNetworkObjPtr network, * existing persistent (!live) def to be restored when the * network is destroyed, unless there is one already saved. */ - if (network->persistent && !network->newDef) - network->newDef = network->def; + if (obj->persistent && !obj->newDef) + obj->newDef = obj->def; else - virNetworkDefFree(network->def); - network->def = def; + virNetworkDefFree(obj->def); + obj->def = def; } else { /* !live */ - virNetworkDefFree(network->newDef); - if (virNetworkObjIsActive(network)) { + virNetworkDefFree(obj->newDef); + if (virNetworkObjIsActive(obj)) { /* save new configuration to be restored on network * shutdown, leaving current live def alone */ - network->newDef = def; + obj->newDef = def; } else { /* !live and !active */ - if (network->def && !network->persistent) { + if (obj->def && !obj->persistent) { /* network isn't (yet) marked active or persistent, * but already has a "live" def set. This means we are * currently setting the persistent def as a part of * the process of starting the network, so we need to * preserve the "not yet live" def in network->def. */ - network->newDef = def; + obj->newDef = def; } else { /* either there is no live def set, or this network * was already set as persistent, so the proper thing * is to overwrite network->def. */ - network->newDef = NULL; - virNetworkDefFree(network->def); - network->def = def; + obj->newDef = NULL; + virNetworkDefFree(obj->def); + obj->def = def; } } - network->persistent = !!def; + obj->persistent = !!def; } } @@ -611,65 +611,64 @@ virNetworkObjAssignDefLocked(virNetworkObjListPtr nets, virNetworkDefPtr def, unsigned int flags) { - virNetworkObjPtr network; + virNetworkObjPtr obj; virNetworkObjPtr ret = NULL; char uuidstr[VIR_UUID_STRING_BUFLEN]; /* See if a network with matching UUID already exists */ - if ((network = virNetworkObjFindByUUIDLocked(nets, def->uuid))) { - virObjectLock(network); + if ((obj = virNetworkObjFindByUUIDLocked(nets, def->uuid))) { + virObjectLock(obj); /* UUID matches, but if names don't match, refuse it */ - if (STRNEQ(network->def->name, def->name)) { - virUUIDFormat(network->def->uuid, uuidstr); + if (STRNEQ(obj->def->name, def->name)) { + virUUIDFormat(obj->def->uuid, uuidstr); virReportError(VIR_ERR_OPERATION_FAILED, _("network '%s' is already defined with uuid %s"), - network->def->name, uuidstr); + obj->def->name, uuidstr); goto cleanup; } if (flags & VIR_NETWORK_OBJ_LIST_ADD_CHECK_LIVE) { /* UUID & name match, but if network is already active, refuse it */ - if (virNetworkObjIsActive(network)) { + if (virNetworkObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("network is already active as '%s'"), - network->def->name); + obj->def->name); goto cleanup; } } - virNetworkObjUpdateAssignDef(network, - def, + virNetworkObjUpdateAssignDef(obj, def, !!(flags & VIR_NETWORK_OBJ_LIST_ADD_LIVE)); } else { /* UUID does not match, but if a name matches, refuse it */ - if ((network = virNetworkObjFindByNameLocked(nets, def->name))) { - virObjectLock(network); - virUUIDFormat(network->def->uuid, uuidstr); + if ((obj = virNetworkObjFindByNameLocked(nets, def->name))) { + virObjectLock(obj); + virUUIDFormat(obj->def->uuid, uuidstr); virReportError(VIR_ERR_OPERATION_FAILED, _("network '%s' already exists with uuid %s"), def->name, uuidstr); goto cleanup; } - if (!(network = virNetworkObjNew())) + if (!(obj = virNetworkObjNew())) goto cleanup; - virObjectLock(network); + virObjectLock(obj); virUUIDFormat(def->uuid, uuidstr); - if (virHashAddEntry(nets->objs, uuidstr, network) < 0) + if (virHashAddEntry(nets->objs, uuidstr, obj) < 0) goto cleanup; - network->def = def; - network->persistent = !(flags & VIR_NETWORK_OBJ_LIST_ADD_LIVE); - virObjectRef(network); + obj->def = def; + obj->persistent = !(flags & VIR_NETWORK_OBJ_LIST_ADD_LIVE); + virObjectRef(obj); } - ret = network; - network = NULL; + ret = obj; + obj = NULL; cleanup: - virNetworkObjEndAPI(&network); + virNetworkObjEndAPI(&obj); return ret; } @@ -694,12 +693,12 @@ virNetworkObjAssignDef(virNetworkObjListPtr nets, virNetworkDefPtr def, unsigned int flags) { - virNetworkObjPtr network; + virNetworkObjPtr obj; virObjectLock(nets); - network = virNetworkObjAssignDefLocked(nets, def, flags); + obj = virNetworkObjAssignDefLocked(nets, def, flags); virObjectUnlock(nets); - return network; + return obj; } @@ -718,17 +717,17 @@ virNetworkObjAssignDef(virNetworkObjListPtr nets, * Returns 0 on success, -1 on failure */ int -virNetworkObjSetDefTransient(virNetworkObjPtr network, +virNetworkObjSetDefTransient(virNetworkObjPtr obj, bool live) { - if (!virNetworkObjIsActive(network) && !live) + if (!virNetworkObjIsActive(obj) && !live) return 0; - if (!network->persistent || network->newDef) + if (!obj->persistent || obj->newDef) return 0; - network->newDef = virNetworkDefCopy(network->def, VIR_NETWORK_XML_INACTIVE); - return network->newDef ? 0 : -1; + obj->newDef = virNetworkDefCopy(obj->def, VIR_NETWORK_XML_INACTIVE); + return obj->newDef ? 0 : -1; } @@ -737,12 +736,12 @@ virNetworkObjSetDefTransient(virNetworkObjPtr network, * This *undoes* what virNetworkObjSetDefTransient did. */ void -virNetworkObjUnsetDefTransient(virNetworkObjPtr network) +virNetworkObjUnsetDefTransient(virNetworkObjPtr obj) { - if (network->newDef) { - virNetworkDefFree(network->def); - network->def = network->newDef; - network->newDef = NULL; + if (obj->newDef) { + virNetworkDefFree(obj->def); + obj->def = obj->newDef; + obj->newDef = NULL; } } @@ -757,12 +756,12 @@ virNetworkObjUnsetDefTransient(virNetworkObjPtr network) * Returns NULL on error, virNetworkDefPtr on success. */ virNetworkDefPtr -virNetworkObjGetPersistentDef(virNetworkObjPtr network) +virNetworkObjGetPersistentDef(virNetworkObjPtr obj) { - if (network->newDef) - return network->newDef; + if (obj->newDef) + return obj->newDef; else - return network->def; + return obj->def; } @@ -778,15 +777,15 @@ virNetworkObjGetPersistentDef(virNetworkObjPtr network) * Returns -1 on error, 0 on success */ int -virNetworkObjReplacePersistentDef(virNetworkObjPtr network, +virNetworkObjReplacePersistentDef(virNetworkObjPtr obj, virNetworkDefPtr def) { - if (virNetworkObjIsActive(network)) { - virNetworkDefFree(network->newDef); - network->newDef = def; + if (virNetworkObjIsActive(obj)) { + virNetworkDefFree(obj->newDef); + obj->newDef = def; } else { - virNetworkDefFree(network->def); - network->def = def; + virNetworkDefFree(obj->def); + obj->def = def; } return 0; } @@ -804,13 +803,13 @@ virNetworkObjReplacePersistentDef(virNetworkObjPtr network, * Returns 0 on success, -1 on error. */ static int -virNetworkObjConfigChangeSetup(virNetworkObjPtr network, +virNetworkObjConfigChangeSetup(virNetworkObjPtr obj, unsigned int flags) { bool isActive; int ret = -1; - isActive = virNetworkObjIsActive(network); + isActive = virNetworkObjIsActive(obj); if (!isActive && (flags & VIR_NETWORK_UPDATE_AFFECT_LIVE)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", @@ -819,7 +818,7 @@ virNetworkObjConfigChangeSetup(virNetworkObjPtr network, } if (flags & VIR_NETWORK_UPDATE_AFFECT_CONFIG) { - if (!network->persistent) { + if (!obj->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot change persistent config of a " "transient network")); @@ -828,7 +827,7 @@ virNetworkObjConfigChangeSetup(virNetworkObjPtr network, /* this should already have been done by the driver, but do it * anyway just in case. */ - if (isActive && (virNetworkObjSetDefTransient(network, false) < 0)) + if (isActive && (virNetworkObjSetDefTransient(obj, false) < 0)) goto cleanup; } @@ -840,27 +839,27 @@ virNetworkObjConfigChangeSetup(virNetworkObjPtr network, void virNetworkObjRemoveInactive(virNetworkObjListPtr nets, - virNetworkObjPtr net) + virNetworkObjPtr obj) { char uuidstr[VIR_UUID_STRING_BUFLEN]; - virUUIDFormat(net->def->uuid, uuidstr); - virObjectRef(net); - virObjectUnlock(net); + virUUIDFormat(obj->def->uuid, uuidstr); + virObjectRef(obj); + virObjectUnlock(obj); virObjectLock(nets); - virObjectLock(net); + virObjectLock(obj); virHashRemoveEntry(nets->objs, uuidstr); virObjectUnlock(nets); - virObjectUnref(net); + virObjectUnref(obj); } static char * -virNetworkObjFormat(virNetworkObjPtr net, +virNetworkObjFormat(virNetworkObjPtr obj, unsigned int flags) { virBuffer buf = VIR_BUFFER_INITIALIZER; - char *classIdStr = virBitmapFormat(net->classIdMap); + char *classIdStr = virBitmapFormat(obj->classIdMap); size_t i; if (!classIdStr) @@ -869,16 +868,16 @@ virNetworkObjFormat(virNetworkObjPtr net, virBufferAddLit(&buf, "<networkstatus>\n"); virBufferAdjustIndent(&buf, 2); virBufferAsprintf(&buf, "<class_id bitmap='%s'/>\n", classIdStr); - virBufferAsprintf(&buf, "<floor sum='%llu'/>\n", net->floor_sum); + virBufferAsprintf(&buf, "<floor sum='%llu'/>\n", obj->floor_sum); VIR_FREE(classIdStr); for (i = 0; i < VIR_NETWORK_TAINT_LAST; i++) { - if (net->taint & (1 << i)) + if (obj->taint & (1 << i)) virBufferAsprintf(&buf, "<taint flag='%s'/>\n", virNetworkTaintTypeToString(i)); } - if (virNetworkDefFormatBuf(&buf, net->def, flags) < 0) + if (virNetworkDefFormatBuf(&buf, obj->def, flags) < 0) goto error; virBufferAdjustIndent(&buf, -2); @@ -897,16 +896,16 @@ virNetworkObjFormat(virNetworkObjPtr net, int virNetworkObjSaveStatus(const char *statusDir, - virNetworkObjPtr network) + virNetworkObjPtr obj) { int ret = -1; int flags = 0; char *xml; - if (!(xml = virNetworkObjFormat(network, flags))) + if (!(xml = virNetworkObjFormat(obj, flags))) goto cleanup; - if (virNetworkSaveXML(statusDir, network->def, xml)) + if (virNetworkSaveXML(statusDir, obj->def, xml)) goto cleanup; ret = 0; @@ -923,7 +922,7 @@ virNetworkLoadState(virNetworkObjListPtr nets, { char *configFile = NULL; virNetworkDefPtr def = NULL; - virNetworkObjPtr net = NULL; + virNetworkObjPtr obj = NULL; xmlDocPtr xml = NULL; xmlNodePtr node = NULL, *nodes = NULL; xmlXPathContextPtr ctxt = NULL; @@ -1012,28 +1011,28 @@ virNetworkLoadState(virNetworkObjListPtr nets, } /* create the object */ - if (!(net = virNetworkObjAssignDef(nets, def, + if (!(obj = virNetworkObjAssignDef(nets, def, VIR_NETWORK_OBJ_LIST_ADD_LIVE))) goto error; /* do not put any "goto error" below this comment */ /* assign status data stored in the network object */ if (classIdMap) { - virBitmapFree(net->classIdMap); - net->classIdMap = classIdMap; + virBitmapFree(obj->classIdMap); + obj->classIdMap = classIdMap; } if (floor_sum_val > 0) - net->floor_sum = floor_sum_val; + obj->floor_sum = floor_sum_val; - net->taint = taint; - net->active = true; /* any network with a state file is by definition active */ + obj->taint = taint; + obj->active = true; /* network with a state file is by definition active */ cleanup: VIR_FREE(configFile); xmlFreeDoc(xml); xmlXPathFreeContext(ctxt); - return net; + return obj; error: VIR_FREE(nodes); @@ -1051,7 +1050,7 @@ virNetworkLoadConfig(virNetworkObjListPtr nets, { char *configFile = NULL, *autostartLink = NULL; virNetworkDefPtr def = NULL; - virNetworkObjPtr net; + virNetworkObjPtr obj; int autostart; if ((configFile = virNetworkConfigFile(configDir, name)) == NULL) @@ -1088,15 +1087,15 @@ virNetworkLoadConfig(virNetworkObjListPtr nets, def->mac_specified = false; } - if (!(net = virNetworkObjAssignDef(nets, def, 0))) + if (!(obj = virNetworkObjAssignDef(nets, def, 0))) goto error; - net->autostart = autostart; + obj->autostart = autostart; VIR_FREE(configFile); VIR_FREE(autostartLink); - return net; + return obj; error: VIR_FREE(configFile); @@ -1119,13 +1118,13 @@ virNetworkObjLoadAllState(virNetworkObjListPtr nets, return rc; while ((ret = virDirRead(dir, &entry, stateDir)) > 0) { - virNetworkObjPtr net; + virNetworkObjPtr obj; if (!virFileStripSuffix(entry->d_name, ".xml")) continue; - net = virNetworkLoadState(nets, stateDir, entry->d_name); - virNetworkObjEndAPI(&net); + obj = virNetworkLoadState(nets, stateDir, entry->d_name); + virNetworkObjEndAPI(&obj); } VIR_DIR_CLOSE(dir); @@ -1147,18 +1146,18 @@ virNetworkObjLoadAllConfigs(virNetworkObjListPtr nets, return rc; while ((ret = virDirRead(dir, &entry, configDir)) > 0) { - virNetworkObjPtr net; + virNetworkObjPtr obj; if (!virFileStripSuffix(entry->d_name, ".xml")) continue; /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ - net = virNetworkLoadConfig(nets, + obj = virNetworkLoadConfig(nets, configDir, autostartDir, entry->d_name); - virNetworkObjEndAPI(&net); + virNetworkObjEndAPI(&obj); } VIR_DIR_CLOSE(dir); @@ -1169,20 +1168,20 @@ virNetworkObjLoadAllConfigs(virNetworkObjListPtr nets, int virNetworkObjDeleteConfig(const char *configDir, const char *autostartDir, - virNetworkObjPtr net) + virNetworkObjPtr obj) { char *configFile = NULL; char *autostartLink = NULL; int ret = -1; - if ((configFile = virNetworkConfigFile(configDir, net->def->name)) == NULL) + if (!(configFile = virNetworkConfigFile(configDir, obj->def->name))) goto error; - if ((autostartLink = virNetworkConfigFile(autostartDir, net->def->name)) == NULL) + if (!(autostartLink = virNetworkConfigFile(autostartDir, obj->def->name))) goto error; /* Not fatal if this doesn't work */ unlink(autostartLink); - net->autostart = 0; + obj->autostart = 0; if (unlink(configFile) < 0) { virReportSystemError(errno, @@ -1211,22 +1210,22 @@ virNetworkObjBridgeInUseHelper(const void *payload, const void *opaque) { int ret; - virNetworkObjPtr net = (virNetworkObjPtr) payload; + virNetworkObjPtr obj = (virNetworkObjPtr) payload; const struct virNetworkObjBridgeInUseHelperData *data = opaque; - virObjectLock(net); + virObjectLock(obj); if (data->skipname && - ((net->def && STREQ(net->def->name, data->skipname)) || - (net->newDef && STREQ(net->newDef->name, data->skipname)))) + ((obj->def && STREQ(obj->def->name, data->skipname)) || + (obj->newDef && STREQ(obj->newDef->name, data->skipname)))) ret = 0; - else if ((net->def && net->def->bridge && - STREQ(net->def->bridge, data->bridge)) || - (net->newDef && net->newDef->bridge && - STREQ(net->newDef->bridge, data->bridge))) + else if ((obj->def && obj->def->bridge && + STREQ(obj->def->bridge, data->bridge)) || + (obj->newDef && obj->newDef->bridge && + STREQ(obj->newDef->bridge, data->bridge))) ret = 1; else ret = 0; - virObjectUnlock(net); + virObjectUnlock(obj); return ret; } @@ -1262,7 +1261,7 @@ virNetworkObjBridgeInUse(virNetworkObjListPtr nets, * Returns: -1 on error, 0 on success. */ int -virNetworkObjUpdate(virNetworkObjPtr network, +virNetworkObjUpdate(virNetworkObjPtr obj, unsigned int command, /* virNetworkUpdateCommand */ unsigned int section, /* virNetworkUpdateSection */ int parentIndex, @@ -1273,14 +1272,14 @@ virNetworkObjUpdate(virNetworkObjPtr network, virNetworkDefPtr livedef = NULL, configdef = NULL; /* normalize config data, and check for common invalid requests. */ - if (virNetworkObjConfigChangeSetup(network, flags) < 0) + if (virNetworkObjConfigChangeSetup(obj, flags) < 0) goto cleanup; if (flags & VIR_NETWORK_UPDATE_AFFECT_LIVE) { virNetworkDefPtr checkdef; /* work on a copy of the def */ - if (!(livedef = virNetworkDefCopy(network->def, 0))) + if (!(livedef = virNetworkDefCopy(obj->def, 0))) goto cleanup; if (virNetworkDefUpdateSection(livedef, command, section, parentIndex, xml, flags) < 0) { @@ -1298,7 +1297,7 @@ virNetworkObjUpdate(virNetworkObjPtr network, virNetworkDefPtr checkdef; /* work on a copy of the def */ - if (!(configdef = virNetworkDefCopy(virNetworkObjGetPersistentDef(network), + if (!(configdef = virNetworkDefCopy(virNetworkObjGetPersistentDef(obj), VIR_NETWORK_XML_INACTIVE))) { goto cleanup; } @@ -1315,14 +1314,14 @@ virNetworkObjUpdate(virNetworkObjPtr network, if (configdef) { /* successfully modified copy, now replace original */ - if (virNetworkObjReplacePersistentDef(network, configdef) < 0) + if (virNetworkObjReplacePersistentDef(obj, configdef) < 0) goto cleanup; configdef = NULL; } if (livedef) { /* successfully modified copy, now replace original */ - virNetworkDefFree(network->def); - network->def = livedef; + virNetworkDefFree(obj->def); + obj->def = livedef; livedef = NULL; } @@ -1336,31 +1335,31 @@ virNetworkObjUpdate(virNetworkObjPtr network, #define MATCH(FLAG) (flags & (FLAG)) static bool -virNetworkMatch(virNetworkObjPtr netobj, +virNetworkMatch(virNetworkObjPtr obj, unsigned int flags) { /* filter by active state */ if (MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_ACTIVE) && !((MATCH(VIR_CONNECT_LIST_NETWORKS_ACTIVE) && - virNetworkObjIsActive(netobj)) || + virNetworkObjIsActive(obj)) || (MATCH(VIR_CONNECT_LIST_NETWORKS_INACTIVE) && - !virNetworkObjIsActive(netobj)))) + !virNetworkObjIsActive(obj)))) return false; /* filter by persistence */ if (MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_PERSISTENT) && !((MATCH(VIR_CONNECT_LIST_NETWORKS_PERSISTENT) && - netobj->persistent) || + obj->persistent) || (MATCH(VIR_CONNECT_LIST_NETWORKS_TRANSIENT) && - !netobj->persistent))) + !obj->persistent))) return false; /* filter by autostart option */ if (MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_AUTOSTART) && !((MATCH(VIR_CONNECT_LIST_NETWORKS_AUTOSTART) && - netobj->autostart) || + obj->autostart) || (MATCH(VIR_CONNECT_LIST_NETWORKS_NO_AUTOSTART) && - !netobj->autostart))) + !obj->autostart))) return false; return true; -- 2.9.3

On Fri, May 19, 2017 at 09:03:21AM -0400, John Ferlan wrote:
Consistently use @obj for a virNetworkObjPtr.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 333 +++++++++++++++++++++++------------------------ 1 file changed, 166 insertions(+), 167 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Have the call take a virNetworkDefPtr and save it in the object. Have virNetworkObjNew return a locked obj Avoids the need for a virNetworkObjSetDef type API for the one test need. Update the test code and do some other name changes to make it look like other code. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 10 +++++----- src/conf/virnetworkobj.h | 2 +- tests/networkxml2conftest.c | 13 +++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 4f32767..fa1e396 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -69,7 +69,7 @@ virNetworkObjOnceInit(void) VIR_ONCE_GLOBAL_INIT(virNetworkObj) virNetworkObjPtr -virNetworkObjNew(void) +virNetworkObjNew(virNetworkDefPtr def) { virNetworkObjPtr obj; @@ -87,6 +87,9 @@ virNetworkObjNew(void) ignore_value(virBitmapSetBit(obj->classIdMap, 1)); ignore_value(virBitmapSetBit(obj->classIdMap, 2)); + virObjectLock(obj); + obj->def = def; + return obj; error: @@ -650,16 +653,13 @@ virNetworkObjAssignDefLocked(virNetworkObjListPtr nets, goto cleanup; } - if (!(obj = virNetworkObjNew())) + if (!(obj = virNetworkObjNew(def))) goto cleanup; - virObjectLock(obj); - virUUIDFormat(def->uuid, uuidstr); if (virHashAddEntry(nets->objs, uuidstr, obj) < 0) goto cleanup; - obj->def = def; obj->persistent = !(flags & VIR_NETWORK_OBJ_LIST_ADD_LIVE); virObjectRef(obj); } diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 666c2a5..b81ffa8 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -48,7 +48,7 @@ struct _virNetworkObj { }; virNetworkObjPtr -virNetworkObjNew(void); +virNetworkObjNew(virNetworkDefPtr def); virNetworkDefPtr virNetworkObjGetDef(virNetworkObjPtr obj); diff --git a/tests/networkxml2conftest.c b/tests/networkxml2conftest.c index ab3c13a..6cbfa55 100644 --- a/tests/networkxml2conftest.c +++ b/tests/networkxml2conftest.c @@ -23,20 +23,21 @@ testCompareXMLToConfFiles(const char *inxml, const char *outconf, dnsmasqCapsPtr { char *actual = NULL; int ret = -1; - virNetworkDefPtr dev = NULL; + virNetworkDefPtr def = NULL; virNetworkObjPtr obj = NULL; + virNetworkDefPtr objdef; virCommandPtr cmd = NULL; char *pidfile = NULL; dnsmasqContext *dctx = NULL; - if (!(dev = virNetworkDefParseFile(inxml))) + if (!(def = virNetworkDefParseFile(inxml))) goto fail; - if (!(obj = virNetworkObjNew())) + if (!(obj = virNetworkObjNew(def))) goto fail; + objdef = virNetworkObjGetDef(obj); - obj->def = dev; - dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); + dctx = dnsmasqContextNew(objdef->name, "/var/lib/libvirt/dnsmasq"); if (dctx == NULL) goto fail; @@ -66,7 +67,7 @@ testCompareXMLToConfFiles(const char *inxml, const char *outconf, dnsmasqCapsPtr VIR_FREE(actual); VIR_FREE(pidfile); virCommandFree(cmd); - virObjectUnref(obj); + virNetworkObjEndAPI(&obj); dnsmasqContextFree(dctx); return ret; } -- 2.9.3

On Fri, May 19, 2017 at 09:03:22AM -0400, John Ferlan wrote:
Have the call take a virNetworkDefPtr and save it in the object.
Have virNetworkObjNew return a locked obj
Avoids the need for a virNetworkObjSetDef type API for the one test need. Update the test code and do some other name changes to make it look like other code.
As it was already objected, I would rather have the virNetworkObjSetDef() API instead of requiring to have the @def as argument for virNetworkObjNew(). It give us more flexibility. Pavel

Use the structure names in the @data setup - makes it easier that going back to find the struct. Use the @maxnames instead of @nnames since that's what it is. Modify the @filter to be @aclfilter and change the typedef from virNetworkObjListFilter to virNetworkObjListACLFilter. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 39 ++++++++++++++++++++++----------------- src/conf/virnetworkobj.h | 12 ++++++------ src/network/bridge_driver.c | 8 ++++---- src/test/test_driver.c | 8 ++++---- 4 files changed, 36 insertions(+), 31 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index fa1e396..cc45a00 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -1370,7 +1370,7 @@ virNetworkMatch(virNetworkObjPtr obj, struct virNetworkObjListData { virConnectPtr conn; virNetworkPtr *nets; - virNetworkObjListFilter filter; + virNetworkObjListACLFilter aclfilter; unsigned int flags; int nnets; bool error; @@ -1390,8 +1390,8 @@ virNetworkObjListPopulate(void *payload, virObjectLock(obj); - if (data->filter && - !data->filter(data->conn, obj->def)) + if (data->aclfilter && + !data->aclfilter(data->conn, obj->def)) goto cleanup; if (!virNetworkMatch(obj, data->flags)) @@ -1419,11 +1419,13 @@ int virNetworkObjListExport(virConnectPtr conn, virNetworkObjListPtr netobjs, virNetworkPtr **nets, - virNetworkObjListFilter filter, + virNetworkObjListACLFilter aclfilter, unsigned int flags) { int ret = -1; - struct virNetworkObjListData data = { conn, NULL, filter, flags, 0, false}; + struct virNetworkObjListData data = { + .conn = conn, .nets = NULL, .aclfilter = aclfilter, .flags = flags, + .nnets = 0, .error = false }; virObjectLock(netobjs); if (nets && VIR_ALLOC_N(data.nets, virHashSize(netobjs->objs) + 1) < 0) @@ -1489,7 +1491,8 @@ virNetworkObjListForEach(virNetworkObjListPtr nets, virNetworkObjListIterator callback, void *opaque) { - struct virNetworkObjListForEachHelperData data = {callback, opaque, 0}; + struct virNetworkObjListForEachHelperData data = { + .callback = callback, .opaque = opaque, .ret = 0}; virObjectLock(nets); virHashForEach(nets->objs, virNetworkObjListForEachHelper, &data); virObjectUnlock(nets); @@ -1499,9 +1502,9 @@ virNetworkObjListForEach(virNetworkObjListPtr nets, struct virNetworkObjListGetHelperData { virConnectPtr conn; - virNetworkObjListFilter filter; + virNetworkObjListACLFilter aclfilter; char **names; - int nnames; + int maxnames; bool active; int got; bool error; @@ -1518,14 +1521,14 @@ virNetworkObjListGetHelper(void *payload, if (data->error) return 0; - if (data->nnames >= 0 && - data->got == data->nnames) + if (data->maxnames >= 0 && + data->got == data->maxnames) return 0; virObjectLock(obj); - if (data->filter && - !data->filter(data->conn, obj->def)) + if (data->aclfilter && + !data->aclfilter(data->conn, obj->def)) goto cleanup; if ((data->active && virNetworkObjIsActive(obj)) || @@ -1548,14 +1551,15 @@ int virNetworkObjListGetNames(virNetworkObjListPtr nets, bool active, char **names, - int nnames, - virNetworkObjListFilter filter, + int maxnames, + virNetworkObjListACLFilter aclfilter, virConnectPtr conn) { int ret = -1; struct virNetworkObjListGetHelperData data = { - conn, filter, names, nnames, active, 0, false}; + .conn = conn, .aclfilter = aclfilter, .names = names, + .maxnames = maxnames, .active = active, .got = 0, .error = false}; virObjectLock(nets); virHashForEach(nets->objs, virNetworkObjListGetHelper, &data); @@ -1577,11 +1581,12 @@ virNetworkObjListGetNames(virNetworkObjListPtr nets, int virNetworkObjListNumOfNetworks(virNetworkObjListPtr nets, bool active, - virNetworkObjListFilter filter, + virNetworkObjListACLFilter aclfilter, virConnectPtr conn) { struct virNetworkObjListGetHelperData data = { - conn, filter, NULL, -1, active, 0, false}; + .conn = conn, .aclfilter = aclfilter, .names = NULL, + .maxnames = -1, .active = active, .got = 0, .error = false}; virObjectLock(nets); virHashForEach(nets->objs, virNetworkObjListGetHelper, &data); diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index b81ffa8..72afbcd 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -155,8 +155,8 @@ virNetworkObjTaint(virNetworkObjPtr obj, virNetworkTaintFlags taint); typedef bool -(*virNetworkObjListFilter)(virConnectPtr conn, - virNetworkDefPtr def); +(*virNetworkObjListACLFilter)(virConnectPtr conn, + virNetworkDefPtr def); virNetworkObjPtr virNetworkObjAssignDef(virNetworkObjListPtr nets, @@ -221,7 +221,7 @@ int virNetworkObjListExport(virConnectPtr conn, virNetworkObjListPtr netobjs, virNetworkPtr **nets, - virNetworkObjListFilter filter, + virNetworkObjListACLFilter aclfilter, unsigned int flags); typedef int @@ -237,14 +237,14 @@ int virNetworkObjListGetNames(virNetworkObjListPtr nets, bool active, char **names, - int nnames, - virNetworkObjListFilter filter, + int maxnames, + virNetworkObjListACLFilter aclfilter, virConnectPtr conn); int virNetworkObjListNumOfNetworks(virNetworkObjListPtr nets, bool active, - virNetworkObjListFilter filter, + virNetworkObjListACLFilter aclfilter, virConnectPtr conn); void diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index e2e9d13..47709ef 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2945,7 +2945,7 @@ networkConnectNumOfNetworks(virConnectPtr conn) static int networkConnectListNetworks(virConnectPtr conn, char **const names, - int nnames) + int maxnames) { virNetworkDriverStatePtr driver = networkGetDriver(); int got = 0; @@ -2954,7 +2954,7 @@ networkConnectListNetworks(virConnectPtr conn, return -1; got = virNetworkObjListGetNames(driver->networks, - true, names, nnames, + true, names, maxnames, virConnectListNetworksCheckACL, conn); @@ -2983,7 +2983,7 @@ networkConnectNumOfDefinedNetworks(virConnectPtr conn) static int networkConnectListDefinedNetworks(virConnectPtr conn, char **const names, - int nnames) + int maxnames) { virNetworkDriverStatePtr driver = networkGetDriver(); int got = 0; @@ -2992,7 +2992,7 @@ networkConnectListDefinedNetworks(virConnectPtr conn, return -1; got = virNetworkObjListGetNames(driver->networks, - false, names, nnames, + false, names, maxnames, virConnectListDefinedNetworksCheckACL, conn); return got; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index dd78b52..4dd469a 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -3296,13 +3296,13 @@ testConnectNumOfNetworks(virConnectPtr conn) static int testConnectListNetworks(virConnectPtr conn, char **const names, - int nnames) + int maxnames) { testDriverPtr privconn = conn->privateData; int n; n = virNetworkObjListGetNames(privconn->networks, - true, names, nnames, NULL, conn); + true, names, maxnames, NULL, conn); return n; } @@ -3322,13 +3322,13 @@ testConnectNumOfDefinedNetworks(virConnectPtr conn) static int testConnectListDefinedNetworks(virConnectPtr conn, char **const names, - int nnames) + int maxnames) { testDriverPtr privconn = conn->privateData; int n; n = virNetworkObjListGetNames(privconn->networks, - false, names, nnames, NULL, conn); + false, names, maxnames, NULL, conn); return n; } -- 2.9.3

On Fri, May 19, 2017 at 09:03:23AM -0400, John Ferlan wrote:
Use the structure names in the @data setup - makes it easier that going back to find the struct.
Use the @maxnames instead of @nnames since that's what it is.
Please use camelCase -> @maxNames.
Modify the @filter to be @aclfilter and change the typedef from virNetworkObjListFilter to virNetworkObjListACLFilter.
NACK to this change, even though it's used only to filter by ACLs, it can be used to filter by anything. This patch does three things in one, so it should be three separate patches. Since the last change is not correct split the remaining changes into two patches. Pavel

On 07/24/2017 07:49 AM, Pavel Hrdina wrote:
On Fri, May 19, 2017 at 09:03:23AM -0400, John Ferlan wrote:
Use the structure names in the @data setup - makes it easier that going back to find the struct.
Use the @maxnames instead of @nnames since that's what it is.
Please use camelCase -> @maxNames.
This I disagree with as maxnames is used *liberally* throughout many places in libvirt and in particular as arguments to functions. In particular, follow this back to : virDrvConnectListNetworks virDrvConnectListDefinedNetworks and virConnectListNetworks virConnectListDefinedNetworks which all use @maxnames. But I will separate and describe appropriately.
Modify the @filter to be @aclfilter and change the typedef from virNetworkObjListFilter to virNetworkObjListACLFilter.
NACK to this change, even though it's used only to filter by ACLs, it can be used to filter by anything.
Again, I disagree. I've been using @aclfilter in other drivers and taking this route makes things consistent. Besides, look at a few of the vir*ObjListExport* type functions where there's actually a second filter that would take an @obj and a @flags argument and could be defined "generically" as "@filter". Now if there was a "generic" ObjListExport routine, that @filter could be an element to a common structure too... I will though separate it out. Tks - John
This patch does three things in one, so it should be three separate patches. Since the last change is not correct split the remaining changes into two patches.
Pavel

On Wed, Jul 26, 2017 at 10:57:30AM -0400, John Ferlan wrote:
On 07/24/2017 07:49 AM, Pavel Hrdina wrote:
On Fri, May 19, 2017 at 09:03:23AM -0400, John Ferlan wrote:
Use the structure names in the @data setup - makes it easier that going back to find the struct.
Use the @maxnames instead of @nnames since that's what it is.
Please use camelCase -> @maxNames.
This I disagree with as maxnames is used *liberally* throughout many places in libvirt and in particular as arguments to functions. In particular, follow this back to :
virDrvConnectListNetworks virDrvConnectListDefinedNetworks
and
virConnectListNetworks virConnectListDefinedNetworks
which all use @maxnames.
But I will separate and describe appropriately.
On the other hand there is for example maxMemory which uses camelCase. I have to disagree with your disagreement :) but argument that something is used in a certain way is not a good argument because the old usage may be wrong.
Modify the @filter to be @aclfilter and change the typedef from virNetworkObjListFilter to virNetworkObjListACLFilter.
NACK to this change, even though it's used only to filter by ACLs, it can be used to filter by anything.
Again, I disagree. I've been using @aclfilter in other drivers and taking this route makes things consistent.
Now that I've checked it, even virDomainObjListExport has the type with ACL in it. So I take my NACK back :). Anyway, for the name I would prefer to use aclFilter but since the ship has sailed I give up. It can be done as a followup cleanup. But please keep this in mind that the camleCase is preferred. Having no separation between words in the variable name reduces readability. Pavel
Besides, look at a few of the vir*ObjListExport* type functions where there's actually a second filter that would take an @obj and a @flags argument and could be defined "generically" as "@filter". Now if there was a "generic" ObjListExport routine, that @filter could be an element to a common structure too...
I will though separate it out.
Tks -
John
This patch does three things in one, so it should be three separate patches. Since the last change is not correct split the remaining changes into two patches.
Pavel

Move from virnetworkobj.h into virnetworkobj.c Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 21 +++++++++++++++++++++ src/conf/virnetworkobj.h | 20 -------------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index cc45a00..93a16e8 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -37,6 +37,27 @@ VIR_LOG_INIT("conf.virnetworkobj"); /* currently, /sbin/tc implementation allows up to 16 bits for minor class size */ #define CLASS_ID_BITMAP_SIZE (1<<16) +struct _virNetworkObj { + virObjectLockable parent; + + pid_t dnsmasqPid; + pid_t radvdPid; + bool active; + int autostart; + bool persistent; + + virNetworkDefPtr def; /* The current definition */ + virNetworkDefPtr newDef; /* New definition to activate at shutdown */ + + virBitmapPtr classIdMap; /* bitmap of class IDs for QoS */ + unsigned long long floor_sum; /* sum of all 'floor'-s of attached NICs */ + + unsigned int taint; + + /* Immutable pointer, self locking APIs */ + virMacMapPtr macmap; +}; + struct _virNetworkObjList { virObjectLockable parent; diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 72afbcd..ec12307 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -26,26 +26,6 @@ typedef struct _virNetworkObj virNetworkObj; typedef virNetworkObj *virNetworkObjPtr; -struct _virNetworkObj { - virObjectLockable parent; - - pid_t dnsmasqPid; - pid_t radvdPid; - bool active; - int autostart; - bool persistent; - - virNetworkDefPtr def; /* The current definition */ - virNetworkDefPtr newDef; /* New definition to activate at shutdown */ - - virBitmapPtr classIdMap; /* bitmap of class IDs for QoS */ - unsigned long long floor_sum; /* sum of all 'floor'-s of attached NICs */ - - unsigned int taint; - - /* Immutable pointer, self locking APIs */ - virMacMapPtr macmap; -}; virNetworkObjPtr virNetworkObjNew(virNetworkDefPtr def); -- 2.9.3

On Fri, May 19, 2017 at 09:03:24AM -0400, John Ferlan wrote:
Move from virnetworkobj.h into virnetworkobj.c
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnetworkobj.c | 21 +++++++++++++++++++++ src/conf/virnetworkobj.h | 20 -------------------- 2 files changed, 21 insertions(+), 20 deletions(-)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
participants (2)
-
John Ferlan
-
Pavel Hrdina