summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim6_cmd.c23
-rw-r--r--pimd/pim6_cmd.h1
-rw-r--r--pimd/pim_cmd.c42
3 files changed, 26 insertions, 40 deletions
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c
index dab151f8c4..a689e384b3 100644
--- a/pimd/pim6_cmd.c
+++ b/pimd/pim6_cmd.c
@@ -319,6 +319,27 @@ DEFPY_HIDDEN (interface_no_ipv6_pim_ssm,
return pim_process_no_ip_pim_cmd(vty);
}
+DEFPY_HIDDEN (interface_ipv6_pim_sm,
+ interface_ipv6_pim_sm_cmd,
+ "ipv6 pim sm",
+ IPV6_STR
+ PIM_STR
+ IFACE_PIM_SM_STR)
+{
+ return pim_process_ip_pim_cmd(vty);
+}
+
+DEFPY_HIDDEN (interface_no_ipv6_pim_sm,
+ interface_no_ipv6_pim_sm_cmd,
+ "no ipv6 pim sm",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ IFACE_PIM_SM_STR)
+{
+ return pim_process_no_ip_pim_cmd(vty);
+}
+
void pim_cmd_init(void)
{
if_cmd_init(pim_interface_config_write);
@@ -346,4 +367,6 @@ void pim_cmd_init(void)
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);
+ install_element(INTERFACE_NODE, &interface_ipv6_pim_sm_cmd);
+ install_element(INTERFACE_NODE, &interface_no_ipv6_pim_sm_cmd);
}
diff --git a/pimd/pim6_cmd.h b/pimd/pim6_cmd.h
index 15e8f17341..ac5eb3f9bf 100644
--- a/pimd/pim6_cmd.h
+++ b/pimd/pim6_cmd.h
@@ -34,6 +34,7 @@
"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_SM_STR "Enable PIM SM 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"
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index ab0f1d790b..fcbae5aa47 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -8092,11 +8092,7 @@ DEFUN_HIDDEN (interface_ip_pim_sm,
PIM_STR
IFACE_PIM_SM_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 (interface_ip_pim,
@@ -8127,41 +8123,7 @@ DEFUN_HIDDEN (interface_no_ip_pim_sm,
PIM_STR
IFACE_PIM_SM_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 (interface_no_ip_pim,