From 11641f9979d45ae3b519f3220fab68bfd8700be0 Mon Sep 17 00:00:00 2001
From: sarthurdev <965089+sarthurdev@users.noreply.github.com>
Date: Sun, 24 Sep 2023 14:38:12 +0200
Subject: firewall: T5614: Add support for matching on conntrack helper

(cherry picked from commit 81dee963a9ca3224ddbd54767a36efae5851a001)
---
 python/vyos/firewall.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

(limited to 'python')

diff --git a/python/vyos/firewall.py b/python/vyos/firewall.py
index 53ff8259e..7de268a00 100644
--- a/python/vyos/firewall.py
+++ b/python/vyos/firewall.py
@@ -95,6 +95,20 @@ def parse_rule(rule_conf, hook, fw_name, rule_id, ip_name):
         if states:
             output.append(f'ct state {{{states}}}')
 
+    if 'conntrack_helper' in rule_conf:
+        helper_map = {'h323': ['RAS', 'Q.931'], 'nfs': ['rpc'], 'sqlnet': ['tns']}
+        helper_out = []
+
+        for helper in rule_conf['conntrack_helper']:
+            if helper in helper_map:
+                helper_out.extend(helper_map[helper])
+            else:
+                helper_out.append(helper)
+
+        if helper_out:
+            helper_str = ','.join(f'"{s}"' for s in helper_out)
+            output.append(f'ct helper {{{helper_str}}}')
+
     if 'connection_status' in rule_conf and rule_conf['connection_status']:
         status = rule_conf['connection_status']
         if status['nat'] == 'destination':
-- 
cgit v1.2.3