From: Sarita Patra Date: Tue, 12 Jul 2022 10:45:14 +0000 (-0700) Subject: pim6d: Add [no] ipv6 pim bsm" command X-Git-Tag: base_8.5~319^2~9 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=5e651c369947edbe7bc5bea07770c9a00f061abf;p=mirror%2Ffrr.git pim6d: Add [no] ipv6 pim bsm" command Introduced common api pim_process_bsm_cmd, pim_process_no_bsm_cmd which will process both "[no] ip pim bsm" command and "[no] ipv6 pim bsm" command. Signed-off-by: Sarita Patra --- diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c index f6b370cee3..e7c20c1f37 100644 --- a/pimd/pim6_cmd.c +++ b/pimd/pim6_cmd.c @@ -476,6 +476,26 @@ DEFPY (no_ipv6_pim_rp_prefix_list, return pim_process_no_rp_plist_cmd(vty, rp_str, plist); } +DEFPY (ipv6_pim_bsm, + ipv6_pim_bsm_cmd, + "ipv6 pim bsm", + IPV6_STR + PIM_STR + "Enable BSM support on the interface\n") +{ + return pim_process_bsm_cmd(vty); +} + +DEFPY (no_ipv6_pim_bsm, + no_ipv6_pim_bsm_cmd, + "no ipv6 pim bsm", + NO_STR + IPV6_STR + PIM_STR + "Enable BSM support on the interface\n") +{ + return pim_process_no_bsm_cmd(vty); +} DEFPY (ipv6_ssmpingd, ipv6_ssmpingd_cmd, @@ -1685,6 +1705,9 @@ void pim_cmd_init(void) &interface_no_ipv6_pim_boundary_oil_cmd); install_element(INTERFACE_NODE, &interface_ipv6_mroute_cmd); install_element(INTERFACE_NODE, &interface_no_ipv6_mroute_cmd); + /* Install BSM command */ + install_element(INTERFACE_NODE, &ipv6_pim_bsm_cmd); + install_element(INTERFACE_NODE, &no_ipv6_pim_bsm_cmd); install_element(CONFIG_NODE, &ipv6_pim_rp_cmd); install_element(VRF_NODE, &ipv6_pim_rp_cmd); install_element(CONFIG_NODE, &no_ipv6_pim_rp_cmd); diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index ab0689a156..c5c098774c 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -5010,27 +5010,9 @@ DEFUN (ip_pim_bsm, "ip pim bsm", IP_STR PIM_STR - "Enables BSM support on the interface\n") + "Enable BSM support on the interface\n") { - const struct lyd_node *igmp_enable_dnode; - - igmp_enable_dnode = - yang_dnode_getf(vty->candidate_config->dnode, - FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, - "frr-routing:ipv4"); - if (!igmp_enable_dnode) - nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, - "true"); - else { - if (!yang_dnode_get_bool(igmp_enable_dnode, ".")) - nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, - "true"); - } - - nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "true"); - - return nb_cli_apply_changes(vty, - FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); + return pim_process_bsm_cmd(vty); } DEFUN (no_ip_pim_bsm, @@ -5039,12 +5021,9 @@ DEFUN (no_ip_pim_bsm, NO_STR IP_STR PIM_STR - "Disables BSM support\n") + "Enable BSM support on the interface\n") { - nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "false"); - - return nb_cli_apply_changes(vty, - FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); + return pim_process_no_bsm_cmd(vty); } DEFUN (ip_pim_ucast_bsm, diff --git a/pimd/pim_cmd_common.c b/pimd/pim_cmd_common.c index 9283016d08..6fa4d8eddb 100644 --- a/pimd/pim_cmd_common.c +++ b/pimd/pim_cmd_common.c @@ -3416,6 +3416,36 @@ int pim_process_ssmpingd_cmd(struct vty *vty, enum nb_operation operation, return nb_cli_apply_changes(vty, NULL); } +int pim_process_bsm_cmd(struct vty *vty) +{ + const struct lyd_node *gm_enable_dnode; + + gm_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, + FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, + FRR_PIM_AF_XPATH_VAL); + if (!gm_enable_dnode) + nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, + "true"); + else { + if (!yang_dnode_get_bool(gm_enable_dnode, ".")) + nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, + "true"); + } + + nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, + FRR_PIM_AF_XPATH_VAL); +} + +int pim_process_no_bsm_cmd(struct vty *vty) +{ + nb_cli_enqueue_change(vty, "./bsm", NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, + FRR_PIM_AF_XPATH_VAL); +} + static void show_scan_oil_stats(struct pim_instance *pim, struct vty *vty, time_t now) { diff --git a/pimd/pim_cmd_common.h b/pimd/pim_cmd_common.h index 27c029670e..f2ce292f03 100644 --- a/pimd/pim_cmd_common.h +++ b/pimd/pim_cmd_common.h @@ -62,6 +62,8 @@ int pim_process_ip_mroute_cmd(struct vty *vty, const char *interface, const char *group_str, const char *source_str); int pim_process_no_ip_mroute_cmd(struct vty *vty, const char *interface, const char *group_str, const char *src_str); +int pim_process_bsm_cmd(struct vty *vty); +int pim_process_no_bsm_cmd(struct vty *vty); void json_object_pim_upstream_add(json_object *json, struct pim_upstream *up); void pim_show_rpf(struct pim_instance *pim, struct vty *vty, json_object *json); void pim_show_neighbors_secondary(struct pim_instance *pim, struct vty *vty);