diff options
author | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2023-08-26 23:02:10 +0200 |
---|---|---|
committer | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2023-08-26 23:20:22 +0200 |
commit | 6b5d3568b88fad9cda694c0cd8b82c1f16773b15 (patch) | |
tree | 22360fa716d82bcde58025885ed78c6acb5bae47 /src | |
parent | 75aa90cf2b234a34565d165697196ac9a304bb66 (diff) | |
download | vyos-1x-6b5d3568b88fad9cda694c0cd8b82c1f16773b15.tar.gz vyos-1x-6b5d3568b88fad9cda694c0cd8b82c1f16773b15.zip |
firewall: T5080: Disable conntrack unless required by rules
Diffstat (limited to 'src')
-rwxr-xr-x | src/conf_mode/firewall.py | 11 |
1 files changed, 11 insertions, 0 deletions
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 |