diff options
author | Philippe Guibert <philippe.guibert@6wind.com> | 2022-11-02 18:17:21 +0100 |
---|---|---|
committer | Philippe Guibert <philippe.guibert@6wind.com> | 2023-02-10 10:27:17 +0100 |
commit | 8079a4138d61500117ebbffb250ceba0a894f9c0 (patch) | |
tree | dea5e0834d075574c1a485928cb843446bad0d20 /python | |
parent | bgpd: store the bgp as identifier in the configured as-notation (diff) | |
download | frr-8079a4138d61500117ebbffb250ceba0a894f9c0.tar.xz frr-8079a4138d61500117ebbffb250ceba0a894f9c0.zip |
lib, bgp: add initial support for asdot format
AS number can be defined as an unsigned long number, or
two uint16 values separated by a period (.). The possible
valus are:
- usual 32 bit values : [1;2^32 -1]
- <1.65535>.<0.65535> for dot notation
- <0.65535>.<0.65535> for dot+ notation.
The 0.0 value is forbidden when configuring BGP instances
or peer configurations.
A new ASN type is added for parsing in the vty.
The following commands use that new identifier:
- router bgp ..
- bgp confederation ..
- neighbor <> remote-as <>
- neighbor <> local-as <>
- clear ip bgp <>
- route-map / set as-path <>
An asn library is available in lib/ and provides some
services:
- convert an as string into an as number.
- parse an as path list string and extract a number.
- convert an as number into a string.
Also, the bgp tests forge an as_zero_path, and to do that,
an API to relax the possibility to have a 0 as value is
specifically called from the tests.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'python')
-rw-r--r-- | python/clidef.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/python/clidef.py b/python/clidef.py index 101c9a5ae..cd399e93b 100644 --- a/python/clidef.py +++ b/python/clidef.py @@ -64,6 +64,12 @@ _fail = (_end == argv[_i]->arg) || (*_end != '\\0');""" ) +class AsDotHandler(RenderHandler): + argtype = "as_t" + decl = Template("as_t $varname = 0;") + code = Template("_fail = !asn_str2asn(argv[_i]->arg, &$varname);") + + # A.B.C.D/M (prefix_ipv4) and # X:X::X:X/M (prefix_ipv6) are "compatible" and can merge into a # struct prefix: @@ -165,6 +171,7 @@ handlers = { "IPV6_PREFIX_TKN": Prefix6Handler, "MAC_TKN": PrefixEthHandler, "MAC_PREFIX_TKN": PrefixEthHandler, + "ASNUM_TKN": AsDotHandler, } # core template invoked for each occurence of DEFPY. |