]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix saving of iptables rules
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 12 Jun 2008 13:47:38 +0000 (13:47 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 12 Jun 2008 13:47:38 +0000 (13:47 +0000)
ChangeLog
src/qemu_driver.c

index ad9f0848c1bedb99455a8eda6bb15f08b7d39c2b..532782234a44417b0a63374e58e5f63e12b0a8b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Thu Jun 12 14:46:08 BST 2008 Daniel P. Berrange <berrange@redhat.com>
+
+       * src/qemu_driver.c: Fix saving of iptables rules
+
 Thu Jun 12 11:18:08 BST 2008 Daniel P. Berrange <berrange@redhat.com>
 
        * src/qemu_conf.c: Deal with failure due to inactive virtual
index adb4d5892d549bb63ce0548a869a82766e495e51..aae0df380b6a5f30b4f3762110512f2bc8d51c53 100644 (file)
@@ -1259,7 +1259,7 @@ qemudAddIptablesRules(virConnectPtr conn,
     if (!driver->iptables && !(driver->iptables = iptablesContextNew())) {
         qemudReportError(conn, NULL, NULL, VIR_ERR_NO_MEMORY,
                      "%s", _("failed to allocate space for IP tables support"));
-        return 1;
+        return 0;
     }
 
 
@@ -1319,23 +1319,22 @@ qemudAddIptablesRules(virConnectPtr conn,
     }
 
 
-    /* The remaining rules are only needed for IP forwarding */
-    if (!network->def->forward) {
-        iptablesSaveRules(driver->iptables);
-        return 1;
+    if (network->def->forward) {
+        /* If masquerading is enabled, set up the rules*/
+        if (network->def->forwardMode == QEMUD_NET_FORWARD_NAT &&
+            !qemudAddMasqueradingIptablesRules(conn, driver, network))
+            goto err8;
+        /* else if routing is enabled, set up the rules*/
+        else if (network->def->forwardMode == QEMUD_NET_FORWARD_ROUTE &&
+                 !qemudAddRoutingIptablesRules(conn, driver, network))
+            goto err8;
     }
 
-    /* If masquerading is enabled, set up the rules*/
-    if (network->def->forwardMode == QEMUD_NET_FORWARD_NAT) {
-        if (qemudAddMasqueradingIptablesRules(conn, driver, network))
-            return 1;
-    }
-    /* else if routing is enabled, set up the rules*/
-    else if (network->def->forwardMode == QEMUD_NET_FORWARD_ROUTE) {
-        if (qemudAddRoutingIptablesRules(conn, driver, network))
-            return 1;
-    }
+    iptablesSaveRules(driver->iptables);
+
+    return 1;
 
+ err8:
     iptablesRemoveForwardAllowCross(driver->iptables,
                                     network->bridge);
  err7: