This cli used to enable PIMV6 on interface.
Signed-off-by: sarita patra <saritap@vmware.com>
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);
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);
}
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,
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 */
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);
+}
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 */