From 4b63e358bc213bfa9d1baeda6fbbdfa39df60d2e Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Thu, 17 Sep 2020 14:20:44 -0700 Subject: [PATCH] bgpd: no router bgp check candidate config For `no router bgp` without ASN check candidate config for default bgp instance presence to avoid failure from checking backend db where bgp instance may not be created. This situation can be seen in transactional cli mode with following config. bharat(config)# router bgp 101 bharat(config-router)# exit bharat(config)# no router bgp % No BGP process is configured bharat(config)# no router bgp % No BGP process is configured bharat(config)# Signed-off-by: Chirag Shah --- bgpd/bgp_vty.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 2a5ef34d09..38dad59e60 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -1311,13 +1311,17 @@ DEFUN_YANG(no_router_bgp, struct bgp *bgp; const char *name = NULL; char base_xpath[XPATH_MAXLEN]; + const struct lyd_node *bgp_glb_dnode; // "no router bgp" without an ASN if (argc == 3) { // Pending: Make VRF option available for ASN less config - bgp = bgp_get_default(); + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_GLOBAL_XPATH, + "frr-bgp:bgp", "bgp", VRF_DEFAULT_NAME); - if (bgp == NULL) { + bgp_glb_dnode = yang_dnode_get(vty->candidate_config->dnode, + base_xpath); + if (!bgp_glb_dnode) { vty_out(vty, "%% No BGP process is configured\n"); return CMD_WARNING_CONFIG_FAILED; } @@ -1327,6 +1331,11 @@ DEFUN_YANG(no_router_bgp, 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); -- 2.39.5