summaryrefslogtreecommitdiff
path: root/pimd/pim6_cmd.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2021-09-28 14:40:23 +0200
committerRafael Zalamena <rzalamena@opensourcerouting.org>2025-02-13 12:45:47 -0300
commitdf9517c95a09e2860cd9c049ee8fe2a5b1a7a48f (patch)
tree9ae429789a1e1e6551a10ac584558ec2602ff1ea /pimd/pim6_cmd.c
parentf70530c8e8ada9fcc7fd6a83e7a1e211b11b2131 (diff)
pimd: add IGMPv2/MLDv1 immediate-leave
(Somewhat) useful when dealing with an interface that has only one host attached. Only works for IGMPv2 and MLDv1, other protocol versions have no leave message. Co-authored-by: David Lamparter <equinox@opensourcerouting.org> Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'pimd/pim6_cmd.c')
-rw-r--r--pimd/pim6_cmd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c
index 40bd7caf7d..50357ca1d0 100644
--- a/pimd/pim6_cmd.c
+++ b/pimd/pim6_cmd.c
@@ -1649,6 +1649,19 @@ ALIAS_YANG(interface_ipv6_mld_limits,
"Limit number of MLDv2 sources to track\n"
"Limit number of MLD group memberships to track\n")
+DEFPY_YANG(interface_ipv6_mld_immediate_leave,
+ interface_ipv6_mld_immediate_leave_cmd,
+ "[no] ipv6 mld immediate-leave",
+ NO_STR
+ IPV6_STR
+ IFACE_MLD_STR
+ "Immediately drop group memberships on receiving Leave (MLDv1 only)\n")
+{
+ nb_cli_enqueue_change(vty, "./immediate-leave", NB_OP_MODIFY, no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, FRR_PIM_AF_XPATH_VAL);
+}
+
DEFPY (interface_ipv6_mld_query_interval,
interface_ipv6_mld_query_interval_cmd,
"ipv6 mld query-interval (1-65535)$q_interval",
@@ -2944,6 +2957,7 @@ void pim_cmd_init(void)
install_element(INTERFACE_NODE, &interface_ipv6_mld_static_group_cmd);
install_element(INTERFACE_NODE, &interface_ipv6_mld_version_cmd);
install_element(INTERFACE_NODE, &interface_no_ipv6_mld_version_cmd);
+ install_element(INTERFACE_NODE, &interface_ipv6_mld_immediate_leave_cmd);
install_element(INTERFACE_NODE, &interface_ipv6_mld_query_interval_cmd);
install_element(INTERFACE_NODE,
&interface_no_ipv6_mld_query_interval_cmd);