From bc06ff90f52168fb6c23b796d4d051c344b833fa Mon Sep 17 00:00:00 2001 From: Sindhu Parvathi Gopinathan Date: Tue, 24 Sep 2024 10:55:09 -0700 Subject: [PATCH] bgpd: EVPN fix per rd specific type-2 json output Current Issue: paths key is not there for 'show bgp l2vpn evpn route rd mac json' uses evpn prefix as key for each path. Replace the evpn prefix with "paths". This aligned with overall EVPN RIB json output like 'show bgp l2vpn evpn route json' 'show bgp l2vpn evpn route rd <> type 2 json' Fix: paths key is added instead of prefix info. Ticket:#4087461 Issue:4087461 Testing: Before fix: leaf22# show bgp l2vpn evpn route rd 6.0.0.17:2 mac 00:02:00:00:00:12 json { "prefix":"[2]:[0]:[48]:[00:02:00:00:00:12]", "prefixLen":352, "rd":"6.0.0.17:2", "routeType":2, "ethTag":0, "macLen":48, "mac":"00:02:00:00:00:12", "advertisedTo":{ "220.20.0.33":{ "hostname":"spine21" }, "220.21.0.33":{ "hostname":"spine22" } }, "[2]:[0]:[48]:[00:02:00:00:00:12]":[ <===== Prefix info instead of "paths" key [ { "vni":"101101", "aspath":{ "string":"65202 65024", "segments":[ { "type":"as-sequence", "list":[ 65202, 65024 ] } ], "length":2 }, "esi":"03:00:00:00:77:02:04:00:00:18", "es_info":{ "localEs":true }, "origin":"IGP", "valid":true, "version":5, "bestpath":{ "bestpathFromAs":65202, "overall":true, "selectionReason":"Older Path" }, "extendedCommunity":{ "string":"RT:65024:101101 ET:8" }, "lastUpdate":{ "epoch":1726803218, "string":"Fri Sep 20 03:33:38 2024\n" }, "nexthops":[ { "ip":"6.0.0.17", "hostname":"spine21", "afi":"ipv4", "metric":0, "accessible":true, "used":true } ], "peer":{ "peerId":"220.20.0.33", "routerId":"6.0.0.20", "hostname":"spine21", "type":"external" } } ], [ { "vni":"101101", "aspath":{ "string":"65202 65024", "segments":[ { "type":"as-sequence", "list":[ 65202, 65024 ] } ], "length":2 }, "esi":"03:00:00:00:77:02:04:00:00:18", "es_info":{ "localEs":true }, "origin":"IGP", "valid":true, "version":5, "extendedCommunity":{ "string":"RT:65024:101101 ET:8" }, "lastUpdate":{ "epoch":1726803218, "string":"Fri Sep 20 03:33:38 2024\n" }, "nexthops":[ { "ip":"6.0.0.17", "hostname":"spine22", "afi":"ipv4", "metric":0, "accessible":true, "used":true } ], "peer":{ "peerId":"220.21.0.33", "routerId":"6.0.0.21", "hostname":"spine22", "type":"external" } } ] ], "numPaths":2 } After fix: eaf22# show bgp l2vpn evpn route rd 6.0.0.17:2 mac 00:02:00:00:00:12 json { "prefix":"[2]:[0]:[48]:[00:02:00:00:00:12]", "prefixLen":352, "rd":"6.0.0.17:2", "routeType":2, "ethTag":0, "macLen":48, "mac":"00:02:00:00:00:12", "advertisedTo":{ "220.20.0.33":{ "hostname":"spine21" }, "220.21.0.33":{ "hostname":"spine22" } }, "paths":[ [ { "vni":"101101", "aspath":{ "string":"65202 65024", "segments":[ { "type":"as-sequence", "list":[ 65202, 65024 ] } ], "length":2 }, "esi":"03:00:00:00:77:02:04:00:00:18", "es_info":{ "localEs":true }, "origin":"IGP", "valid":true, "version":3, "bestpath":{ "bestpathFromAs":65202, "overall":true, "selectionReason":"Router ID" }, "extendedCommunity":{ "string":"RT:65024:101101 ET:8" }, "lastUpdate":{ "epoch":1727175046, "string":"Tue Sep 24 10:50:46 2024\n" }, "nexthops":[ { "ip":"6.0.0.17", "hostname":"spine21", "afi":"ipv4", "metric":0, "accessible":true, "used":true } ], "peer":{ "peerId":"220.20.0.33", "routerId":"6.0.0.20", "hostname":"spine21", "type":"external" } } ], [ { "vni":"101101", "aspath":{ "string":"65202 65024", "segments":[ { "type":"as-sequence", "list":[ 65202, 65024 ] } ], "length":2 }, "esi":"03:00:00:00:77:02:04:00:00:18", "es_info":{ "localEs":true }, "origin":"IGP", "valid":true, "version":3, "extendedCommunity":{ "string":"RT:65024:101101 ET:8" }, "lastUpdate":{ "epoch":1727175046, "string":"Tue Sep 24 10:50:46 2024\n" }, "nexthops":[ { "ip":"6.0.0.17", "hostname":"spine22", "afi":"ipv4", "metric":0, "accessible":true, "used":true } ], "peer":{ "peerId":"220.21.0.33", "routerId":"6.0.0.21", "hostname":"spine22", "type":"external" } } ] ], "numPaths":2 } Signed-off-by: Sindhu Parvathi Gopinathan's (cherry picked from commit ff008cee6b5b4945f6dd3e58b46b933d695c2865) --- bgpd/bgp_evpn_vty.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index eb9f34ef02ad..c553d2e32e24 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -2820,9 +2820,9 @@ static void evpn_show_route_rd_macip(struct vty *vty, struct bgp *bgp, path_cnt++; } - if (json && path_cnt) { + if (json) { if (path_cnt) - json_object_object_addf(json, json_paths, "%pFX", &p); + json_object_object_add(json, "paths", json_paths); json_object_int_add(json, "numPaths", path_cnt); } else { vty_out(vty, "\nDisplayed %u paths for requested prefix\n",