mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
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:
parent
a591883ac3
commit
979a3a9531
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user