Don't pass virConnectPtr in nwfilter 'struct domUpdateCBStruct'

The nwfilter driver only needs a reference to its private
state object, not a full virConnectPtr. Update the domUpdateCBStruct
struct to have a 'void *opaque' field instead of a virConnectPtr.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit ebca369e3f)
This commit is contained in:
Daniel P. Berrange 2013-10-03 12:45:26 +01:00 committed by Laine Stump
parent a591883ac3
commit 979a3a9531
7 changed files with 46 additions and 37 deletions

View File

@ -2865,6 +2865,7 @@ virNWFilterCallbackDriversUnlock(void)
static virDomainObjListIterator virNWFilterDomainFWUpdateCB;
static void *virNWFilterDomainFWUpdateOpaque;
/**
* virNWFilterInstFiltersOnAllVMs:
@ -2876,7 +2877,7 @@ virNWFilterInstFiltersOnAllVMs(virConnectPtr conn)
{
int i;
struct domUpdateCBStruct cb = {
.conn = conn,
.opaque = virNWFilterDomainFWUpdateOpaque,
.step = STEP_APPLY_CURRENT,
.skipInterfaces = NULL, /* not needed */
};
@ -2895,7 +2896,7 @@ virNWFilterTriggerVMFilterRebuild(virConnectPtr conn)
int i;
int ret = 0;
struct domUpdateCBStruct cb = {
.conn = conn,
.opaque = virNWFilterDomainFWUpdateOpaque,
.step = STEP_APPLY_NEW,
.skipInterfaces = virHashCreate(0, NULL),
};
@ -3496,9 +3497,14 @@ char *virNWFilterConfigFile(const char *dir,
}
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB)
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB,
void *opaque)
{
if (initialized)
return -1;
virNWFilterDomainFWUpdateCB = domUpdateCB;
virNWFilterDomainFWUpdateOpaque = opaque;
initialized = true;
@ -3517,6 +3523,8 @@ void virNWFilterConfLayerShutdown(void)
virMutexDestroy(&updateMutex);
initialized = false;
virNWFilterDomainFWUpdateOpaque = NULL;
virNWFilterDomainFWUpdateCB = NULL;
}

View File

@ -587,7 +587,7 @@ enum UpdateStep {
};
struct domUpdateCBStruct {
virConnectPtr conn;
void *opaque;
enum UpdateStep step;
virHashTablePtr skipInterfaces;
};
@ -723,7 +723,7 @@ void virNWFilterObjUnlock(virNWFilterObjPtr obj);
void virNWFilterLockFilterUpdates(void);
void virNWFilterUnlockFilterUpdates(void);
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB);
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB, void *opaque);
void virNWFilterConfLayerShutdown(void);
int virNWFilterInstFiltersOnAllVMs(virConnectPtr conn);

View File

@ -481,15 +481,15 @@ virNWFilterSnoopIPLeaseInstallRule(virNWFilterSnoopIPLeasePtr ipl,
/* instantiate the filters */
if (req->ifname)
rc = virNWFilterInstantiateFilterLate(NULL,
rc = virNWFilterInstantiateFilterLate(req->driver,
NULL,
req->ifname,
req->ifindex,
req->linkdev,
req->nettype,
&req->macaddr,
req->filtername,
req->vars,
req->driver);
req->vars);
exit_snooprequnlock:
virNWFilterSnoopReqUnlock(req);
@ -871,15 +871,15 @@ virNWFilterSnoopReqLeaseDel(virNWFilterSnoopReqPtr req,
goto skip_instantiate;
if (ipAddrLeft) {
ret = virNWFilterInstantiateFilterLate(NULL,
ret = virNWFilterInstantiateFilterLate(req->driver,
NULL,
req->ifname,
req->ifindex,
req->linkdev,
req->nettype,
&req->macaddr,
req->filtername,
req->vars,
req->driver);
req->vars);
} else {
const virNWFilterVarValuePtr dhcpsrvrs =
virHashLookup(req->vars->hashTable, NWFILTER_VARNAME_DHCPSERVER);

View File

@ -199,7 +199,8 @@ nwfilterDriverStartup(bool privileged,
virNWFilterTechDriversInit(privileged);
if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB) < 0)
if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB,
driverState) < 0)
goto err_techdrivers_shutdown;
nwfilterDriverLock(driverState);
@ -646,7 +647,7 @@ nwfilterInstantiateFilter(virConnectPtr conn,
const unsigned char *vmuuid,
virDomainNetDefPtr net)
{
return virNWFilterInstantiateFilter(conn, vmuuid, net);
return virNWFilterInstantiateFilter(conn->nwfilterPrivateData, vmuuid, net);
}

View File

