diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2021-08-24 18:21:59 +0200 |
|---|---|---|
| committer | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2025-02-10 15:40:07 -0300 |
| commit | f07d379b74e06f0602f3779e78038dc708aa7345 (patch) | |
| tree | 80b01573958993e1bda24b32184a3dcb085f303d /pimd/pim_cmd.c | |
| parent | baf4c1a78fe4cafdbb2cdbed030a31ea04a18c4a (diff) | |
pimd: implement IGMP group/source count limit
For groups we can just look at the length of the list, for sources we
need to count them on a per-interface level.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_cmd.c')
| -rw-r--r-- | pimd/pim_cmd.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index a1ad261869..fa9c6f9537 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -5656,6 +5656,43 @@ DEFUN (interface_no_ip_igmp_last_member_query_interval, return gm_process_no_last_member_query_interval_cmd(vty); } +DEFPY_YANG(interface_ip_igmp_limits, + interface_ip_igmp_limits_cmd, + "[no] ip igmp <max-sources$do_src (0-4294967295)$val" + "|max-groups$do_grp (0-4294967295)$val>", + NO_STR + IP_STR + IFACE_IGMP_STR + "Limit number of IGMPv3 sources to track\n" + "Permitted number of sources\n" + "Limit number of IGMP group memberships to track\n" + "Permitted number of groups\n") +{ + const char *xpath; + + assert(do_src || do_grp); + if (do_src) + xpath = "./max-sources"; + else + xpath = "./max-groups"; + + if (no) + nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL); + else + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, val_str); + + return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH, FRR_PIM_AF_XPATH_VAL); +} + +ALIAS_YANG(interface_ip_igmp_limits, + no_interface_ip_igmp_limits_cmd, + "no ip igmp <max-sources$do_src|max-groups$do_grp>", + NO_STR + IP_STR + IFACE_IGMP_STR + "Limit number of IGMPv3 sources to track\n" + "Limit number of IGMP group memberships to track\n") + DEFUN (interface_ip_pim_drprio, interface_ip_pim_drprio_cmd, "ip pim drpriority (0-4294967295)", @@ -9101,6 +9138,8 @@ void pim_cmd_init(void) install_element(INTERFACE_NODE, &interface_no_ip_igmp_last_member_query_interval_cmd); install_element(INTERFACE_NODE, &interface_ip_igmp_proxy_cmd); + install_element(INTERFACE_NODE, &interface_ip_igmp_limits_cmd); + install_element(INTERFACE_NODE, &no_interface_ip_igmp_limits_cmd); install_element(INTERFACE_NODE, &interface_ip_pim_activeactive_cmd); install_element(INTERFACE_NODE, &interface_ip_pim_ssm_cmd); install_element(INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd); |
