forked from Mirror/frr
pimd, yang: add cli for igmp proxy
Signed-off-by: Barry A. Trent <barry.trent@atcorp.com>
This commit is contained in:
parent
f07579254a
commit
26b67993d0
|
@ -5756,6 +5756,18 @@ DEFUN (interface_no_ip_pim_hello,
|
||||||
return pim_process_no_ip_pim_hello_cmd(vty);
|
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,
|
DEFUN (debug_igmp,
|
||||||
debug_igmp_cmd,
|
debug_igmp_cmd,
|
||||||
"debug igmp",
|
"debug igmp",
|
||||||
|
@ -8718,6 +8730,7 @@ void pim_cmd_init(void)
|
||||||
&interface_ip_igmp_last_member_query_interval_cmd);
|
&interface_ip_igmp_last_member_query_interval_cmd);
|
||||||
install_element(INTERFACE_NODE,
|
install_element(INTERFACE_NODE,
|
||||||
&interface_no_ip_igmp_last_member_query_interval_cmd);
|
&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_activeactive_cmd);
|
||||||
install_element(INTERFACE_NODE, &interface_ip_pim_ssm_cmd);
|
install_element(INTERFACE_NODE, &interface_ip_pim_ssm_cmd);
|
||||||
install_element(INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd);
|
install_element(INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd);
|
||||||
|
|
|
@ -63,6 +63,7 @@ struct pim_interface {
|
||||||
bool pim_passive_enable : 1;
|
bool pim_passive_enable : 1;
|
||||||
|
|
||||||
bool gm_enable : 1;
|
bool gm_enable : 1;
|
||||||
|
bool gm_proxy : 1; /* proxy IGMP joins/prunes */
|
||||||
|
|
||||||
ifindex_t mroute_vif_index;
|
ifindex_t mroute_vif_index;
|
||||||
struct pim_instance *pim;
|
struct pim_instance *pim;
|
||||||
|
|
|
@ -553,7 +553,13 @@ const struct frr_yang_module_info frr_gmp_info = {
|
||||||
.destroy = lib_interface_gmp_address_family_join_group_destroy,
|
.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",
|
.xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/static-group",
|
||||||
.cbs = {
|
.cbs = {
|
||||||
.create = lib_interface_gmp_address_family_static_group_create,
|
.create = lib_interface_gmp_address_family_static_group_create,
|
||||||
|
|
|
@ -221,6 +221,7 @@ int lib_interface_gmp_address_family_join_group_create(
|
||||||
struct nb_cb_create_args *args);
|
struct nb_cb_create_args *args);
|
||||||
int lib_interface_gmp_address_family_join_group_destroy(
|
int lib_interface_gmp_address_family_join_group_destroy(
|
||||||
struct nb_cb_destroy_args *args);
|
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(
|
int lib_interface_gmp_address_family_static_group_create(
|
||||||
struct nb_cb_create_args *args);
|
struct nb_cb_create_args *args);
|
||||||
int lib_interface_gmp_address_family_static_group_destroy(
|
int lib_interface_gmp_address_family_static_group_destroy(
|
||||||
|
|
|
@ -3381,6 +3381,28 @@ int lib_interface_gmp_address_family_robustness_variable_modify(
|
||||||
return NB_OK;
|
return NB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
* XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/join-group
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -146,6 +146,13 @@ module frr-gmp {
|
||||||
"Querier's Robustness Variable allows tuning for the
|
"Querier's Robustness Variable allows tuning for the
|
||||||
expected packet loss on a network.";
|
expected packet loss on a network.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
leaf proxy {
|
||||||
|
type boolean;
|
||||||
|
default "false";
|
||||||
|
description
|
||||||
|
"Enable IGMP proxy on the interface.";
|
||||||
|
}
|
||||||
|
|
||||||
list join-group {
|
list join-group {
|
||||||
key "group-addr source-addr";
|
key "group-addr source-addr";
|
||||||
|
|
Loading…
Reference in a new issue