diff options
author | Barry A. Trent <barry.trent@atcorp.com> | 2024-08-09 00:03:06 +0200 |
---|---|---|
committer | Barry A. Trent <barry.trent@atcorp.com> | 2024-09-20 22:44:27 +0200 |
commit | 26b67993d0de7e64d3409858bc0f165b9f8d4c1c (patch) | |
tree | d5370cb4eac9f5851fe3e33a50ecbeee99157f1d /pimd | |
parent | Merge pull request #16857 from donaldsharp/logger_warning (diff) | |
download | frr-26b67993d0de7e64d3409858bc0f165b9f8d4c1c.tar.xz frr-26b67993d0de7e64d3409858bc0f165b9f8d4c1c.zip |
pimd, yang: add cli for igmp proxy
Signed-off-by: Barry A. Trent <barry.trent@atcorp.com>
Diffstat (limited to 'pimd')
-rw-r--r-- | pimd/pim_cmd.c | 13 | ||||
-rw-r--r-- | pimd/pim_iface.h | 1 | ||||
-rw-r--r-- | pimd/pim_nb.c | 8 | ||||
-rw-r--r-- | pimd/pim_nb.h | 1 | ||||
-rw-r--r-- | pimd/pim_nb_config.c | 22 |
5 files changed, 44 insertions, 1 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index d71b17448..d1427830c 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -5756,6 +5756,18 @@ DEFUN (interface_no_ip_pim_hello, return pim_process_no_ip_pim_hello_cmd(vty); } +DEFPY (interface_ip_igmp_proxy, + interface_ip_igmp_proxy_cmd, + "[no] ip igmp proxy", + NO_STR + IP_STR + IGMP_STR + "Proxy IGMP join/prune operations\n") +{ + return CMD_SUCCESS; +} + + DEFUN (debug_igmp, debug_igmp_cmd, "debug igmp", @@ -8718,6 +8730,7 @@ void pim_cmd_init(void) &interface_ip_igmp_last_member_query_interval_cmd); 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_pim_activeactive_cmd); install_element(INTERFACE_NODE, &interface_ip_pim_ssm_cmd); install_element(INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd); diff --git a/pimd/pim_iface.h b/pimd/pim_iface.h index 4d2037966..77e3f5191 100644 --- a/pimd/pim_iface.h +++ b/pimd/pim_iface.h @@ -63,6 +63,7 @@ struct pim_interface { bool pim_passive_enable : 1; bool gm_enable : 1; + bool gm_proxy : 1; /* proxy IGMP joins/prunes */ ifindex_t mroute_vif_index; struct pim_instance *pim; diff --git a/pimd/pim_nb.c b/pimd/pim_nb.c index 0e8aa48f9..3c36512a3 100644 --- a/pimd/pim_nb.c +++ b/pimd/pim_nb.c @@ -553,7 +553,13 @@ const struct frr_yang_module_info frr_gmp_info = { .destroy = lib_interface_gmp_address_family_join_group_destroy, } }, - { + { + .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/proxy", + .cbs = { + .modify = lib_interface_gmp_address_family_proxy_modify, + } + }, +{ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/static-group", .cbs = { .create = lib_interface_gmp_address_family_static_group_create, diff --git a/pimd/pim_nb.h b/pimd/pim_nb.h index 55883ad29..dfab58296 100644 --- a/pimd/pim_nb.h +++ b/pimd/pim_nb.h @@ -221,6 +221,7 @@ int lib_interface_gmp_address_family_join_group_create( struct nb_cb_create_args *args); int lib_interface_gmp_address_family_join_group_destroy( struct nb_cb_destroy_args *args); +int lib_interface_gmp_address_family_proxy_modify(struct nb_cb_modify_args *args); int lib_interface_gmp_address_family_static_group_create( struct nb_cb_create_args *args); int lib_interface_gmp_address_family_static_group_destroy( diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c index 0c7481c27..781bd5a9a 100644 --- a/pimd/pim_nb_config.c +++ b/pimd/pim_nb_config.c @@ -3382,6 +3382,28 @@ int lib_interface_gmp_address_family_robustness_variable_modify( } /* + * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/proxy + */ +int lib_interface_gmp_address_family_proxy_modify(struct nb_cb_modify_args *args) +{ + struct interface *ifp; + struct pim_interface *pim_ifp; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + break; + case NB_EV_APPLY: + ifp = nb_running_get_entry(args->dnode, NULL, true); + pim_ifp = ifp->info; + if (pim_ifp) + pim_ifp->gm_proxy = yang_dnode_get_bool(args->dnode, + NULL); + } + return NB_OK; +} +/* * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/join-group */ int lib_interface_gmp_address_family_join_group_create( |