bgpd: convert bgp dampening cli to defpy

Signed-off-by: Chirag Shah <chirag@nvidia.com>
This commit is contained in:
Chirag Shah 2020-10-14 12:36:42 -07:00
parent fa423774ff
commit d9ce51130b

View File

@ -13933,48 +13933,9 @@ void cli_show_bgp_global_afi_safi_unicast_admin_distance_route(
: ""); : "");
} }
DEFUN_YANG(bgp_damp_set, bgp_damp_set_cmd, DEFPY_YANG(bgp_dampening,
"bgp dampening [(1-45) [(1-20000) (1-20000) (1-255)]]", bgp_dampening_cmd,
"BGP Specific commands\n" "[no] bgp dampening [(1-45)$halflife [(1-20000)$reuse (1-20000)$suppress (1-255)$max_supress]]",
"Enable route-flap dampening\n"
"Half-life time for the penalty\n"
"Value to start reusing a route\n"
"Value to start suppressing a route\n"
"Maximum duration to suppress a stable route\n")
{
int idx_half_life = 2;
int idx_reuse = 3;
int idx_suppress = 4;
int idx_max_suppress = 5;
afi_t afi;
safi_t safi;
char xpath[XPATH_MAXLEN];
afi = bgp_node_afi(vty);
safi = bgp_node_safi(vty);
nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
if (argc == 6) {
nb_cli_enqueue_change(vty, "./reach-decay", NB_OP_MODIFY,
argv[idx_half_life]->arg);
nb_cli_enqueue_change(vty, "./reuse-above", NB_OP_MODIFY,
argv[idx_reuse]->arg);
nb_cli_enqueue_change(vty, "./suppress-above", NB_OP_MODIFY,
argv[idx_suppress]->arg);
nb_cli_enqueue_change(vty, "./unreach-decay", NB_OP_MODIFY,
argv[idx_max_suppress]->arg);
}
snprintf(
xpath, sizeof(xpath),
"./global/afi-safis/afi-safi[afi-safi-name='%s']/%s/route-flap-dampening",
yang_afi_safi_value2identity(afi, safi),
bgp_afi_safi_get_container_str(afi, safi));
return nb_cli_apply_changes(vty, xpath);
}
DEFUN_YANG(bgp_damp_unset, bgp_damp_unset_cmd,
"no bgp dampening [(1-45) [(1-20000) (1-20000) (1-255)]]",
NO_STR NO_STR
"BGP Specific commands\n" "BGP Specific commands\n"
"Enable route-flap dampening\n" "Enable route-flap dampening\n"
@ -13990,7 +13951,24 @@ DEFUN_YANG(bgp_damp_unset, bgp_damp_unset_cmd,
afi = bgp_node_afi(vty); afi = bgp_node_afi(vty);
safi = bgp_node_safi(vty); safi = bgp_node_safi(vty);
nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "false"); if (!no) {
nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
if (argc == 6) {
nb_cli_enqueue_change(vty, "./reach-decay",
NB_OP_MODIFY, halflife_str);
nb_cli_enqueue_change(vty, "./reuse-above",
NB_OP_MODIFY, reuse_str);
nb_cli_enqueue_change(vty, "./suppress-above",
NB_OP_MODIFY, suppress_str);
nb_cli_enqueue_change(vty, "./unreach-decay",
NB_OP_MODIFY, max_supress_str);
} if (argc == 3) {
nb_cli_enqueue_change(vty, "./reach-decay",
NB_OP_MODIFY, halflife_str);
}
} else {
nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "false");
}
snprintf( snprintf(
xpath, sizeof(xpath), xpath, sizeof(xpath),
@ -14590,20 +14568,13 @@ void bgp_route_init(void)
&no_ipv6_bgp_distance_source_access_list_cmd); &no_ipv6_bgp_distance_source_access_list_cmd);
/* BGP dampening */ /* BGP dampening */
install_element(BGP_NODE, &bgp_damp_set_cmd); install_element(BGP_NODE, &bgp_dampening_cmd);
install_element(BGP_NODE, &bgp_damp_unset_cmd); install_element(BGP_IPV4_NODE, &bgp_dampening_cmd);
install_element(BGP_IPV4_NODE, &bgp_damp_set_cmd); install_element(BGP_IPV4M_NODE, &bgp_dampening_cmd);
install_element(BGP_IPV4_NODE, &bgp_damp_unset_cmd); install_element(BGP_IPV4L_NODE, &bgp_dampening_cmd);
install_element(BGP_IPV4M_NODE, &bgp_damp_set_cmd); install_element(BGP_IPV6_NODE, &bgp_dampening_cmd);
install_element(BGP_IPV4M_NODE, &bgp_damp_unset_cmd); install_element(BGP_IPV6M_NODE, &bgp_dampening_cmd);
install_element(BGP_IPV4L_NODE, &bgp_damp_set_cmd); install_element(BGP_IPV6L_NODE, &bgp_dampening_cmd);
install_element(BGP_IPV4L_NODE, &bgp_damp_unset_cmd);
install_element(BGP_IPV6_NODE, &bgp_damp_set_cmd);
install_element(BGP_IPV6_NODE, &bgp_damp_unset_cmd);
install_element(BGP_IPV6M_NODE, &bgp_damp_set_cmd);
install_element(BGP_IPV6M_NODE, &bgp_damp_unset_cmd);
install_element(BGP_IPV6L_NODE, &bgp_damp_set_cmd);
install_element(BGP_IPV6L_NODE, &bgp_damp_unset_cmd);
/* Large Communities */ /* Large Communities */
install_element(VIEW_NODE, &show_ip_bgp_large_community_list_cmd); install_element(VIEW_NODE, &show_ip_bgp_large_community_list_cmd);