Blob Blame History Raw
commit 42faa017bdf89ea4d050ee7a5d5a283cd28e6e8c
Author: Thomas Woerner <twoerner@redhat.com>
Date:   Wed Aug 24 19:09:50 2016 +0200

    firewall.core.fw_transaction: Load helper modules in FirewallZoneTransaction
    
    Helper modules for services that are enabled in the default zone have been
    loaded before, but not for zones that are enabled later on because of a
    interface/source binding.
    
    This happened because for these zones the FirewallZoneTransaction is used
    directly and because of this the added modules are simply not used.

diff --git a/src/firewall/core/fw_transaction.py b/src/firewall/core/fw_transaction.py
index c5dfc0c..9d4c522 100644
--- a/src/firewall/core/fw_transaction.py
+++ b/src/firewall/core/fw_transaction.py
@@ -321,6 +321,18 @@ class FirewallZoneTransaction(SimpleFirewallTransaction):
         del self.chains[:]
         del self.modules[:]
 
+    def prepare(self, enable, rules=None, modules=None):
+        log.debug4("%s.prepare(%s, %s)" % (type(self), enable, "..."))
+
+        rules, modules = super(FirewallZoneTransaction, self).prepare(
+            enable, rules, modules)
+
+        for module in self.modules:
+            if module not in modules:
+                modules.append(module)
+
+        return rules, modules
+
     def add_chain(self, table, chain):
         table_chain = (table, chain)
         if table_chain not in self.chains: