From: Mitesh Kanjariya Date: Mon, 7 Aug 2017 20:57:44 +0000 (-0700) Subject: bgpd: Add advertsie-all-vni in show bgp neighbor X-Git-Tag: frr-4.0-dev~362^2~19 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=dff8f48da3690880f9bfc4bb5bda2ac9933a7891;p=mirror%2Ffrr.git bgpd: Add advertsie-all-vni in show bgp neighbor Ticket: CM-17249 Review: CCR-6558 Testing: Manual Signed-off-by: Mitesh Kanjariya --- diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c index 707728f9da..5da773d7a3 100644 --- a/bgpd/bgp_evpn.c +++ b/bgpd/bgp_evpn.c @@ -2200,43 +2200,54 @@ bgp_evpn_route2json (struct prefix_evpn *p, json_object *json) if (!json) return; - if (p->prefix.route_type == BGP_EVPN_IMET_ROUTE) - { - json_object_int_add (json, "routeType", p->prefix.route_type); - json_object_int_add (json, "ethTag", 0); - json_object_int_add (json, "ipLen", IS_EVPN_PREFIX_IPADDR_V4 (p) ? IPV4_MAX_BITLEN : IPV6_MAX_BITLEN); - json_object_string_add (json, "ip", inet_ntoa (p->prefix.ip.ipaddr_v4)); - } - else if (p->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE) - { - if (IS_EVPN_PREFIX_IPADDR_NONE(p)) - { - json_object_int_add (json, "routeType", p->prefix.route_type); - json_object_int_add (json, "esi", 0); /* TODO: we don't support esi yet */ - json_object_int_add (json, "ethTag", 0); - json_object_int_add (json, "macLen", 8 * ETHER_ADDR_LEN); - json_object_string_add (json, "mac", prefix_mac2str (&p->prefix.mac, buf1, sizeof (buf1))); - } - else - { - u_char family; - - family = IS_EVPN_PREFIX_IPADDR_V4(p) ? \ - AF_INET : AF_INET6; - - json_object_int_add (json, "routeType", p->prefix.route_type); - json_object_int_add (json, "esi", 0); /* TODO: we don't support esi yet */ - json_object_int_add (json, "ethTag", 0); - json_object_int_add (json, "macLen", 8 * ETHER_ADDR_LEN); - json_object_string_add (json, "mac", prefix_mac2str (&p->prefix.mac, buf1, sizeof (buf1))); - json_object_int_add (json, "ipLen", IS_EVPN_PREFIX_IPADDR_V4 (p) ? IPV4_MAX_BITLEN : IPV6_MAX_BITLEN); - json_object_string_add (json, "ip", inet_ntop (family, &p->prefix.ip.ip.addr, buf2, PREFIX2STR_BUFFER)); - } - } - else - { - /* Currently, this is to cater to other AF_ETHERNET code. */ - } + if (p->prefix.route_type == BGP_EVPN_IMET_ROUTE) { + json_object_int_add (json, "routeType", p->prefix.route_type); + json_object_int_add (json, "ethTag", 0); + json_object_int_add (json, + "ipLen", + IS_EVPN_PREFIX_IPADDR_V4 (p) ? + IPV4_MAX_BITLEN : IPV6_MAX_BITLEN); + json_object_string_add (json, "ip", + inet_ntoa (p->prefix.ip.ipaddr_v4)); + } + else if (p->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE) { + if (IS_EVPN_PREFIX_IPADDR_NONE(p)) { + json_object_int_add (json, "routeType", p->prefix.route_type); + json_object_int_add (json, "esi", 0); /* TODO: we don't support esi yet */ + json_object_int_add (json, "ethTag", 0); + json_object_int_add (json, "macLen", 8 * ETH_ALEN); + json_object_string_add (json, "mac", + prefix_mac2str (&p->prefix.mac, + buf1, sizeof (buf1))); + } else { + u_char family; + + family = IS_EVPN_PREFIX_IPADDR_V4(p) ? \ + AF_INET : AF_INET6; + + json_object_int_add (json, "routeType", + p->prefix.route_type); + json_object_int_add (json, "esi", 0); /* TODO: we don't support esi yet */ + json_object_int_add (json, "ethTag", 0); + json_object_int_add (json, "macLen", + 8 * ETH_ALEN); + json_object_string_add (json, "mac", + prefix_mac2str (&p->prefix.mac, + buf1, + sizeof (buf1))); + json_object_int_add (json, "ipLen", + IS_EVPN_PREFIX_IPADDR_V4 (p) ? + IPV4_MAX_BITLEN : + IPV6_MAX_BITLEN); + json_object_string_add (json, "ip", + inet_ntop (family, + &p->prefix.ip.ip.addr, + buf2, + PREFIX2STR_BUFFER)); + } + } else { + /* Currently, this is to cater to other AF_ETHERNET code. */ + } return; } diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index 2ba8f29260..af34c33946 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -174,7 +174,7 @@ static void show_import_rt_entry(struct hash_backet *backet, void *args[]) vty = args[0]; json = args[1]; - display_import_rt(vty, irt); + display_import_rt(vty, irt, json); return; } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index cabbade525..80daac236d 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -7396,14 +7396,14 @@ static void bgp_show_peer_afi(struct vty *vty, struct peer *p, afi_t afi, safi_t safi, u_char use_json, json_object *json_neigh) { - struct bgp_filter *filter; - struct peer_af *paf; - char orf_pfx_name[BUFSIZ]; - int orf_pfx_count; - json_object *json_af = NULL; - json_object *json_prefA = NULL; - json_object *json_prefB = NULL; - json_object *json_addr = NULL; + struct bgp_filter *filter; + struct peer_af *paf; + char orf_pfx_name[BUFSIZ]; + int orf_pfx_count; + json_object *json_af = NULL; + json_object *json_prefA = NULL; + json_object *json_prefB = NULL; + json_object *json_addr = NULL; if (use_json) { json_addr = json_object_new_object(); @@ -7602,6 +7602,12 @@ static void bgp_show_peer_afi(struct vty *vty, struct peer *p, afi_t afi, "defaultNotSent"); } + if (afi == AFI_L2VPN && safi == SAFI_EVPN) { + if (p->bgp->advertise_all_vni) + json_object_boolean_true_add(json_addr, + "advertiseAllVnis"); + } + if (filter->plist[FILTER_IN].name || filter->dlist[FILTER_IN].name || filter->aslist[FILTER_IN].name @@ -7867,6 +7873,12 @@ static void bgp_show_peer_afi(struct vty *vty, struct peer *p, afi_t afi, vty_out(vty, " default not sent\n"); } + /* advertise-vni-all */ + if (afi == AFI_L2VPN && safi == SAFI_EVPN) { + if (p->bgp->advertise_all_vni) + vty_out(vty, " advertise-all-vni\n"); + } + if (filter->plist[FILTER_IN].name || filter->dlist[FILTER_IN].name || filter->aslist[FILTER_IN].name @@ -9768,10 +9780,10 @@ static int bgp_show_neighbor(struct vty *vty, struct bgp *bgp, static void bgp_show_all_instances_neighbors_vty(struct vty *vty, u_char use_json) { - struct listnode *node, *nnode; - struct bgp *bgp; - json_object *json = NULL; - int is_first = 1; + struct listnode *node, *nnode; + struct bgp *bgp; + json_object *json = NULL; + int is_first = 1; if (use_json) vty_out(vty, "{\n");