提交 0fc746aa 编写于 作者: D Daniel P. Berrangé

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: NLaine Stump <laine@laine.org>
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 f04bdf53
...@@ -162,7 +162,7 @@ static int ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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, ...@@ -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"); ...@@ -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 @@ ...@@ -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 { ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册