From 1abef40fb3cf08891583484c7eb42b058e6d9021 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Fri, 14 May 2021 01:39:24 +0300 Subject: [PATCH] Revert "bgpd: don't use operational state in "router bgp" command" This reverts commit 4062b455a6eacfe3f5107daa68351b18cc0ca7e7. --- bgpd/bgp_vty.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index fb01d16b97..6acce23d54 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -1388,19 +1388,16 @@ DEFUN_YANG_NOSH(router_bgp, as_t as; struct bgp *bgp; const char *name = NULL; + char as_str[12] = {'\0'}; enum bgp_instance_type inst_type; char base_xpath[XPATH_MAXLEN]; - const struct lyd_node *bgp_glb_dnode; // "router bgp" without an ASN if (argc == 2) { // Pending: Make VRF option available for ASN less config - snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_GLOBAL_XPATH, - "frr-bgp:bgp", "bgp", VRF_DEFAULT_NAME); + bgp = bgp_get_default(); - bgp_glb_dnode = yang_dnode_get(vty->candidate_config->dnode, - base_xpath); - if (!bgp_glb_dnode) { + if (bgp == NULL) { vty_out(vty, "%% No BGP process is configured\n"); return CMD_WARNING_CONFIG_FAILED; } @@ -1410,19 +1407,31 @@ DEFUN_YANG_NOSH(router_bgp, return CMD_WARNING_CONFIG_FAILED; } - as = yang_dnode_get_uint32(bgp_glb_dnode, "./global/local-as"); + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_GLOBAL_XPATH, + "frr-bgp:bgp", "bgp", VRF_DEFAULT_NAME); - VTY_PUSH_XPATH(BGP_NODE, base_xpath); + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + snprintf(as_str, 12, "%d", bgp->as); + nb_cli_enqueue_change(vty, "./global/local-as", NB_OP_MODIFY, + as_str); + if (bgp->inst_type == BGP_INSTANCE_TYPE_VIEW) { + nb_cli_enqueue_change(vty, + "./global/instance-type-view", + NB_OP_MODIFY, "true"); + } - /* - * For backward compatibility with old commands we still - * need to use the qobj infrastructure. - */ - bgp = bgp_lookup(as, NULL); - if (bgp) - VTY_PUSH_CONTEXT(BGP_NODE, bgp); + nb_cli_pending_commit_check(vty); + ret = nb_cli_apply_changes(vty, base_xpath); + if (ret == CMD_SUCCESS) { + VTY_PUSH_XPATH(BGP_NODE, base_xpath); - return CMD_SUCCESS; + /* + * For backward compatibility with old commands we still + * need to use the qobj infrastructure. + */ + VTY_PUSH_CONTEXT(BGP_NODE, bgp); + } + return ret; } // "router bgp X" -- 2.39.5