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>
This commit is contained in:
parent
b77b16ce41
commit
ebca369e3f
@ -2850,6 +2850,7 @@ virNWFilterCallbackDriversUnlock(void)
|
|||||||
|
|
||||||
|
|
||||||
static virDomainObjListIterator virNWFilterDomainFWUpdateCB;
|
static virDomainObjListIterator virNWFilterDomainFWUpdateCB;
|
||||||
|
static void *virNWFilterDomainFWUpdateOpaque;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virNWFilterInstFiltersOnAllVMs:
|
* virNWFilterInstFiltersOnAllVMs:
|
||||||
@ -2861,7 +2862,7 @@ virNWFilterInstFiltersOnAllVMs(virConnectPtr conn)
|
|||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
struct domUpdateCBStruct cb = {
|
struct domUpdateCBStruct cb = {
|
||||||
.conn = conn,
|
.opaque = virNWFilterDomainFWUpdateOpaque,
|
||||||
.step = STEP_APPLY_CURRENT,
|
.step = STEP_APPLY_CURRENT,
|
||||||
.skipInterfaces = NULL, /* not needed */
|
.skipInterfaces = NULL, /* not needed */
|
||||||
};
|
};
|
||||||
@ -2880,7 +2881,7 @@ virNWFilterTriggerVMFilterRebuild(virConnectPtr conn)
|
|||||||
size_t i;
|
size_t i;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct domUpdateCBStruct cb = {
|
struct domUpdateCBStruct cb = {
|
||||||
.conn = conn,
|
.opaque = virNWFilterDomainFWUpdateOpaque,
|
||||||
.step = STEP_APPLY_NEW,
|
.step = STEP_APPLY_NEW,
|
||||||
.skipInterfaces = virHashCreate(0, NULL),
|
.skipInterfaces = virHashCreate(0, NULL),
|
||||||
};
|
};
|
||||||
@ -3474,9 +3475,14 @@ char *virNWFilterConfigFile(const char *dir,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB)
|
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB,
|
||||||
|
void *opaque)
|
||||||
{
|
{
|
||||||
|
if (initialized)
|
||||||
|
return -1;
|
||||||
|
|
||||||
virNWFilterDomainFWUpdateCB = domUpdateCB;
|
virNWFilterDomainFWUpdateCB = domUpdateCB;
|
||||||
|
virNWFilterDomainFWUpdateOpaque = opaque;
|
||||||
|
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
||||||
@ -3495,6 +3501,8 @@ void virNWFilterConfLayerShutdown(void)
|
|||||||
virMutexDestroy(&updateMutex);
|
virMutexDestroy(&updateMutex);
|
||||||
|
|
||||||
initialized = false;
|
initialized = false;
|
||||||
|
virNWFilterDomainFWUpdateOpaque = NULL;
|
||||||
|
virNWFilterDomainFWUpdateCB = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -586,7 +586,7 @@ enum UpdateStep {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct domUpdateCBStruct {
|
struct domUpdateCBStruct {
|
||||||
virConnectPtr conn;
|
void *opaque;
|
||||||
enum UpdateStep step;
|
enum UpdateStep step;
|
||||||
virHashTablePtr skipInterfaces;
|
virHashTablePtr skipInterfaces;
|
||||||
};
|
};
|
||||||
@ -722,7 +722,7 @@ void virNWFilterObjUnlock(virNWFilterObjPtr obj);
|
|||||||
void virNWFilterLockFilterUpdates(void);
|
void virNWFilterLockFilterUpdates(void);
|
||||||
void virNWFilterUnlockFilterUpdates(void);
|
void virNWFilterUnlockFilterUpdates(void);
|
||||||
|
|
||||||
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB);
|
int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB, void *opaque);
|
||||||
void virNWFilterConfLayerShutdown(void);
|
void virNWFilterConfLayerShutdown(void);
|
||||||
|
|
||||||
int virNWFilterInstFiltersOnAllVMs(virConnectPtr conn);
|
int virNWFilterInstFiltersOnAllVMs(virConnectPtr conn);
|
||||||
|
@ -481,15 +481,15 @@ virNWFilterSnoopIPLeaseInstallRule(virNWFilterSnoopIPLeasePtr ipl,
|
|||||||
/* instantiate the filters */
|
/* instantiate the filters */
|
||||||
|
|
||||||
if (req->ifname)
|
if (req->ifname)
|
||||||
rc = virNWFilterInstantiateFilterLate(NULL,
|
rc = virNWFilterInstantiateFilterLate(req->driver,
|
||||||
|
NULL,
|
||||||
req->ifname,
|
req->ifname,
|
||||||
req->ifindex,
|
req->ifindex,
|
||||||
req->linkdev,
|
req->linkdev,
|
||||||
req->nettype,
|
req->nettype,
|
||||||
&req->macaddr,
|
&req->macaddr,
|
||||||
req->filtername,
|
req->filtername,
|
||||||
req->vars,
|
req->vars);
|
||||||
req->driver);
|
|
||||||
|
|
||||||
exit_snooprequnlock:
|
exit_snooprequnlock:
|
||||||
virNWFilterSnoopReqUnlock(req);
|
virNWFilterSnoopReqUnlock(req);
|
||||||
@ -867,15 +867,15 @@ virNWFilterSnoopReqLeaseDel(virNWFilterSnoopReqPtr req,
|
|||||||
goto skip_instantiate;
|
goto skip_instantiate;
|
||||||
|
|
||||||
if (ipAddrLeft) {
|
if (ipAddrLeft) {
|
||||||
ret = virNWFilterInstantiateFilterLate(NULL,
|
ret = virNWFilterInstantiateFilterLate(req->driver,
|
||||||
|
NULL,
|
||||||
req->ifname,
|
req->ifname,
|
||||||
req->ifindex,
|
req->ifindex,
|
||||||
req->linkdev,
|
req->linkdev,
|
||||||
req->nettype,
|
req->nettype,
|
||||||
&req->macaddr,
|
&req->macaddr,
|
||||||
req->filtername,
|
req->filtername,
|
||||||
req->vars,
|
req->vars);
|
||||||
req->driver);
|
|
||||||
} else {
|
} else {
|
||||||
const virNWFilterVarValuePtr dhcpsrvrs =
|
const virNWFilterVarValuePtr dhcpsrvrs =
|
||||||
virHashLookup(req->vars->hashTable, NWFILTER_VARNAME_DHCPSERVER);
|
virHashLookup(req->vars->hashTable, NWFILTER_VARNAME_DHCPSERVER);
|
||||||
|
@ -203,7 +203,8 @@ nwfilterStateInitialize(bool privileged,
|
|||||||
|
|
||||||
virNWFilterTechDriversInit(privileged);
|
virNWFilterTechDriversInit(privileged);
|
||||||
|
|
||||||
if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB) < 0)
|
if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB,
|
||||||
|
driverState) < 0)
|
||||||
goto err_techdrivers_shutdown;
|
goto err_techdrivers_shutdown;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -681,7 +682,7 @@ nwfilterInstantiateFilter(virConnectPtr conn,
|
|||||||
const unsigned char *vmuuid,
|
const unsigned char *vmuuid,
|
||||||
virDomainNetDefPtr net)
|
virDomainNetDefPtr net)
|
||||||
{
|
{
|
||||||
return virNWFilterInstantiateFilter(conn, vmuuid, net);
|
return virNWFilterInstantiateFilter(conn->nwfilterPrivateData, vmuuid, net);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -800,7 +800,8 @@ err_unresolvable_vars:
|
|||||||
* Call this function while holding the NWFilter filter update lock
|
* Call this function while holding the NWFilter filter update lock
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
__virNWFilterInstantiateFilter(const unsigned char *vmuuid,
|
__virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
|
||||||
|
const unsigned char *vmuuid,
|
||||||
bool teardownOld,
|
bool teardownOld,
|
||||||
const char *ifname,
|
const char *ifname,
|
||||||
int ifindex,
|
int ifindex,
|
||||||
@ -810,7 +811,6 @@ __virNWFilterInstantiateFilter(const unsigned char *vmuuid,
|
|||||||
const char *filtername,
|
const char *filtername,
|
||||||
virNWFilterHashTablePtr filterparams,
|
virNWFilterHashTablePtr filterparams,
|
||||||
enum instCase useNewFilter,
|
enum instCase useNewFilter,
|
||||||
virNWFilterDriverStatePtr driver,
|
|
||||||
bool forceWithPendingReq,
|
bool forceWithPendingReq,
|
||||||
bool *foundNewFilter)
|
bool *foundNewFilter)
|
||||||
{
|
{
|
||||||
@ -921,7 +921,7 @@ err_exit:
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_virNWFilterInstantiateFilter(virConnectPtr conn,
|
_virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
|
||||||
const unsigned char *vmuuid,
|
const unsigned char *vmuuid,
|
||||||
const virDomainNetDefPtr net,
|
const virDomainNetDefPtr net,
|
||||||
bool teardownOld,
|
bool teardownOld,
|
||||||
@ -948,7 +948,8 @@ _virNWFilterInstantiateFilter(virConnectPtr conn,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = __virNWFilterInstantiateFilter(vmuuid,
|
rc = __virNWFilterInstantiateFilter(driver,
|
||||||
|
vmuuid,
|
||||||
teardownOld,
|
teardownOld,
|
||||||
net->ifname,
|
net->ifname,
|
||||||
ifindex,
|
ifindex,
|
||||||
@ -958,7 +959,6 @@ _virNWFilterInstantiateFilter(virConnectPtr conn,
|
|||||||
net->filter,
|
net->filter,
|
||||||
net->filterparams,
|
net->filterparams,
|
||||||
useNewFilter,
|
useNewFilter,
|
||||||
conn->nwfilterPrivateData,
|
|
||||||
false,
|
false,
|
||||||
foundNewFilter);
|
foundNewFilter);
|
||||||
|
|
||||||
@ -970,22 +970,23 @@ cleanup:
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
|
virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver,
|
||||||
|
const unsigned char *vmuuid,
|
||||||
const char *ifname,
|
const char *ifname,
|
||||||
int ifindex,
|
int ifindex,
|
||||||
const char *linkdev,
|
const char *linkdev,
|
||||||
enum virDomainNetType nettype,
|
enum virDomainNetType nettype,
|
||||||
const virMacAddrPtr macaddr,
|
const virMacAddrPtr macaddr,
|
||||||
const char *filtername,
|
const char *filtername,
|
||||||
virNWFilterHashTablePtr filterparams,
|
virNWFilterHashTablePtr filterparams)
|
||||||
virNWFilterDriverStatePtr driver)
|
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
bool foundNewFilter = false;
|
bool foundNewFilter = false;
|
||||||
|
|
||||||
virNWFilterLockFilterUpdates();
|
virNWFilterLockFilterUpdates();
|
||||||
|
|
||||||
rc = __virNWFilterInstantiateFilter(vmuuid,
|
rc = __virNWFilterInstantiateFilter(driver,
|
||||||
|
vmuuid,
|
||||||
true,
|
true,
|
||||||
ifname,
|
ifname,
|
||||||
ifindex,
|
ifindex,
|
||||||
@ -995,7 +996,6 @@ virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
|
|||||||
filtername,
|
filtername,
|
||||||
filterparams,
|
filterparams,
|
||||||
INSTANTIATE_ALWAYS,
|
INSTANTIATE_ALWAYS,
|
||||||
driver,
|
|
||||||
true,
|
true,
|
||||||
&foundNewFilter);
|
&foundNewFilter);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
@ -1015,13 +1015,13 @@ virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
virNWFilterInstantiateFilter(virConnectPtr conn,
|
virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
|
||||||
const unsigned char *vmuuid,
|
const unsigned char *vmuuid,
|
||||||
const virDomainNetDefPtr net)
|
const virDomainNetDefPtr net)
|
||||||
{
|
{
|
||||||
bool foundNewFilter = false;
|
bool foundNewFilter = false;
|
||||||
|
|
||||||
return _virNWFilterInstantiateFilter(conn, vmuuid, net,
|
return _virNWFilterInstantiateFilter(driver, vmuuid, net,
|
||||||
1,
|
1,
|
||||||
INSTANTIATE_ALWAYS,
|
INSTANTIATE_ALWAYS,
|
||||||
&foundNewFilter);
|
&foundNewFilter);
|
||||||
@ -1029,14 +1029,14 @@ virNWFilterInstantiateFilter(virConnectPtr conn,
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
virNWFilterUpdateInstantiateFilter(virConnectPtr conn,
|
virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver,
|
||||||
const unsigned char *vmuuid,
|
const unsigned char *vmuuid,
|
||||||
const virDomainNetDefPtr net,
|
const virDomainNetDefPtr net,
|
||||||
bool *skipIface)
|
bool *skipIface)
|
||||||
{
|
{
|
||||||
bool foundNewFilter = false;
|
bool foundNewFilter = false;
|
||||||
|
|
||||||
int rc = _virNWFilterInstantiateFilter(conn, vmuuid, net,
|
int rc = _virNWFilterInstantiateFilter(driver, vmuuid, net,
|
||||||
0,
|
0,
|
||||||
INSTANTIATE_FOLLOW_NEWFILTER,
|
INSTANTIATE_FOLLOW_NEWFILTER,
|
||||||
&foundNewFilter);
|
&foundNewFilter);
|
||||||
@ -1154,7 +1154,7 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj,
|
|||||||
if ((net->filter) && (net->ifname)) {
|
if ((net->filter) && (net->ifname)) {
|
||||||
switch (cb->step) {
|
switch (cb->step) {
|
||||||
case STEP_APPLY_NEW:
|
case STEP_APPLY_NEW:
|
||||||
ret = virNWFilterUpdateInstantiateFilter(cb->conn,
|
ret = virNWFilterUpdateInstantiateFilter(cb->opaque,
|
||||||
vm->uuid,
|
vm->uuid,
|
||||||
net,
|
net,
|
||||||
&skipIface);
|
&skipIface);
|
||||||
@ -1179,7 +1179,7 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case STEP_APPLY_CURRENT:
|
case STEP_APPLY_CURRENT:
|
||||||
ret = virNWFilterInstantiateFilter(cb->conn,
|
ret = virNWFilterInstantiateFilter(cb->opaque,
|
||||||
vm->uuid,
|
vm->uuid,
|
||||||
net);
|
net);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -39,23 +39,23 @@ enum instCase {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int virNWFilterInstantiateFilter(virConnectPtr conn,
|
int virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver,
|
||||||
const unsigned char *vmuuid,
|
const unsigned char *vmuuid,
|
||||||
const virDomainNetDefPtr net);
|
const virDomainNetDefPtr net);
|
||||||
int virNWFilterUpdateInstantiateFilter(virConnectPtr conn,
|
int virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver,
|
||||||
const unsigned char *vmuuid,
|
const unsigned char *vmuuid,
|
||||||
const virDomainNetDefPtr net,
|
const virDomainNetDefPtr net,
|
||||||
bool *skipIface);
|
bool *skipIface);
|
||||||
|
|
||||||
int virNWFilterInstantiateFilterLate(const unsigned char *vmuuid,
|
int virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver,
|
||||||
|
const unsigned char *vmuuid,
|
||||||
const char *ifname,
|
const char *ifname,
|
||||||
int ifindex,
|
int ifindex,
|
||||||
const char *linkdev,
|
const char *linkdev,
|
||||||
enum virDomainNetType nettype,
|
enum virDomainNetType nettype,
|
||||||
const virMacAddrPtr macaddr,
|
const virMacAddrPtr macaddr,
|
||||||
const char *filtername,
|
const char *filtername,
|
||||||
virNWFilterHashTablePtr filterparams,
|
virNWFilterHashTablePtr filterparams);
|
||||||
virNWFilterDriverStatePtr driver);
|
|
||||||
|
|
||||||
int virNWFilterTeardownFilter(const virDomainNetDefPtr net);
|
int virNWFilterTeardownFilter(const virDomainNetDefPtr net);
|
||||||
|
|
||||||
|
@ -612,15 +612,15 @@ learnIPAddressThread(void *arg)
|
|||||||
"cache for interface %s"), inetaddr, req->ifname);
|
"cache for interface %s"), inetaddr, req->ifname);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = virNWFilterInstantiateFilterLate(NULL,
|
ret = virNWFilterInstantiateFilterLate(req->driver,
|
||||||
|
NULL,
|
||||||
req->ifname,
|
req->ifname,
|
||||||
req->ifindex,
|
req->ifindex,
|
||||||
req->linkdev,
|
req->linkdev,
|
||||||
req->nettype,
|
req->nettype,
|
||||||
&req->macaddr,
|
&req->macaddr,
|
||||||
req->filtername,
|
req->filtername,
|
||||||
req->filterparams,
|
req->filterparams);
|
||||||
req->driver);
|
|
||||||
VIR_DEBUG("Result from applying firewall rules on "
|
VIR_DEBUG("Result from applying firewall rules on "
|
||||||
"%s with IP addr %s : %d\n", req->ifname, inetaddr, ret);
|
"%s with IP addr %s : %d\n", req->ifname, inetaddr, ret);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user