struct network_driver *driver,
virNetworkObjPtr network);
+static void networkReloadIptablesRules(struct network_driver *driver);
+
static struct network_driver *driverState = NULL;
&driverState->networks,
driverState->networkConfigDir,
driverState->networkAutostartDir);
-
- if (driverState->iptables) {
- VIR_INFO0(_("Reloading iptables rules\n"));
- iptablesReloadRules(driverState->iptables);
- }
-
+ networkReloadIptablesRules(driverState);
networkAutostartConfigs(driverState);
networkDriverUnlock(driverState);
return 0;
iptablesSaveRules(driver->iptables);
}
+static void
+networkReloadIptablesRules(struct network_driver *driver)
+{
+ unsigned int i;
+
+ VIR_INFO0(_("Reloading iptables rules"));
+
+ for (i = 0 ; i < driver->networks.count ; i++) {
+ virNetworkObjLock(driver->networks.objs[i]);
+
+ if (virNetworkObjIsActive(driver->networks.objs[i])) {
+ networkRemoveIptablesRules(driver, driver->networks.objs[i]);
+ if (!networkAddIptablesRules(NULL, driver, driver->networks.objs[i])) {
+ /* failed to add but already logged */
+ }
+ }
+
+ virNetworkObjUnlock(driver->networks.objs[i]);
+ }
+}
+
/* Enable IP Forwarding. Return 0 for success, -1 for failure. */
static int
networkEnableIpForwarding(void)