summaryrefslogtreecommitdiff
path: root/src/validators/bgp-regular-community
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2022-10-06 20:47:11 +0200
committerGitHub <noreply@github.com>2022-10-06 20:47:11 +0200
commit975eaa55f85a2855f5551447c9f120cca8815351 (patch)
tree14b27a3393002820ef0da4a2c81462c0f929bdf1 /src/validators/bgp-regular-community
parent50f26c54d095420907a1d31168c162ad3c27ee36 (diff)
parent507f6ac423403b57f375309b483c6ccc1c83ad06 (diff)
downloadvyos-1x-975eaa55f85a2855f5551447c9f120cca8815351.tar.gz
vyos-1x-975eaa55f85a2855f5551447c9f120cca8815351.zip
Merge pull request #1567 from aapostoliuk/T4660-sagitta
policy: T4660: Changed CLI syntax in route-map set community
Diffstat (limited to 'src/validators/bgp-regular-community')
-rwxr-xr-xsrc/validators/bgp-regular-community50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/validators/bgp-regular-community b/src/validators/bgp-regular-community
new file mode 100755
index 000000000..d43a71eae
--- /dev/null
+++ b/src/validators/bgp-regular-community
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+
+# Copyright 2019-2022 VyOS maintainers and contributors <maintainers@vyos.io>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+from argparse import ArgumentParser
+from sys import exit
+
+from vyos.template import is_ipv4
+
+COMM_MAX_2_OCTET: int = 65535
+
+if __name__ == '__main__':
+ # add an argument with community
+ parser: ArgumentParser = ArgumentParser()
+ parser.add_argument('community', type=str)
+ args = parser.parse_args()
+ community: str = args.community
+ if community.count(':') != 1:
+ print("Invalid community format")
+ exit(1)
+ try:
+ # try to extract community parts from an argument
+ comm_left: int = int(community.split(':')[0])
+ comm_right: int = int(community.split(':')[1])
+
+ # check compatibilities of left and right parts
+ if 0 <= comm_left <= COMM_MAX_2_OCTET \
+ and 0 <= comm_right <= COMM_MAX_2_OCTET:
+ exit(0)
+ except Exception:
+ # fail if something was wrong
+ print("Invalid community format")
+ exit(1)
+
+ # fail if none of validators catched the value
+ print("Invalid community format")
+ exit(1) \ No newline at end of file