pim6d: Adding "ipv6 pim ssm" cli

This cli used to enable PIMV6 on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
This commit is contained in:
sarita patra 2022-02-28 18:25:29 -08:00
parent 7e01b641ae
commit dab0ac2955
3 changed files with 37 additions and 39 deletions

View 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);
}

View 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"

View 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 */