]> git.puffer.fish Git - mirror/frr.git/commitdiff
pim6d: Add [no] ipv6 pim bsm" command
authorSarita Patra <saritap@vmware.com>
Tue, 12 Jul 2022 10:45:14 +0000 (03:45 -0700)
committerSarita Patra <saritap@vmware.com>
Thu, 20 Oct 2022 08:06:30 +0000 (01:06 -0700)
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 <saritap@vmware.com>
pimd/pim6_cmd.c
pimd/pim_cmd.c
pimd/pim_cmd_common.c
pimd/pim_cmd_common.h

index f6b370cee32b0a6d369876ebef9e374b507baa26..e7c20c1f37adab487d066bfcf0a483cdccd0263f 100644 (file)
@@ -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);
index ab0689a15646b072ce02aafef5e2f365bf8b4656..c5c098774c503990e2a6b418d1637216be0769c7 100644 (file)
@@ -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,
index 9283016d0814744d39dae496c6987fced134c129..6fa4d8eddbbd4b33fee75ff8c4f3a26ac9e7308e 100644 (file)
@@ -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)
 {
index 27c029670e59ce5c78bbb82f48d53170d311e7d2..f2ce292f03744669ce39f6a5bb299bc4b4adcfe5 100644 (file)
@@ -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);