mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
network: add platform driver callbacks around firewall reload
Allow the platform driver impls to run logic before and after the firewall reload process. Reviewed-by: Laine Stump <laine@laine.org> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
f04bdf5368
commit
0fc746aa54
@ -162,7 +162,7 @@ static int
|
|||||||
networkShutdownNetworkExternal(virNetworkObjPtr obj);
|
networkShutdownNetworkExternal(virNetworkObjPtr obj);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
networkReloadFirewallRules(virNetworkDriverStatePtr driver);
|
networkReloadFirewallRules(virNetworkDriverStatePtr driver, bool startup);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
networkRefreshDaemons(virNetworkDriverStatePtr driver);
|
networkRefreshDaemons(virNetworkDriverStatePtr driver);
|
||||||
@ -550,7 +550,7 @@ firewalld_dbus_filter_bridge(DBusConnection *connection ATTRIBUTE_UNUSED,
|
|||||||
"Reloaded"))
|
"Reloaded"))
|
||||||
{
|
{
|
||||||
VIR_DEBUG("Reload in bridge_driver because of firewalld.");
|
VIR_DEBUG("Reload in bridge_driver because of firewalld.");
|
||||||
networkReloadFirewallRules(driver);
|
networkReloadFirewallRules(driver, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
@ -657,7 +657,7 @@ networkStateInitialize(bool privileged,
|
|||||||
virNetworkObjListPrune(network_driver->networks,
|
virNetworkObjListPrune(network_driver->networks,
|
||||||
VIR_CONNECT_LIST_NETWORKS_INACTIVE |
|
VIR_CONNECT_LIST_NETWORKS_INACTIVE |
|
||||||
VIR_CONNECT_LIST_NETWORKS_TRANSIENT);
|
VIR_CONNECT_LIST_NETWORKS_TRANSIENT);
|
||||||
networkReloadFirewallRules(network_driver);
|
networkReloadFirewallRules(network_driver, true);
|
||||||
networkRefreshDaemons(network_driver);
|
networkRefreshDaemons(network_driver);
|
||||||
|
|
||||||
network_driver->networkEventState = virObjectEventStateNew();
|
network_driver->networkEventState = virObjectEventStateNew();
|
||||||
@ -733,7 +733,7 @@ networkStateReload(void)
|
|||||||
virNetworkObjLoadAllConfigs(network_driver->networks,
|
virNetworkObjLoadAllConfigs(network_driver->networks,
|
||||||
network_driver->networkConfigDir,
|
network_driver->networkConfigDir,
|
||||||
network_driver->networkAutostartDir);
|
network_driver->networkAutostartDir);
|
||||||
networkReloadFirewallRules(network_driver);
|
networkReloadFirewallRules(network_driver, false);
|
||||||
networkRefreshDaemons(network_driver);
|
networkRefreshDaemons(network_driver);
|
||||||
virNetworkObjListForEach(network_driver->networks,
|
virNetworkObjListForEach(network_driver->networks,
|
||||||
networkAutostartConfig,
|
networkAutostartConfig,
|
||||||
@ -2085,12 +2085,15 @@ networkReloadFirewallRulesHelper(virNetworkObjPtr obj,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
networkReloadFirewallRules(virNetworkDriverStatePtr driver)
|
networkReloadFirewallRules(virNetworkDriverStatePtr driver, bool startup)
|
||||||
{
|
{
|
||||||
VIR_INFO("Reloading iptables rules");
|
VIR_INFO("Reloading iptables rules");
|
||||||
|
if (networkPreReloadFirewallRules(startup) < 0)
|
||||||
|
return;
|
||||||
virNetworkObjListForEach(driver->networks,
|
virNetworkObjListForEach(driver->networks,
|
||||||
networkReloadFirewallRulesHelper,
|
networkReloadFirewallRulesHelper,
|
||||||
NULL);
|
NULL);
|
||||||
|
networkPostReloadFirewallRules(startup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,6 +34,17 @@ VIR_LOG_INIT("network.bridge_driver_linux");
|
|||||||
|
|
||||||
#define PROC_NET_ROUTE "/proc/net/route"
|
#define PROC_NET_ROUTE "/proc/net/route"
|
||||||
|
|
||||||
|
int networkPreReloadFirewallRules(bool startup ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void networkPostReloadFirewallRules(bool startup ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* XXX: This function can be a lot more exhaustive, there are certainly
|
/* XXX: This function can be a lot more exhaustive, there are certainly
|
||||||
* other scenarios where we can ruin host network connectivity.
|
* other scenarios where we can ruin host network connectivity.
|
||||||
* XXX: Using a proper library is preferred over parsing /proc
|
* XXX: Using a proper library is preferred over parsing /proc
|
||||||
|
@ -19,6 +19,17 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
int networkPreReloadFirewallRules(bool startup ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void networkPostReloadFirewallRules(bool startup ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int networkCheckRouteCollision(virNetworkDefPtr def ATTRIBUTE_UNUSED)
|
int networkCheckRouteCollision(virNetworkDefPtr def ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -58,6 +58,9 @@ struct _virNetworkDriverState {
|
|||||||
typedef struct _virNetworkDriverState virNetworkDriverState;
|
typedef struct _virNetworkDriverState virNetworkDriverState;
|
||||||
typedef virNetworkDriverState *virNetworkDriverStatePtr;
|
typedef virNetworkDriverState *virNetworkDriverStatePtr;
|
||||||
|
|
||||||
|
int networkPreReloadFirewallRules(bool startup);
|
||||||
|
void networkPostReloadFirewallRules(bool startup);
|
||||||
|
|
||||||
int networkCheckRouteCollision(virNetworkDefPtr def);
|
int networkCheckRouteCollision(virNetworkDefPtr def);
|
||||||
|
|
||||||
int networkAddFirewallRules(virNetworkDefPtr def);
|
int networkAddFirewallRules(virNetworkDefPtr def);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user