diff options
| author | Nathan Bahr <nbahr@atcorp.com> | 2024-06-26 12:41:45 -0500 |
|---|---|---|
| committer | Nathan Bahr <nbahr@atcorp.com> | 2024-08-15 16:20:00 +0000 |
| commit | 0cb1bf78736573f13d45e6b138a8c1ac42228b1f (patch) | |
| tree | b79a2e0bcbcdbb02d22052f03c300c06d8cd9d16 /pimd/pim_vty.c | |
| parent | aa9d66e922e2a232b2fd89b87d8cb7409ae82dc1 (diff) | |
pimd, yang: Implement igmp static-group command
This will add a static IGMP group that does not rely on an underlying
socket join which sends traffic to the cpu unneccesarily. Instead, the
groups are joined directly without any IGMP interactions.
New command is under interfaces, 'ip igmp static-group ...'.
Added an alias for 'ip igmp join ...' to 'ip igmp join-group'.
Moved IGMP join groups to new yang list "join-group" and reused
the "static-group" list for the IGMP static groups.
Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
Diffstat (limited to 'pimd/pim_vty.c')
| -rw-r--r-- | pimd/pim_vty.c | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c index 1910a68495..9cf4bb3e87 100644 --- a/pimd/pim_vty.c +++ b/pimd/pim_vty.c @@ -306,21 +306,38 @@ static int gm_config_write(struct vty *vty, int writes, ++writes; } - /* IF ip igmp join */ + /* IF ip igmp join-group */ if (pim_ifp->gm_join_list) { struct listnode *node; struct gm_join *ij; for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_join_list, node, ij)) { if (pim_addr_is_any(ij->source_addr)) - vty_out(vty, " ip igmp join %pPAs\n", + vty_out(vty, " ip igmp join-group %pPAs\n", &ij->group_addr); else - vty_out(vty, " ip igmp join %pPAs %pPAs\n", + vty_out(vty, " ip igmp join-group %pPAs %pPAs\n", &ij->group_addr, &ij->source_addr); ++writes; } } + /* IF ip igmp static-group */ + if (pim_ifp->static_group_list) { + struct listnode *node; + struct static_group *stgrp; + for (ALL_LIST_ELEMENTS_RO(pim_ifp->static_group_list, node, + stgrp)) { + if (pim_addr_is_any(stgrp->source_addr)) + vty_out(vty, " ip igmp static-group %pPAs\n", + &stgrp->group_addr); + else + vty_out(vty, + " ip igmp static-group %pPAs %pPAs\n", + &stgrp->group_addr, &stgrp->source_addr); + ++writes; + } + } + return writes; } #else @@ -358,21 +375,41 @@ static int gm_config_write(struct vty *vty, int writes, vty_out(vty, " ipv6 mld last-member-query-interval %d\n", pim_ifp->gm_specific_query_max_response_time_dsec); - /* IF ipv6 mld join */ + /* IF ipv6 mld join-group */ if (pim_ifp->gm_join_list) { struct listnode *node; struct gm_join *ij; + for (ALL_LIST_ELEMENTS_RO(pim_ifp->gm_join_list, node, ij)) { if (pim_addr_is_any(ij->source_addr)) - vty_out(vty, " ipv6 mld join %pPAs\n", + vty_out(vty, " ipv6 mld join-group %pPAs\n", &ij->group_addr); else - vty_out(vty, " ipv6 mld join %pPAs %pPAs\n", + vty_out(vty, + " ipv6 mld join-group %pPAs %pPAs\n", &ij->group_addr, &ij->source_addr); ++writes; } } + /* IF ipv6 mld static-group */ + if (pim_ifp->static_group_list) { + struct listnode *node; + struct static_group *stgrp; + + for (ALL_LIST_ELEMENTS_RO(pim_ifp->static_group_list, node, + stgrp)) { + if (pim_addr_is_any(stgrp->source_addr)) + vty_out(vty, " ipv6 mld static-group %pPAs\n", + &stgrp->group_addr); + else + vty_out(vty, + " ipv6 mld static-group %pPAs %pPAs\n", + &stgrp->group_addr, &stgrp->source_addr); + ++writes; + } + } + return writes; } #endif |