@ -812,7 +812,8 @@ err_unresolvable_vars:
* Call this function while holding the NWFilter filter update lock
*/
static int
__virNWFilterInstantiateFilter(const unsigned char *vmuuid,
__virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
bool teardownOld,
const char *ifname,
int ifindex,
@ -822,7 +823,6 @@ __virNWFilterInstantiateFilter(const unsigned char *vmuuid,
const char *filtername,
virNWFilterHashTablePtr filterparams,
enum instCase useNewFilter,
virNWFilterDriverStatePtr driver,
bool forceWithPendingReq,
bool *foundNewFilter)
{
@ -935,7 +935,7 @@ err_exit:
static int
_virNWFilterInstantiateFilter(virConnectPtr conn,
_virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const virDomainNetDefPtr net,
bool teardownOld,
@ -962,7 +962,8 @@ _virNWFilterInstantiateFilter(virConnectPtr conn,
goto cleanup;
}
rc = __virNWFilterInstantiateFilter(vmuuid,
rc = __virNWFilterInstantiateFilter(driver,
vmuuid,
teardownOld,
net->ifname,
ifindex,
@ -972,7 +973,6 @@ _virNWFilterInstantiateFilter(virConnectPtr conn,
net->filter,
net->filterparams,
useNewFilter,
conn->nwfilterPrivateData,
false,
foundNewFilter);
@ -984,22 +984,23 @@ cleanup:
int
virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const char *ifname,
int ifindex,
const char *linkdev,
enum virDomainNetType nettype,
const virMacAddrPtr macaddr,
const char *filtername,
virNWFilterHashTablePtr filterparams,
virNWFilterDriverStatePtr driver)
virNWFilterHashTablePtr filterparams)
{
int rc;
bool foundNewFilter = false;
virNWFilterLockFilterUpdates();
rc = __virNWFilterInstantiateFilter(vmuuid,
rc = __virNWFilterInstantiateFilter(driver,
vmuuid,
true,
ifname,
ifindex,
@ -1009,7 +1010,6 @@ virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
filtername,
filterparams,
INSTANTIATE_ALWAYS,
driver,
true,
&foundNewFilter);
if (rc < 0) {
@ -1029,13 +1029,13 @@ virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
int
virNWFilterInstantiateFilter(virConnectPtr conn,
virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const virDomainNetDefPtr net)
{
bool foundNewFilter = false;
return _virNWFilterInstantiateFilter(conn, vmuuid, net,
return _virNWFilterInstantiateFilter(driver, vmuuid, net,
1,
INSTANTIATE_ALWAYS,
&foundNewFilter);
@ -1043,14 +1043,14 @@ virNWFilterInstantiateFilter(virConnectPtr conn,
int
virNWFilterUpdateInstantiateFilter(virConnectPtr conn,
virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const virDomainNetDefPtr net,
bool *skipIface)
{
bool foundNewFilter = false;
int rc = _virNWFilterInstantiateFilter(conn, vmuuid, net,
int rc = _virNWFilterInstantiateFilter(driver, vmuuid, net,
0,
INSTANTIATE_FOLLOW_NEWFILTER,
&foundNewFilter);
@ -1168,7 +1168,7 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj,
if ((net->filter) && (net->ifname)) {
switch (cb->step) {
case STEP_APPLY_NEW:
ret = virNWFilterUpdateInstantiateFilter(cb->conn,
ret = virNWFilterUpdateInstantiateFilter(cb->opaque,
vm->uuid,
net,
&skipIface);
@ -1193,7 +1193,7 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj,
break;
case STEP_APPLY_CURRENT:
ret = virNWFilterInstantiateFilter(cb->conn,
ret = virNWFilterInstantiateFilter(cb->opaque,
vm->uuid,
net);
if (ret)

View File

@ -39,23 +39,23 @@ enum instCase {
};
int virNWFilterInstantiateFilter(virConnectPtr conn,
int virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const virDomainNetDefPtr net);
int virNWFilterUpdateInstantiateFilter(virConnectPtr conn,
int virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const virDomainNetDefPtr net,
bool *skipIface);
int virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
int virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver,
const unsigned char *vmuuid,
const char *ifname,
int ifindex,
const char *linkdev,
enum virDomainNetType nettype,
const virMacAddrPtr macaddr,
const char *filtername,
virNWFilterHashTablePtr filterparams,
virNWFilterDriverStatePtr driver);
virNWFilterHashTablePtr filterparams);
int virNWFilterTeardownFilter(const virDomainNetDefPtr net);

View File

@ -595,15 +595,15 @@ learnIPAddressThread(void *arg)
"cache for interface %s"), inetaddr, req->ifname);
}
ret = virNWFilterInstantiateFilterLate(NULL,
ret = virNWFilterInstantiateFilterLate(req->driver,
NULL,
req->ifname,
req->ifindex,
req->linkdev,
req->nettype,
&req->macaddr,
req->filtername,
req->filterparams,
req->driver);
req->filterparams);
VIR_DEBUG("Result from applying firewall rules on "
"%s with IP addr %s : %d\n", req->ifname, inetaddr, ret);
}