From 45d1d7c9a2b7b41125e565af566e10d470349122 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Sun, 14 Mar 2021 19:18:49 +0300 Subject: [PATCH] bgpd: remove duplicated checks from CLI Those checks are already done in NB layer. Signed-off-by: Igor Ryzhov --- bgpd/bgp_nb_config.c | 22 ++++++++++++-- bgpd/bgp_vty.c | 68 +++----------------------------------------- 2 files changed, 24 insertions(+), 66 deletions(-) diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 75be3c79fe..49ee233591 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -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"); diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 6a44303339..934d176e5e 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -1423,10 +1423,7 @@ DEFUN_YANG(no_router_bgp, "no router bgp [(1-4294967295)$instasn [ 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); -- 2.39.5