]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: vrf leak show cmds to check deleted instance
authorChirag Shah <chirag@cumulusnetworks.com>
Mon, 29 Apr 2019 18:45:49 +0000 (11:45 -0700)
committerChirag Shah <chirag@cumulusnetworks.com>
Mon, 17 Jun 2019 22:41:51 +0000 (15:41 -0700)
When a source bgp vrf instance is deleted, ensure the referencing
of it in vrf route leak show commands.

Ticket:CM-20534 CM-24484

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
bgpd/bgp_vty.c

index bde4b52af528b0074274607f2edb2e916d250e9a..ef7cf89450d68659b28a350eb8bedad205e8681f 100644 (file)
@@ -11329,15 +11329,19 @@ static int bgp_show_route_leak_vty(struct vty *vty, const char *name,
                                json_object_array_add(json_import_vrfs,
                                                json_object_new_string(vname));
 
+                       json_object_object_add(json, "importFromVrfs",
+                                                      json_import_vrfs);
                        dir = BGP_VPN_POLICY_DIR_FROMVPN;
-                       ecom_str = ecommunity_ecom2str(
+                       if (bgp->vpn_policy[afi].rtlist[dir]) {
+                               ecom_str = ecommunity_ecom2str(
                                        bgp->vpn_policy[afi].rtlist[dir],
                                        ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
-                       json_object_object_add(json, "importFromVrfs",
-                                              json_import_vrfs);
-                       json_object_string_add(json, "importRts", ecom_str);
-
-                       XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                               json_object_string_add(json, "importRts",
+                                                      ecom_str);
+                               XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                       } else
+                               json_object_string_add(json, "importRts",
+                                                      "none");
                }
 
                if (!CHECK_FLAG(bgp->af_flags[afi][safi],
@@ -11361,12 +11365,16 @@ static int bgp_show_route_leak_vty(struct vty *vty, const char *name,
                                                 buf1, RD_ADDRSTRLEN));
 
                        dir = BGP_VPN_POLICY_DIR_TOVPN;
-                       ecom_str = ecommunity_ecom2str(
+                       if (bgp->vpn_policy[afi].rtlist[dir]) {
+                               ecom_str = ecommunity_ecom2str(
                                               bgp->vpn_policy[afi].rtlist[dir],
                                               ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
-                       json_object_string_add(json, "exportRts", ecom_str);
-
-                       XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                               json_object_string_add(json, "exportRts",
+                                                      ecom_str);
+                               XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                       } else
+                               json_object_string_add(json, "exportRts",
+                                                      "none");
                }
 
                if (use_json) {
@@ -11399,12 +11407,16 @@ static int bgp_show_route_leak_vty(struct vty *vty, const char *name,
                                vty_out(vty, "  %s\n", vname);
 
                        dir = BGP_VPN_POLICY_DIR_FROMVPN;
-                       ecom_str = ecommunity_ecom2str(
+                       ecom_str = NULL;
+                       if (bgp->vpn_policy[afi].rtlist[dir]) {
+                               ecom_str = ecommunity_ecom2str(
                                               bgp->vpn_policy[afi].rtlist[dir],
                                               ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
-                       vty_out(vty, "Import RT(s): %s\n", ecom_str);
+                               vty_out(vty, "Import RT(s): %s\n", ecom_str);
 
-                       XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                               XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                       } else
+                               vty_out(vty, "Import RT(s):\n");
                }
 
                if (!CHECK_FLAG(bgp->af_flags[afi][safi],
@@ -11427,11 +11439,14 @@ static int bgp_show_route_leak_vty(struct vty *vty, const char *name,
                                              buf1, RD_ADDRSTRLEN));
 
                        dir = BGP_VPN_POLICY_DIR_TOVPN;
-                       ecom_str = ecommunity_ecom2str(
+                       if (bgp->vpn_policy[afi].rtlist[dir]) {
+                               ecom_str = ecommunity_ecom2str(
                                        bgp->vpn_policy[afi].rtlist[dir],
                                        ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
-                       vty_out(vty, "Export RT: %s\n", ecom_str);
-                       XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                               vty_out(vty, "Export RT: %s\n", ecom_str);
+                               XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
+                       } else
+                               vty_out(vty, "Import RT(s):\n");
                }
        }