From 6b5d3568b88fad9cda694c0cd8b82c1f16773b15 Mon Sep 17 00:00:00 2001
From: sarthurdev <965089+sarthurdev@users.noreply.github.com>
Date: Sat, 26 Aug 2023 23:02:10 +0200
Subject: firewall: T5080: Disable conntrack unless required by rules

---
 src/conf_mode/firewall.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

(limited to 'src')

diff --git a/src/conf_mode/firewall.py b/src/conf_mode/firewall.py
index c86d1b555..c3b1ee015 100755
--- a/src/conf_mode/firewall.py
+++ b/src/conf_mode/firewall.py
@@ -333,6 +333,17 @@ def generate(firewall):
     if not os.path.exists(nftables_conf):
         firewall['first_install'] = True
 
+    # Determine if conntrack is needed
+    firewall['ipv4_conntrack_action'] = 'return'
+    firewall['ipv6_conntrack_action'] = 'return'
+
+    for rules, path in dict_search_recursive(firewall, 'rule'):
+        if any(('state' in rule_conf or 'connection_status' in rule_conf) for rule_conf in rules.values()):
+            if path[0] == 'ipv4':
+                firewall['ipv4_conntrack_action'] = 'accept'
+            elif path[0] == 'ipv6':
+                firewall['ipv6_conntrack_action'] = 'accept'
+
     render(nftables_conf, 'firewall/nftables.j2', firewall)
     return None
 
-- 
cgit v1.2.3