]> git.puffer.fish Git - mirror/frr.git/commitdiff
pim6d: Adding "ipv6 pim" CLI
authorsarita patra <saritap@vmware.com>
Tue, 1 Mar 2022 02:12:22 +0000 (18:12 -0800)
committersarita patra <saritap@vmware.com>
Tue, 1 Mar 2022 14:24:14 +0000 (06:24 -0800)
This cli used to enable PIMV6 on interface.

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 06790d3d63ff4528a1ee977ad81f029c8a7a83c8..8718f0da4648a376f3558789ed4c034e9514ab6b 100644 (file)
@@ -210,6 +210,25 @@ DEFPY (no_ipv6_pim_register_suppress,
        return pim_process_no_register_suppress_cmd(vty);
 }
 
+DEFPY (interface_ipv6_pim,
+       interface_ipv6_pim_cmd,
+       "ipv6 pim",
+       IPV6_STR
+       PIM_STR)
+{
+       return pim_process_ip_pim_cmd(vty);
+}
+
+DEFPY (interface_no_ipv6_pim,
+       interface_no_ipv6_pim_cmd,
+       "no ipv6 pim",
+       NO_STR
+       IPV6_STR
+       PIM_STR)
+{
+       return pim_process_no_ip_pim_cmd(vty);
+}
+
 void pim_cmd_init(void)
 {
        if_cmd_init(pim_interface_config_write);
@@ -228,4 +247,6 @@ void pim_cmd_init(void)
        install_element(CONFIG_NODE, &no_ipv6_pim_rp_keep_alive_cmd);
        install_element(CONFIG_NODE, &ipv6_pim_register_suppress_cmd);
        install_element(CONFIG_NODE, &no_ipv6_pim_register_suppress_cmd);
+       install_element(INTERFACE_NODE, &interface_ipv6_pim_cmd);
+       install_element(INTERFACE_NODE, &interface_no_ipv6_pim_cmd);
 }
index 76f90cdba7d0e1567d6e6396569398fc1afe8050..21bb15b74bb3e752e75d479fa16515f986b79c22 100644 (file)
@@ -8129,12 +8129,7 @@ DEFUN (interface_ip_pim,
        IP_STR
        PIM_STR)
 {
-       nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true");
-
-       return nb_cli_apply_changes(vty,
-                       FRR_PIM_INTERFACE_XPATH,
-                       "frr-routing:ipv4");
-
+       return pim_process_ip_pim_cmd(vty);
 }
 
 DEFUN_HIDDEN (interface_no_ip_pim_ssm,
@@ -8232,41 +8227,7 @@ DEFUN (interface_no_ip_pim,
        IP_STR
        PIM_STR)
 {
-       const struct lyd_node *igmp_enable_dnode;
-       char igmp_if_xpath[XPATH_MAXLEN];
-
-       int printed =
-               snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
-                        "%s/frr-gmp:gmp/address-family[address-family='%s']",
-                        VTY_CURR_XPATH, "frr-routing:ipv4");
-
-       if (printed >= (int)(sizeof(igmp_if_xpath))) {
-               vty_out(vty, "Xpath too long (%d > %u)", printed + 1,
-                       XPATH_MAXLEN);
-               return CMD_WARNING_CONFIG_FAILED;
-       }
-
-       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, igmp_if_xpath, NB_OP_DESTROY, NULL);
-               nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
-       } else {
-               if (!yang_dnode_get_bool(igmp_enable_dnode, ".")) {
-                       nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY,
-                                             NULL);
-                       nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
-               } else
-                       nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
-                                             "false");
-       }
-
-       return nb_cli_apply_changes(vty,
-                                   FRR_PIM_INTERFACE_XPATH,
-                                   "frr-routing:ipv4");
+       pim_process_no_ip_pim_cmd(vty);
 }
 
 /* boundaries */
index 6adea54a611153591fc71b535f7ea7a4d7dacb31..b00085dcca647ef581c84105b174f1ebdc31796c 100644 (file)
@@ -326,3 +326,48 @@ int pim_process_no_register_suppress_cmd(struct vty *vty)
 
        return nb_cli_apply_changes(vty, NULL);
 }
+
+int pim_process_ip_pim_cmd(struct vty *vty)
+{
+       nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true");
+
+       return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH,
+                                   FRR_PIM_AF_XPATH_VAL);
+}
+
+int pim_process_no_ip_pim_cmd(struct vty *vty)
+{
+       const struct lyd_node *mld_enable_dnode;
+       char mld_if_xpath[XPATH_MAXLEN];
+
+       int printed =
+               snprintf(mld_if_xpath, sizeof(mld_if_xpath),
+                        "%s/frr-gmp:gmp/address-family[address-family='%s']",
+                        VTY_CURR_XPATH, FRR_PIM_AF_XPATH_VAL);
+
+       if (printed >= (int)(sizeof(mld_if_xpath))) {
+               vty_out(vty, "Xpath too long (%d > %u)", printed + 1,
+                       XPATH_MAXLEN);
+               return CMD_WARNING_CONFIG_FAILED;
+       }
+
+       mld_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
+                                          FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH,
+                                          FRR_PIM_AF_XPATH_VAL);
+
+       if (!mld_enable_dnode) {
+               nb_cli_enqueue_change(vty, mld_if_xpath, NB_OP_DESTROY, NULL);
+               nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
+       } else {
+               if (!yang_dnode_get_bool(mld_enable_dnode, ".")) {
+                       nb_cli_enqueue_change(vty, mld_if_xpath, NB_OP_DESTROY,
+                                             NULL);
+                       nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
+               } else
+                       nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
+                                             "false");
+       }
+
+       return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH,
+                                   FRR_PIM_AF_XPATH_VAL);
+}
index 49fc6bcbebbc0c87faf82056d7eacfa52b0d3183..16a026d60eec3e1c767410f00cbbb45275487ecd 100644 (file)
@@ -36,4 +36,7 @@ int pim_process_no_rp_kat_cmd(struct vty *vty);
 int pim_process_register_suppress_cmd(struct vty *vty, const char *rst);
 int pim_process_no_register_suppress_cmd(struct vty *vty);
 
+int pim_process_ip_pim_cmd(struct vty *vty);
+int pim_process_no_ip_pim_cmd(struct vty *vty);
+
 #endif /* PIM_CMD_COMMON_H */