summaryrefslogtreecommitdiff
path: root/src/validators/bgp-large-community
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2022-10-07 07:34:24 +0200
committerGitHub <noreply@github.com>2022-10-07 07:34:24 +0200
commit23f7ef7e9e79b1f159c3e874c2237b5b804d9380 (patch)
tree6b1f1e912830a2b334f82431e92d0360c23533ca /src/validators/bgp-large-community
parent14fb822154015dc7944187361153b4fed205730e (diff)
parent067cc12d0e6e52044df48f6f612cb4db1d4ad80c (diff)
downloadvyos-1x-23f7ef7e9e79b1f159c3e874c2237b5b804d9380.tar.gz
vyos-1x-23f7ef7e9e79b1f159c3e874c2237b5b804d9380.zip
Merge branch 'current' into radius-rate-limit-comp
Diffstat (limited to 'src/validators/bgp-large-community')
-rwxr-xr-xsrc/validators/bgp-large-community53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/validators/bgp-large-community b/src/validators/bgp-large-community
new file mode 100755
index 000000000..386398308
--- /dev/null
+++ b/src/validators/bgp-large-community
@@ -0,0 +1,53 @@
+#!/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_4_OCTET: int = 4294967295
+
+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(':') != 2:
+ print("Invalid community format")
+ exit(1)
+ try:
+ # try to extract community parts from an argument
+ comm_part1: int = int(community.split(':')[0])
+ comm_part2: int = int(community.split(':')[1])
+ comm_part3: int = int(community.split(':')[2])
+
+ # check compatibilities of left and right parts
+ if 0 <= comm_part1 <= COMM_MAX_4_OCTET \
+ and 0 <= comm_part2 <= COMM_MAX_4_OCTET \
+ and 0 <= comm_part3 <= COMM_MAX_4_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