]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pim6d: Adding "ipv6 pim ssm" cli
authorsarita patra <saritap@vmware.com>
Tue, 1 Mar 2022 02:25:29 +0000 (18:25 -0800)
committersarita patra <saritap@vmware.com>
Tue, 1 Mar 2022 15:23:44 +0000 (07:23 -0800)
This cli used to enable PIMV6 on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
pimd/pim6_cmd.c
pimd/pim6_cmd.h
pimd/pim_cmd.c

index a11a877bf497a5516fdd82b222d325e733da9219..dab151f8c4447068c95436c749b56f62eb0e18f7 100644 (file)
@@ -288,6 +288,37 @@ DEFPY (interface_ipv6_pim_activeactive,
        return pim_process_ip_pim_activeactive_cmd(vty, no);
 }
 
+DEFPY_HIDDEN (interface_ipv6_pim_ssm,
+              interface_ipv6_pim_ssm_cmd,
+              "ipv6 pim ssm",
+              IPV6_STR
+              PIM_STR
+              IFACE_PIM_STR)
+{
+       int ret;
+
+       ret = pim_process_ip_pim_cmd(vty);
+
+       if (ret != NB_OK)
+               return ret;
+
+       vty_out(vty,
+               "Enabled PIM SM on interface; configure PIM SSM range if needed\n");
+
+       return NB_OK;
+}
+
+DEFPY_HIDDEN (interface_no_ipv6_pim_ssm,
+              interface_no_ipv6_pim_ssm_cmd,
+              "no ipv6 pim ssm",
+              NO_STR
+              IPV6_STR
+              PIM_STR
+              IFACE_PIM_STR)
+{
+       return pim_process_no_ip_pim_cmd(vty);
+}
+
 void pim_cmd_init(void)
 {
        if_cmd_init(pim_interface_config_write);
@@ -313,4 +344,6 @@ void pim_cmd_init(void)
        install_element(INTERFACE_NODE, &interface_ipv6_pim_hello_cmd);
        install_element(INTERFACE_NODE, &interface_no_ipv6_pim_hello_cmd);
        install_element(INTERFACE_NODE, &interface_ipv6_pim_activeactive_cmd);
+       install_element(INTERFACE_NODE, &interface_ipv6_pim_ssm_cmd);
+       install_element(INTERFACE_NODE, &interface_no_ipv6_pim_ssm_cmd);
 }
index 68b185c25b504c24571f36435635177c48a55a6c..15e8f17341e115d85e0b0d13516f86695c654cfc 100644 (file)
@@ -33,6 +33,7 @@
 #define IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR \
        "MLD last member query interval\n"
 #define IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR "MLD last member query count\n"
+#define IFACE_PIM_STR "Enable PIM SSM operation\n"
 #define IFACE_PIM_HELLO_STR "Hello Interval\n"
 #define IFACE_PIM_HELLO_TIME_STR "Time in seconds for Hello Interval\n"
 #define IFACE_PIM_HELLO_HOLD_STR "Time in seconds for Hold Interval\n"
index 2ea36ed9e96545d61fbbc62c43b5a9641214001d..ab0f1d790baf17d0ac821b8e20652a8c0f50998a 100644 (file)
@@ -8074,11 +8074,7 @@ DEFUN_HIDDEN (interface_ip_pim_ssm,
 {
        int ret;
 
-       nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, "true");
-
-       ret = nb_cli_apply_changes(vty,
-                       FRR_PIM_INTERFACE_XPATH,
-                       "frr-routing:ipv4");
+       ret = pim_process_ip_pim_cmd(vty);
 
        if (ret != NB_OK)
                return ret;
@@ -8120,39 +8116,7 @@ DEFUN_HIDDEN (interface_no_ip_pim_ssm,
              PIM_STR
              IFACE_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");
+       return pim_process_no_ip_pim_cmd(vty);
 }
 
 DEFUN_HIDDEN (interface_no_ip_pim_sm,
@@ -8207,7 +8171,7 @@ DEFUN (interface_no_ip_pim,
        IP_STR
        PIM_STR)
 {
-       pim_process_no_ip_pim_cmd(vty);
+       return pim_process_no_ip_pim_cmd(vty);
 }
 
 /* boundaries */