summaryrefslogtreecommitdiff
path: root/pimd/pim6_cmd.c
diff options
context:
space:
mode:
authorNathan Bahr <nbahr@atcorp.com>2024-06-12 16:26:48 +0000
committerNathan Bahr <nbahr@atcorp.com>2024-07-16 13:30:35 -0500
commitfd8edc3dfbd41ff1ba8c21ea258276f3dab71e4b (patch)
tree91746c6137c6568ae71295d1347901038dab875d /pimd/pim6_cmd.c
parent66de92184fe52dd8dbe237e6c34b5457bf465fd3 (diff)
pimd, lib, vtysh: Added new 'router pim[6] [vrf NAME]' config node
Moved all existing global/vrf PIM config to the new subnode. Existing configuration updated to be hidden and deprecated. Both versions of configuration still work together. Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
Diffstat (limited to 'pimd/pim6_cmd.c')
-rw-r--r--pimd/pim6_cmd.c1127
1 files changed, 1001 insertions, 126 deletions
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c
index ec912700d1..99f1474712 100644
--- a/pimd/pim6_cmd.c
+++ b/pimd/pim6_cmd.c
@@ -41,45 +41,207 @@ static struct cmd_node debug_node = {
.config_write = pim_debug_config_write,
};
-DEFPY (ipv6_pim_joinprune_time,
- ipv6_pim_joinprune_time_cmd,
- "ipv6 pim join-prune-interval (1-65535)$jpi",
- IPV6_STR
- PIM_STR
+DEFPY_NOSH (router_pim6,
+ router_pim6_cmd,
+ "router pim6 [vrf NAME]",
+ "Enable a routing process\n"
+ "Start PIM6 configuration\n"
+ VRF_CMD_HELP_STR)
+{
+ char xpath[XPATH_MAXLEN];
+ const char *vrf_name;
+
+ if (vrf)
+ vrf_name = vrf;
+ else
+ vrf_name = VRF_DEFAULT_NAME;
+
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim",
+ vrf_name, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) != CMD_SUCCESS)
+ return CMD_WARNING_CONFIG_FAILED;
+
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY (no_router_pim6,
+ no_router_pim6_cmd,
+ "no router pim6 [vrf NAME]",
+ NO_STR
+ "Enable a routing process\n"
+ "Start PIM6 configuration\n"
+ VRF_CMD_HELP_STR)
+{
+ char xpath[XPATH_MAXLEN];
+ const char *vrf_name;
+
+ if (vrf)
+ vrf_name = vrf;
+ else
+ vrf_name = VRF_DEFAULT_NAME;
+
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH, "frr-pim:pimd", "pim",
+ vrf_name, FRR_PIM_AF_XPATH_VAL);
+
+ nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
+
+ return nb_cli_apply_changes(vty, NULL);
+}
+
+DEFPY (pim6_joinprune_time,
+ pim6_joinprune_time_cmd,
+ "join-prune-interval (1-65535)$jpi",
"Join Prune Send Interval\n"
"Seconds\n")
{
return pim_process_join_prune_cmd(vty, jpi_str);
}
+DEFPY_ATTR(ipv6_joinprune_time,
+ ipv6_pim_joinprune_time_cmd,
+ "ipv6 pim join-prune-interval (1-65535)$jpi",
+ IPV6_STR PIM_STR
+ "Join Prune Send Interval\n"
+ "Seconds\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_join_prune_cmd(vty, jpi_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_joinprune_time,
- no_ipv6_pim_joinprune_time_cmd,
- "no ipv6 pim join-prune-interval [(1-65535)]",
+DEFPY (no_pim6_joinprune_time,
+ no_pim6_joinprune_time_cmd,
+ "no join-prune-interval [(1-65535)]",
NO_STR
- IPV6_STR
- PIM_STR
"Join Prune Send Interval\n"
IGNORED_IN_NO_STR)
{
return pim_process_no_join_prune_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_joinprune_time,
+ no_ipv6_pim_joinprune_time_cmd,
+ "no ipv6 pim join-prune-interval [(1-65535)]",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "Join Prune Send Interval\n"
+ IGNORED_IN_NO_STR,
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_no_join_prune_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (ipv6_pim_spt_switchover_infinity,
- ipv6_pim_spt_switchover_infinity_cmd,
- "ipv6 pim spt-switchover infinity-and-beyond",
- IPV6_STR
- PIM_STR
+DEFPY (pim6_spt_switchover_infinity,
+ pim6_spt_switchover_infinity_cmd,
+ "spt-switchover infinity-and-beyond",
"SPT-Switchover\n"
"Never switch to SPT Tree\n")
{
return pim_process_spt_switchover_infinity_cmd(vty);
}
+DEFPY_ATTR(ipv6_spt_switchover_infinity,
+ ipv6_pim_spt_switchover_infinity_cmd,
+ "ipv6 pim spt-switchover infinity-and-beyond",
+ IPV6_STR
+ PIM_STR
+ "SPT-Switchover\n"
+ "Never switch to SPT Tree\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_spt_switchover_infinity_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (ipv6_pim_spt_switchover_infinity_plist,
- ipv6_pim_spt_switchover_infinity_plist_cmd,
- "ipv6 pim spt-switchover infinity-and-beyond prefix-list PREFIXLIST6_NAME$plist",
- IPV6_STR
- PIM_STR
+DEFPY (pim6_spt_switchover_infinity_plist,
+ pim6_spt_switchover_infinity_plist_cmd,
+ "spt-switchover infinity-and-beyond prefix-list PREFIXLIST6_NAME$plist",
"SPT-Switchover\n"
"Never switch to SPT Tree\n"
"Prefix-List to control which groups to switch\n"
@@ -87,25 +249,104 @@ DEFPY (ipv6_pim_spt_switchover_infinity_plist,
{
return pim_process_spt_switchover_prefixlist_cmd(vty, plist);
}
+DEFPY_ATTR(ipv6_spt_switchover_infinity_plist,
+ ipv6_pim_spt_switchover_infinity_plist_cmd,
+ "ipv6 pim spt-switchover infinity-and-beyond prefix-list PREFIXLIST6_NAME$plist",
+ IPV6_STR
+ PIM_STR
+ "SPT-Switchover\n"
+ "Never switch to SPT Tree\n"
+ "Prefix-List to control which groups to switch\n"
+ "Prefix-List name\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_spt_switchover_prefixlist_cmd(vty, plist);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_spt_switchover_infinity,
- no_ipv6_pim_spt_switchover_infinity_cmd,
- "no ipv6 pim spt-switchover infinity-and-beyond",
+DEFPY (no_pim6_spt_switchover_infinity,
+ no_pim6_spt_switchover_infinity_cmd,
+ "no spt-switchover infinity-and-beyond",
NO_STR
- IPV6_STR
- PIM_STR
"SPT_Switchover\n"
"Never switch to SPT Tree\n")
{
return pim_process_no_spt_switchover_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_spt_switchover_infinity,
+ no_ipv6_pim_spt_switchover_infinity_cmd,
+ "no ipv6 pim spt-switchover infinity-and-beyond",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "SPT_Switchover\n"
+ "Never switch to SPT Tree\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_no_spt_switchover_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_spt_switchover_infinity_plist,
- no_ipv6_pim_spt_switchover_infinity_plist_cmd,
- "no ipv6 pim spt-switchover infinity-and-beyond prefix-list PREFIXLIST6_NAME",
+DEFPY (no_pim6_spt_switchover_infinity_plist,
+ no_pim6_spt_switchover_infinity_plist_cmd,
+ "no spt-switchover infinity-and-beyond prefix-list PREFIXLIST6_NAME",
NO_STR
- IPV6_STR
- PIM_STR
"SPT_Switchover\n"
"Never switch to SPT Tree\n"
"Prefix-List to control which groups to switch\n"
@@ -113,100 +354,453 @@ DEFPY (no_ipv6_pim_spt_switchover_infinity_plist,
{
return pim_process_no_spt_switchover_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_spt_switchover_infinity_plist,
+ no_ipv6_pim_spt_switchover_infinity_plist_cmd,
+ "no ipv6 pim spt-switchover infinity-and-beyond prefix-list PREFIXLIST6_NAME",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "SPT_Switchover\n"
+ "Never switch to SPT Tree\n"
+ "Prefix-List to control which groups to switch\n"
+ "Prefix-List name\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_no_spt_switchover_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (ipv6_pim_packets,
- ipv6_pim_packets_cmd,
- "ipv6 pim packets (1-255)",
- IPV6_STR
- PIM_STR
+DEFPY (pim6_packets,
+ pim6_packets_cmd,
+ "packets (1-255)",
"packets to process at one time per fd\n"
"Number of packets\n")
{
return pim_process_pim_packet_cmd(vty, packets_str);
}
+DEFPY_ATTR(ipv6_pim_packets,
+ ipv6_pim_packets_cmd,
+ "ipv6 pim packets (1-255)",
+ IPV6_STR
+ PIM_STR
+ "packets to process at one time per fd\n"
+ "Number of packets\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_pim_packet_cmd(vty, packets_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_packets,
- no_ipv6_pim_packets_cmd,
- "no ipv6 pim packets [(1-255)]",
+DEFPY (no_pim6_packets,
+ no_pim6_packets_cmd,
+ "no packets [(1-255)]",
NO_STR
- IPV6_STR
- PIM_STR
"packets to process at one time per fd\n"
IGNORED_IN_NO_STR)
{
return pim_process_no_pim_packet_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_packets,
+ no_ipv6_pim_packets_cmd,
+ "no ipv6 pim packets [(1-255)]",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "packets to process at one time per fd\n"
+ IGNORED_IN_NO_STR,
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
-DEFPY (ipv6_pim_keep_alive,
- ipv6_pim_keep_alive_cmd,
- "ipv6 pim keep-alive-timer (1-65535)$kat",
- IPV6_STR
- PIM_STR
+ ret = pim_process_no_pim_packet_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
+
+DEFPY (pim6_keep_alive,
+ pim6_keep_alive_cmd,
+ "keep-alive-timer (1-65535)$kat",
"Keep alive Timer\n"
"Seconds\n")
{
return pim_process_keepalivetimer_cmd(vty, kat_str);
}
+DEFPY_ATTR(ipv6_pim_keep_alive,
+ ipv6_pim_keep_alive_cmd,
+ "ipv6 pim keep-alive-timer (1-65535)$kat",
+ IPV6_STR
+ PIM_STR
+ "Keep alive Timer\n"
+ "Seconds\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_keepalivetimer_cmd(vty, kat_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_keep_alive,
- no_ipv6_pim_keep_alive_cmd,
- "no ipv6 pim keep-alive-timer [(1-65535)]",
+DEFPY (no_pim6_keep_alive,
+ no_pim6_keep_alive_cmd,
+ "no keep-alive-timer [(1-65535)]",
NO_STR
- IPV6_STR
- PIM_STR
"Keep alive Timer\n"
IGNORED_IN_NO_STR)
{
return pim_process_no_keepalivetimer_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_keep_alive,
+ no_ipv6_pim_keep_alive_cmd,
+ "no ipv6 pim keep-alive-timer [(1-65535)]",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "Keep alive Timer\n"
+ IGNORED_IN_NO_STR,
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_no_keepalivetimer_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (ipv6_pim_rp_keep_alive,
- ipv6_pim_rp_keep_alive_cmd,
- "ipv6 pim rp keep-alive-timer (1-65535)$kat",
- IPV6_STR
- PIM_STR
+DEFPY (pim6_rp_keep_alive,
+ pim6_rp_keep_alive_cmd,
+ "rp keep-alive-timer (1-65535)$kat",
"Rendezvous Point\n"
"Keep alive Timer\n"
"Seconds\n")
{
return pim_process_rp_kat_cmd(vty, kat_str);
}
+DEFPY_ATTR(ipv6_pim_rp_keep_alive,
+ ipv6_pim_rp_keep_alive_cmd,
+ "ipv6 pim rp keep-alive-timer (1-65535)$kat",
+ IPV6_STR
+ PIM_STR
+ "Rendezvous Point\n"
+ "Keep alive Timer\n"
+ "Seconds\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_rp_kat_cmd(vty, kat_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_rp_keep_alive,
- no_ipv6_pim_rp_keep_alive_cmd,
- "no ipv6 pim rp keep-alive-timer [(1-65535)]",
+DEFPY (no_pim6_rp_keep_alive,
+ no_pim6_rp_keep_alive_cmd,
+ "no rp keep-alive-timer [(1-65535)]",
NO_STR
- IPV6_STR
- PIM_STR
"Rendezvous Point\n"
"Keep alive Timer\n"
IGNORED_IN_NO_STR)
{
return pim_process_no_rp_kat_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_rp_keep_alive,
+ no_ipv6_pim_rp_keep_alive_cmd,
+ "no ipv6 pim rp keep-alive-timer [(1-65535)]",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "Rendezvous Point\n"
+ "Keep alive Timer\n"
+ IGNORED_IN_NO_STR,
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
-DEFPY (ipv6_pim_register_suppress,
- ipv6_pim_register_suppress_cmd,
- "ipv6 pim register-suppress-time (1-65535)$rst",
- IPV6_STR
- PIM_STR
+ ret = pim_process_no_rp_kat_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
+
+DEFPY (pim6_register_suppress,
+ pim6_register_suppress_cmd,
+ "register-suppress-time (1-65535)$rst",
"Register Suppress Timer\n"
"Seconds\n")
{
return pim_process_register_suppress_cmd(vty, rst_str);
}
+DEFPY_ATTR(ipv6_pim_register_suppress,
+ ipv6_pim_register_suppress_cmd,
+ "ipv6 pim register-suppress-time (1-65535)$rst",
+ IPV6_STR
+ PIM_STR
+ "Register Suppress Timer\n"
+ "Seconds\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_register_suppress_cmd(vty, rst_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_register_suppress,
- no_ipv6_pim_register_suppress_cmd,
- "no ipv6 pim register-suppress-time [(1-65535)]",
+DEFPY (no_pim6_register_suppress,
+ no_pim6_register_suppress_cmd,
+ "no register-suppress-time [(1-65535)]",
NO_STR
- IPV6_STR
- PIM_STR
"Register Suppress Timer\n"
IGNORED_IN_NO_STR)
{
return pim_process_no_register_suppress_cmd(vty);
}
+DEFPY_ATTR(no_ipv6_pim_register_suppress,
+ no_ipv6_pim_register_suppress_cmd,
+ "no ipv6 pim register-suppress-time [(1-65535)]",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "Register Suppress Timer\n"
+ IGNORED_IN_NO_STR,
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_no_register_suppress_cmd(vty);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
DEFPY (interface_ipv6_pim,
interface_ipv6_pim_cmd,
@@ -405,11 +999,9 @@ DEFPY (interface_no_ipv6_mroute,
source_str);
}
-DEFPY (ipv6_pim_rp,
- ipv6_pim_rp_cmd,
- "ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
- IPV6_STR
- PIM_STR
+DEFPY (pim6_rp,
+ pim6_rp_cmd,
+ "rp X:X::X:X$rp [X:X::X:X/M]$gp",
"Rendezvous Point\n"
"ipv6 address of RP\n"
"Group Address range to cover\n")
@@ -418,13 +1010,53 @@ DEFPY (ipv6_pim_rp,
return pim_process_rp_cmd(vty, rp_str, group_str);
}
+DEFPY_ATTR(ipv6_pim_rp,
+ ipv6_pim_rp_cmd,
+ "ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
+ IPV6_STR
+ PIM_STR
+ "Rendezvous Point\n"
+ "ipv6 address of RP\n"
+ "Group Address range to cover\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *group_str = (gp_str) ? gp_str : "FF00::0/8";
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_rp_cmd(vty, rp_str, group_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_rp,
- no_ipv6_pim_rp_cmd,
- "no ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
+DEFPY (no_pim6_rp,
+ no_pim6_rp_cmd,
+ "no rp X:X::X:X$rp [X:X::X:X/M]$gp",
NO_STR
- IPV6_STR
- PIM_STR
"Rendezvous Point\n"
"ipv6 address of RP\n"
"Group Address range to cover\n")
@@ -433,12 +1065,53 @@ DEFPY (no_ipv6_pim_rp,
return pim_process_no_rp_cmd(vty, rp_str, group_str);
}
+DEFPY_ATTR(no_ipv6_pim_rp,
+ no_ipv6_pim_rp_cmd,
+ "no ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "Rendezvous Point\n"
+ "ipv6 address of RP\n"
+ "Group Address range to cover\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *group_str = (gp_str) ? gp_str : "FF00::0/8";
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
-DEFPY (ipv6_pim_rp_prefix_list,
- ipv6_pim_rp_prefix_list_cmd,
- "ipv6 pim rp X:X::X:X$rp prefix-list PREFIXLIST6_NAME$plist",
- IPV6_STR
- PIM_STR
+ ret = pim_process_no_rp_cmd(vty, rp_str, group_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
+
+DEFPY (pim6_rp_prefix_list,
+ pim6_rp_prefix_list_cmd,
+ "rp X:X::X:X$rp prefix-list PREFIXLIST6_NAME$plist",
"Rendezvous Point\n"
"ipv6 address of RP\n"
"group prefix-list filter\n"
@@ -446,13 +1119,53 @@ DEFPY (ipv6_pim_rp_prefix_list,
{
return pim_process_rp_plist_cmd(vty, rp_str, plist);
}
+DEFPY_ATTR(ipv6_pim_rp_prefix_list,
+ ipv6_pim_rp_prefix_list_cmd,
+ "ipv6 pim rp X:X::X:X$rp prefix-list PREFIXLIST6_NAME$plist",
+ IPV6_STR
+ PIM_STR
+ "Rendezvous Point\n"
+ "ipv6 address of RP\n"
+ "group prefix-list filter\n"
+ "Name of a prefix-list\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_rp_plist_cmd(vty, rp_str, plist);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
-DEFPY (no_ipv6_pim_rp_prefix_list,
- no_ipv6_pim_rp_prefix_list_cmd,
- "no ipv6 pim rp X:X::X:X$rp prefix-list PREFIXLIST6_NAME$plist",
+DEFPY (no_pim6_rp_prefix_list,
+ no_pim6_rp_prefix_list_cmd,
+ "no rp X:X::X:X$rp prefix-list PREFIXLIST6_NAME$plist",
NO_STR
- IPV6_STR
- PIM_STR
"Rendezvous Point\n"
"ipv6 address of RP\n"
"group prefix-list filter\n"
@@ -460,6 +1173,49 @@ DEFPY (no_ipv6_pim_rp_prefix_list,
{
return pim_process_no_rp_plist_cmd(vty, rp_str, plist);
}
+DEFPY_ATTR(no_ipv6_pim_rp_prefix_list,
+ no_ipv6_pim_rp_prefix_list_cmd,
+ "no ipv6 pim rp X:X::X:X$rp prefix-list PREFIXLIST6_NAME$plist",
+ NO_STR
+ IPV6_STR
+ PIM_STR
+ "Rendezvous Point\n"
+ "ipv6 address of RP\n"
+ "group prefix-list filter\n"
+ "Name of a prefix-list\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_no_rp_plist_cmd(vty, rp_str, plist);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
DEFPY (ipv6_pim_bsm,
ipv6_pim_bsm_cmd,
@@ -503,10 +1259,9 @@ DEFPY (no_ipv6_pim_ucast_bsm,
return pim_process_no_unicast_bsm_cmd(vty);
}
-DEFPY (ipv6_ssmpingd,
- ipv6_ssmpingd_cmd,
- "ipv6 ssmpingd [X:X::X:X]$source",
- IPV6_STR
+DEFPY (pim6_ssmpingd,
+ pim6_ssmpingd_cmd,
+ "ssmpingd [X:X::X:X]$source",
CONF_SSMPINGD_STR
"Source address\n")
{
@@ -514,20 +1269,99 @@ DEFPY (ipv6_ssmpingd,
return pim_process_ssmpingd_cmd(vty, NB_OP_CREATE, src_str);
}
+DEFPY_ATTR(ipv6_ssmpingd,
+ ipv6_ssmpingd_cmd,
+ "ipv6 ssmpingd [X:X::X:X]$source",
+ IPV6_STR
+ CONF_SSMPINGD_STR
+ "Source address\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *src_str = (source_str) ? source_str : "::";
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ ret = pim_process_ssmpingd_cmd(vty, NB_OP_CREATE, src_str);
-DEFPY (no_ipv6_ssmpingd,
- no_ipv6_ssmpingd_cmd,
- "no ipv6 ssmpingd [X:X::X:X]$source",
- NO_STR
- IPV6_STR
- CONF_SSMPINGD_STR
- "Source address\n")
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
+
+DEFPY (no_pim6_ssmpingd,
+ no_pim6_ssmpingd_cmd,
+ "no ssmpingd [X:X::X:X]$source",
+ NO_STR
+ CONF_SSMPINGD_STR
+ "Source address\n")
{
const char *src_str = (source_str) ? source_str : "::";
return pim_process_ssmpingd_cmd(vty, NB_OP_DESTROY, src_str);
}
+DEFPY_ATTR(no_ipv6_ssmpingd,
+ no_ipv6_ssmpingd_cmd,
+ "no ipv6 ssmpingd [X:X::X:X]$source",
+ NO_STR
+ IPV6_STR
+ CONF_SSMPINGD_STR
+ "Source address\n",
+ CMD_ATTR_HIDDEN | CMD_ATTR_DEPRECATED)
+{
+ int ret;
+ const char *src_str = (source_str) ? source_str : "::";
+ const char *vrfname;
+ char xpath[XPATH_MAXLEN];
+ int orig_node = -1;
+
+ vrfname = pim_cli_get_vrf_name(vty);
+ if (vrfname) {
+ snprintf(xpath, sizeof(xpath), FRR_PIM_VRF_XPATH,
+ "frr-pim:pimd", "pim", vrfname, FRR_PIM_AF_XPATH_VAL);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+ if (nb_cli_apply_changes_clear_pending(vty, NULL) ==
+ CMD_SUCCESS) {
+ orig_node = vty->node;
+ VTY_PUSH_XPATH(PIM6_NODE, xpath);
+ } else {
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ } else {
+ vty_out(vty, "%% Failed to determine vrf name\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ ret = pim_process_ssmpingd_cmd(vty, NB_OP_DESTROY, src_str);
+
+ if (orig_node != -1) {
+ vty->node = orig_node;
+ vty->xpath_index--;
+ }
+
+ return ret;
+}
DEFPY (interface_ipv6_mld_join,
interface_ipv6_mld_join_cmd,
@@ -1733,12 +2567,16 @@ DEFPY (debug_pimv6_bsm,
return CMD_SUCCESS;
}
-void pim_cmd_init(void)
-{
- if_cmd_init(pim_interface_config_write);
-
- install_node(&debug_node);
+struct cmd_node pim6_node = {
+ .name = "pim6",
+ .node = PIM6_NODE,
+ .parent_node = CONFIG_NODE,
+ .prompt = "%s(config-pim6)# ",
+ .config_write = pim_router_config_write,
+};
+static void pim_install_deprecated(void)
+{
install_element(CONFIG_NODE, &ipv6_pim_joinprune_time_cmd);
install_element(CONFIG_NODE, &no_ipv6_pim_joinprune_time_cmd);
install_element(CONFIG_NODE, &ipv6_pim_spt_switchover_infinity_cmd);
@@ -1753,6 +2591,60 @@ 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(CONFIG_NODE, &ipv6_pim_rp_cmd);
+ install_element(VRF_NODE, &ipv6_pim_rp_cmd);
+ install_element(CONFIG_NODE, &no_ipv6_pim_rp_cmd);
+ install_element(VRF_NODE, &no_ipv6_pim_rp_cmd);
+ install_element(CONFIG_NODE, &ipv6_pim_rp_prefix_list_cmd);
+ install_element(VRF_NODE, &ipv6_pim_rp_prefix_list_cmd);
+ install_element(CONFIG_NODE, &no_ipv6_pim_rp_prefix_list_cmd);
+ install_element(VRF_NODE, &no_ipv6_pim_rp_prefix_list_cmd);
+ install_element(CONFIG_NODE, &ipv6_ssmpingd_cmd);
+ install_element(VRF_NODE, &ipv6_ssmpingd_cmd);
+ install_element(CONFIG_NODE, &no_ipv6_ssmpingd_cmd);
+ install_element(VRF_NODE, &no_ipv6_ssmpingd_cmd);
+}
+
+void pim_cmd_init(void)
+{
+ if_cmd_init(pim_interface_config_write);
+
+ install_node(&debug_node);
+
+ pim_install_deprecated();
+
+ install_element(CONFIG_NODE, &router_pim6_cmd);
+ install_element(CONFIG_NODE, &no_router_pim6_cmd);
+
+ install_node(&pim6_node);
+ install_default(PIM6_NODE);
+
+ install_element(PIM6_NODE, &pim6_joinprune_time_cmd);
+ install_element(PIM6_NODE, &no_pim6_joinprune_time_cmd);
+ install_element(PIM6_NODE, &pim6_spt_switchover_infinity_cmd);
+ install_element(PIM6_NODE, &pim6_spt_switchover_infinity_plist_cmd);
+ install_element(PIM6_NODE, &no_pim6_spt_switchover_infinity_cmd);
+ install_element(PIM6_NODE, &no_pim6_spt_switchover_infinity_plist_cmd);
+ install_element(PIM6_NODE, &pim6_packets_cmd);
+ install_element(PIM6_NODE, &no_pim6_packets_cmd);
+ install_element(PIM6_NODE, &pim6_keep_alive_cmd);
+ install_element(PIM6_NODE, &no_pim6_keep_alive_cmd);
+ install_element(PIM6_NODE, &pim6_rp_keep_alive_cmd);
+ install_element(PIM6_NODE, &no_pim6_rp_keep_alive_cmd);
+ install_element(PIM6_NODE, &pim6_register_suppress_cmd);
+ install_element(PIM6_NODE, &no_pim6_register_suppress_cmd);
+ install_element(PIM6_NODE, &pim6_rp_cmd);
+ install_element(PIM6_NODE, &no_pim6_rp_cmd);
+ install_element(PIM6_NODE, &pim6_rp_prefix_list_cmd);
+ install_element(PIM6_NODE, &no_pim6_rp_prefix_list_cmd);
+ install_element(PIM6_NODE, &pim6_ssmpingd_cmd);
+ install_element(PIM6_NODE, &no_pim6_ssmpingd_cmd);
+
+ install_element(CONFIG_NODE, &ipv6_mld_group_watermark_cmd);
+ install_element(VRF_NODE, &ipv6_mld_group_watermark_cmd);
+ install_element(CONFIG_NODE, &no_ipv6_mld_group_watermark_cmd);
+ install_element(VRF_NODE, &no_ipv6_mld_group_watermark_cmd);
+
install_element(INTERFACE_NODE, &interface_ipv6_pim_cmd);
install_element(INTERFACE_NODE, &interface_no_ipv6_pim_cmd);
install_element(INTERFACE_NODE, &interface_ipv6_pim_drprio_cmd);
@@ -1764,10 +2656,8 @@ void pim_cmd_init(void)
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);
- install_element(INTERFACE_NODE,
- &interface_ipv6_pim_boundary_oil_cmd);
- install_element(INTERFACE_NODE,
- &interface_no_ipv6_pim_boundary_oil_cmd);
+ install_element(INTERFACE_NODE, &interface_ipv6_pim_boundary_oil_cmd);
+ install_element(INTERFACE_NODE, &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 */
@@ -1775,18 +2665,7 @@ void pim_cmd_init(void)
install_element(INTERFACE_NODE, &no_ipv6_pim_bsm_cmd);
install_element(INTERFACE_NODE, &ipv6_pim_ucast_bsm_cmd);
install_element(INTERFACE_NODE, &no_ipv6_pim_ucast_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);
- install_element(VRF_NODE, &no_ipv6_pim_rp_cmd);
- install_element(CONFIG_NODE, &ipv6_pim_rp_prefix_list_cmd);
- install_element(VRF_NODE, &ipv6_pim_rp_prefix_list_cmd);
- install_element(CONFIG_NODE, &no_ipv6_pim_rp_prefix_list_cmd);
- install_element(VRF_NODE, &no_ipv6_pim_rp_prefix_list_cmd);
- install_element(CONFIG_NODE, &ipv6_ssmpingd_cmd);
- install_element(VRF_NODE, &ipv6_ssmpingd_cmd);
- install_element(CONFIG_NODE, &no_ipv6_ssmpingd_cmd);
- install_element(VRF_NODE, &no_ipv6_ssmpingd_cmd);
+
install_element(INTERFACE_NODE, &interface_ipv6_mld_cmd);
install_element(INTERFACE_NODE, &interface_no_ipv6_mld_cmd);
install_element(INTERFACE_NODE, &interface_ipv6_mld_join_cmd);
@@ -1796,10 +2675,6 @@ void pim_cmd_init(void)
install_element(INTERFACE_NODE, &interface_ipv6_mld_query_interval_cmd);
install_element(INTERFACE_NODE,
&interface_no_ipv6_mld_query_interval_cmd);
- install_element(CONFIG_NODE, &ipv6_mld_group_watermark_cmd);
- install_element(VRF_NODE, &ipv6_mld_group_watermark_cmd);
- install_element(CONFIG_NODE, &no_ipv6_mld_group_watermark_cmd);
- install_element(VRF_NODE, &no_ipv6_mld_group_watermark_cmd);
install_element(INTERFACE_NODE,
&interface_ipv6_mld_query_max_response_time_cmd);
install_element(INTERFACE_NODE,