summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-08-05 07:29:08 +0200
committerGitHub <noreply@github.com>2024-08-05 07:29:08 +0200
commit3ce54858c2e71ced522ecfb1781fa60eec703217 (patch)
tree429dc8602a8c475ba2424928f1a714c740f7c9ff /smoketest/scripts/cli
parentaa842a640cbe96719caf4cd1843d718a68f81319 (diff)
parentd30646fad07bd9263b385aa6a26c6d6dbc163e27 (diff)
downloadvyos-1x-3ce54858c2e71ced522ecfb1781fa60eec703217.tar.gz
vyos-1x-3ce54858c2e71ced522ecfb1781fa60eec703217.zip
Merge pull request #3637 from talmakion/feature/T4694/gre-match-fields
firewall: T4694: Adding GRE flags & fields matches to firewall rules
Diffstat (limited to 'smoketest/scripts/cli')
-rwxr-xr-xsmoketest/scripts/cli/test_firewall.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_firewall.py b/smoketest/scripts/cli/test_firewall.py
index 551f8ce65..dfc816a42 100755
--- a/smoketest/scripts/cli/test_firewall.py
+++ b/smoketest/scripts/cli/test_firewall.py
@@ -1100,5 +1100,60 @@ class TestFirewall(VyOSUnitTestSHIM.TestCase):
with self.assertRaises(ConfigSessionError):
self.cli_commit()
+ def test_gre_match(self):
+ name = 'smoketest-gre'
+
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'default-action', 'return'])
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'rule', '1', 'action', 'accept'])
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'rule', '1', 'protocol', 'gre'])
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'rule', '1', 'gre', 'flags', 'key'])
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'rule', '1', 'gre', 'flags', 'checksum', 'unset'])
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'rule', '1', 'gre', 'key', '1234'])
+ self.cli_set(['firewall', 'ipv4', 'name', name, 'rule', '1', 'log'])
+
+ self.cli_set(['firewall', 'ipv4', 'forward', 'filter', 'rule', '2', 'action', 'continue'])
+ self.cli_set(['firewall', 'ipv4', 'forward', 'filter', 'rule', '2', 'protocol', 'gre'])
+ self.cli_set(['firewall', 'ipv4', 'forward', 'filter', 'rule', '2', 'gre', 'inner-proto', '0x6558'])
+ self.cli_set(['firewall', 'ipv4', 'forward', 'filter', 'rule', '2', 'log'])
+
+ self.cli_set(['firewall', 'ipv6', 'input', 'filter', 'rule', '3', 'action', 'drop'])
+ self.cli_set(['firewall', 'ipv6', 'input', 'filter', 'rule', '3', 'protocol', 'gre'])
+ self.cli_set(['firewall', 'ipv6', 'input', 'filter', 'rule', '3', 'gre', 'flags', 'checksum'])
+ self.cli_set(['firewall', 'ipv6', 'input', 'filter', 'rule', '3', 'gre', 'key', '4321'])
+
+ self.cli_set(['firewall', 'ipv6', 'output', 'filter', 'rule', '4', 'action', 'reject'])
+ self.cli_set(['firewall', 'ipv6', 'output', 'filter', 'rule', '4', 'protocol', 'gre'])
+ self.cli_set(['firewall', 'ipv6', 'output', 'filter', 'rule', '4', 'gre', 'version', 'pptp'])
+
+ self.cli_commit()
+
+ nftables_search_v4 = [
+ ['gre protocol 0x6558', 'continue comment'],
+ ['gre flags & 5 == 4 @th,32,32 0x4d2', 'accept comment'],
+ ]
+
+ nftables_search_v6 = [
+ ['gre flags & 5 == 5 @th,64,32 0x10e1', 'drop comment'],
+ ['gre version 1', 'reject comment'],
+ ]
+
+ self.verify_nftables(nftables_search_v4, 'ip vyos_filter')
+ self.verify_nftables(nftables_search_v6, 'ip6 vyos_filter')
+
+ # GRE match will only work with protocol GRE
+ self.cli_delete(['firewall', 'ipv4', 'name', name, 'rule', '1', 'protocol', 'gre'])
+
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+
+ self.cli_discard()
+
+ # GREv1 (PPTP) does not include a key field, match not available
+ self.cli_set(['firewall', 'ipv6', 'output', 'filter', 'rule', '4', 'gre', 'flags', 'checksum', 'unset'])
+ self.cli_set(['firewall', 'ipv6', 'output', 'filter', 'rule', '4', 'gre', 'key', '1234'])
+
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+
if __name__ == '__main__':
unittest.main(verbosity=2)