summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2022-01-19 18:56:03 +0100
committerGitHub <noreply@github.com>2022-01-19 18:56:03 +0100
commit569dfa77f07cb707dec4b29ed3e2a350e214af80 (patch)
tree45d677925805c564fc2ccb24a64488599fc99e08 /src
parent10a740096edb5879ed79dd20db1a5f5bfaae6154 (diff)
parent0a5a78621b2b28f06af1f40c10ee8bb880f860a0 (diff)
downloadvyos-1x-569dfa77f07cb707dec4b29ed3e2a350e214af80.tar.gz
vyos-1x-569dfa77f07cb707dec4b29ed3e2a350e214af80.zip
Merge pull request #1177 from sarthurdev/mac_groups
firewall: T3560: Add support for MAC address groups
Diffstat (limited to 'src')
-rwxr-xr-xsrc/op_mode/firewall.py2
-rwxr-xr-xsrc/validators/mac-address-firewall27
2 files changed, 29 insertions, 0 deletions
diff --git a/src/op_mode/firewall.py b/src/op_mode/firewall.py
index 030a9b19a..b6bb5b802 100755
--- a/src/op_mode/firewall.py
+++ b/src/op_mode/firewall.py
@@ -272,6 +272,8 @@ def show_firewall_group(name=None):
row.append("\n".join(sorted(group_conf['address'], key=ipaddress.ip_address)))
elif 'network' in group_conf:
row.append("\n".join(sorted(group_conf['network'], key=ipaddress.ip_network)))
+ elif 'mac_address' in group_conf:
+ row.append("\n".join(sorted(group_conf['mac_address'])))
elif 'port' in group_conf:
row.append("\n".join(sorted(group_conf['port'])))
else:
diff --git a/src/validators/mac-address-firewall b/src/validators/mac-address-firewall
new file mode 100755
index 000000000..70551f86d
--- /dev/null
+++ b/src/validators/mac-address-firewall
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2018-2022 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import re
+import sys
+
+pattern = "^!?([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$"
+
+if __name__ == '__main__':
+ if len(sys.argv) != 2:
+ sys.exit(1)
+ if not re.match(pattern, sys.argv[1]):
+ sys.exit(1)
+ sys.exit(0)