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-large-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-large-community')
-rwxr-xr-x | src/validators/bgp-large-community | 53 |
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 |