]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: remove duplicated checks from CLI
authorIgor Ryzhov <iryzhov@nfware.com>
Sun, 14 Mar 2021 16:18:49 +0000 (19:18 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Tue, 23 Mar 2021 17:50:05 +0000 (20:50 +0300)
Those checks are already done in NB layer.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
bgpd/bgp_nb_config.c
bgpd/bgp_vty.c

index 75be3c79fe7d68acb395706e065a3876fd2e318f..49ee2335915ee1ae498a87e478e93e4c08b7e079 100644 (file)
@@ -158,8 +158,26 @@ int bgp_router_destroy(struct nb_cb_destroy_args *args)
                        struct bgp *tmp_bgp;
 
                        for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, tmp_bgp)) {
-                               if (tmp_bgp->inst_type
-                                   == BGP_INSTANCE_TYPE_VRF) {
+                               if (tmp_bgp->inst_type != BGP_INSTANCE_TYPE_VRF)
+                                       continue;
+                               if (CHECK_FLAG(tmp_bgp->af_flags[AFI_IP][SAFI_UNICAST],
+                                              BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT) ||
+                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP6][SAFI_UNICAST],
+                                              BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT) ||
+                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP][SAFI_UNICAST],
+                                              BGP_CONFIG_VRF_TO_MPLSVPN_EXPORT) ||
+                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP6][SAFI_UNICAST],
+                                              BGP_CONFIG_VRF_TO_MPLSVPN_EXPORT) ||
+                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP][SAFI_UNICAST],
+                                              BGP_CONFIG_VRF_TO_VRF_EXPORT) ||
+                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP6][SAFI_UNICAST],
+                                              BGP_CONFIG_VRF_TO_VRF_EXPORT) ||
+                                   (bgp == bgp_get_evpn() &&
+                                   (CHECK_FLAG(tmp_bgp->af_flags[AFI_L2VPN][SAFI_EVPN],
+                                               BGP_L2VPN_EVPN_ADVERTISE_IPV4_UNICAST) ||
+                                    CHECK_FLAG(tmp_bgp->af_flags[AFI_L2VPN][SAFI_EVPN],
+                                               BGP_L2VPN_EVPN_ADVERTISE_IPV6_UNICAST))) ||
+                                   (tmp_bgp->vnihash && hashcount(tmp_bgp->vnihash))) {
                                        snprintf(
                                                args->errmsg, args->errmsg_len,
                                                "Cannot delete default BGP instance. Dependent VRF instances exist\n");
index 6a44303339eebef9d1d879387d9eaf66d6a2d7ea..934d176e5ee668d9e5332c66ac969bf5b70cc962 100644 (file)
@@ -1423,10 +1423,7 @@ DEFUN_YANG(no_router_bgp,
           "no router bgp [(1-4294967295)$instasn [<view|vrf> VIEWVRFNAME]]",
           NO_STR ROUTER_STR BGP_STR AS_STR BGP_INSTANCE_HELP_STR)
 {
-       int idx_asn = 3;
        int idx_vrf = 5;
-       as_t as = 0;
-       struct bgp *bgp;
        const char *name = NULL;
        char base_xpath[XPATH_MAXLEN];
        const struct lyd_node *bgp_glb_dnode;
@@ -1448,72 +1445,15 @@ DEFUN_YANG(no_router_bgp,
                        vty_out(vty, "%% Please specify ASN and VRF\n");
                        return CMD_WARNING_CONFIG_FAILED;
                }
-
-               /* tcli mode bgp would not be set until apply stage. */
-               bgp = nb_running_get_entry(bgp_glb_dnode, NULL, false);
-               if (!bgp)
-                       return CMD_SUCCESS;
-
-               if (bgp->l3vni) {
-                       vty_out(vty, "%% Please unconfigure l3vni %u",
-                               bgp->l3vni);
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
        } else {
-               as = strtoul(argv[idx_asn]->arg, NULL, 10);
-
                if (argc > 4)
                        name = argv[idx_vrf]->arg;
+               else
+                       name = VRF_DEFAULT_NAME;
 
-               /* Lookup bgp structure. */
-               bgp = bgp_lookup(as, name);
-               if (!bgp) {
-                       vty_out(vty, "%% Can't find BGP instance\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
-
-               if (bgp->l3vni) {
-                       vty_out(vty, "%% Please unconfigure l3vni %u\n",
-                               bgp->l3vni);
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
-
-               /* Cannot delete default instance if vrf instances exist */
-               if (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT) {
-                       struct listnode *node;
-                       struct bgp *tmp_bgp;
-
-                       for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, tmp_bgp)) {
-                               if (tmp_bgp->inst_type != BGP_INSTANCE_TYPE_VRF)
-                                       continue;
-                               if (CHECK_FLAG(tmp_bgp->af_flags[AFI_IP][SAFI_UNICAST],
-                                              BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT) ||
-                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP6][SAFI_UNICAST],
-                                              BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT) ||
-                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP][SAFI_UNICAST],
-                                              BGP_CONFIG_VRF_TO_MPLSVPN_EXPORT) ||
-                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP6][SAFI_UNICAST],
-                                              BGP_CONFIG_VRF_TO_MPLSVPN_EXPORT) ||
-                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP][SAFI_UNICAST],
-                                              BGP_CONFIG_VRF_TO_VRF_EXPORT) ||
-                                   CHECK_FLAG(tmp_bgp->af_flags[AFI_IP6][SAFI_UNICAST],
-                                              BGP_CONFIG_VRF_TO_VRF_EXPORT) ||
-                                   (bgp == bgp_get_evpn() &&
-                                   (CHECK_FLAG(tmp_bgp->af_flags[AFI_L2VPN][SAFI_EVPN],
-                                               BGP_L2VPN_EVPN_ADVERTISE_IPV4_UNICAST) ||
-                                    CHECK_FLAG(tmp_bgp->af_flags[AFI_L2VPN][SAFI_EVPN],
-                                               BGP_L2VPN_EVPN_ADVERTISE_IPV6_UNICAST))) ||
-                                   (tmp_bgp->vnihash && hashcount(tmp_bgp->vnihash))) {
-                                       vty_out(vty,
-                                               "%% Cannot delete default BGP instance. Dependent VRF instances exist\n");
-                                       return CMD_WARNING_CONFIG_FAILED;
-                               }
-                       }
-               }
+               snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_GLOBAL_XPATH,
+                        "frr-bgp:bgp", "bgp", name);
        }
-       snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_GLOBAL_XPATH,
-                "frr-bgp:bgp", "bgp",
-                bgp->name ? bgp->name : VRF_DEFAULT_NAME);
 
        nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);