diff options
author | aapostoliuk <a.apostoliuk@vyos.io> | 2022-09-01 16:39:46 +0300 |
---|---|---|
committer | aapostoliuk <a.apostoliuk@vyos.io> | 2022-10-03 13:38:56 +0300 |
commit | 507f6ac423403b57f375309b483c6ccc1c83ad06 (patch) | |
tree | c05eed02f6b86313c90f4d0c3f574e49ee00ea2d /src/validators/bgp-extended-community | |
parent | daceea11d9666b554a3ccc86d28e533a9b7a6a89 (diff) | |
download | vyos-1x-507f6ac423403b57f375309b483c6ccc1c83ad06.tar.gz vyos-1x-507f6ac423403b57f375309b483c6ccc1c83ad06.zip |
policy: T4660: Changed CLI syntax in route-map set community
Changed CLI syntax in route-map set community,
set large-community, set extcommunity
Allows to add multiple communities, large-communities
and extcommunities in clear view.
Added new well-known communities.
Added non-transitive feature in extcommunities.
Fixed community's validators.
Diffstat (limited to 'src/validators/bgp-extended-community')
-rwxr-xr-x | src/validators/bgp-extended-community | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/validators/bgp-extended-community b/src/validators/bgp-extended-community new file mode 100755 index 000000000..b69ae3449 --- /dev/null +++ b/src/validators/bgp-extended-community @@ -0,0 +1,55 @@ +#!/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 +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(':') != 1: + print("Invalid community format") + exit(1) + try: + # try to extract community parts from an argument + comm_left: str = community.split(':')[0] + comm_right: int = int(community.split(':')[1]) + + # check if left part is an IPv4 address + if is_ipv4(comm_left) and 0 <= comm_right <= COMM_MAX_2_OCTET: + exit() + # check if a left part is a number + if 0 <= int(comm_left) <= COMM_MAX_2_OCTET \ + and 0 <= comm_right <= COMM_MAX_4_OCTET: + exit() + + 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 |