From: Stephen Worley Date: Tue, 13 Oct 2020 20:12:14 +0000 (-0400) Subject: bgpd: numerical evpn type support to route-map cmds X-Git-Tag: base_7.6~395^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=38677473b231f3f043e351bc835cef5f2c3895ee;p=mirror%2Ffrr.git bgpd: numerical evpn type support to route-map cmds Add numberical evpn route-type support to route-map evpn commands. Signed-off-by: Stephen Worley --- diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index 09cc775d47..6940514303 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -4034,32 +4034,64 @@ DEFUN (no_match_mac_address, RMAP_EVENT_FILTER_DELETED); } +/* + * Helper to handle the case of the user passing in a number or type string + */ +static const char *parse_evpn_rt_type(const char *num_rt_type) +{ + switch (num_rt_type[0]) { + case '1': + return "ead"; + case '2': + return "macip"; + case '3': + return "multicast"; + case '4': + return "es"; + case '5': + return "prefix"; + default: + break; + } + + /* Was already full type string */ + return num_rt_type; +} + DEFUN (match_evpn_route_type, match_evpn_route_type_cmd, - "match evpn route-type ", + "match evpn route-type ", MATCH_STR EVPN_HELP_STR - "Match route-type\n" - "mac-ip route\n" - "IMET route\n" - "prefix route\n") -{ - return bgp_route_match_add(vty, "evpn route-type", argv[3]->arg, + EVPN_TYPE_HELP_STR + EVPN_TYPE_2_HELP_STR + EVPN_TYPE_2_HELP_STR + EVPN_TYPE_3_HELP_STR + EVPN_TYPE_3_HELP_STR + EVPN_TYPE_5_HELP_STR + EVPN_TYPE_5_HELP_STR) +{ + return bgp_route_match_add(vty, "evpn route-type", + parse_evpn_rt_type(argv[3]->arg), RMAP_EVENT_MATCH_ADDED); } DEFUN (no_match_evpn_route_type, no_match_evpn_route_type_cmd, - "no match evpn route-type ", + "no match evpn route-type ", NO_STR MATCH_STR EVPN_HELP_STR - "Match route-type\n" - "mac-ip route\n" - "IMET route\n" - "prefix route\n") -{ - return bgp_route_match_delete(vty, "evpn route-type", argv[4]->arg, + EVPN_TYPE_HELP_STR + EVPN_TYPE_2_HELP_STR + EVPN_TYPE_2_HELP_STR + EVPN_TYPE_3_HELP_STR + EVPN_TYPE_3_HELP_STR + EVPN_TYPE_5_HELP_STR + EVPN_TYPE_5_HELP_STR) +{ + return bgp_route_match_delete(vty, "evpn route-type", + parse_evpn_rt_type(argv[4]->arg), RMAP_EVENT_MATCH_DELETED); }