Browse Source

Added separation between external/internal in qdb_forward_entries

Giulio 2 years ago
parent
commit
99ea8dddbe
1 changed files with 10 additions and 2 deletions
  1. 10 2
      qubes/firewall.py

+ 10 - 2
qubes/firewall.py

@@ -694,7 +694,10 @@ class Firewall:
         directly separate forwarding rules from standard rules since they need
         directly separate forwarding rules from standard rules since they need
         to be handled differently later.
         to be handled differently later.
         '''
         '''
-        entries = {}
+        entries = {
+            "internal": [],
+            "external": []
+        }
         if addr_family is not None:
         if addr_family is not None:
             exclude_dsttype = 'dst4' if addr_family == 6 else 'dst6'
             exclude_dsttype = 'dst4' if addr_family == 6 else 'dst6'
         for ruleno, rule in zip(itertools.count(), self.rules):
         for ruleno, rule in zip(itertools.count(), self.rules):
@@ -706,5 +709,10 @@ class Firewall:
             # include only forwarding rules
             # include only forwarding rules
             if rule.action != "forward":
             if rule.action != "forward":
                 continue
                 continue
-            entries['{:04}'.format(ruleno)] = rule.rule
+            if rule.forwardtype == "internal":
+                entries["internal"]['{:04}'.format(ruleno)] = rule.rule
+            elif rule.forwardype == "external":
+                entries["external"]['{:04}'.format(ruleno)] = rule.rule
+            else:
+                raise ValueError('invalid forwardtype for rule')
         return entries            
         return entries