summaryrefslogtreecommitdiff
path: root/pimd/pim_vty.c
diff options
context:
space:
mode:
authorNathan Bahr <nbahr@atcorp.com>2024-06-26 12:41:45 -0500
committerNathan Bahr <nbahr@atcorp.com>2024-08-15 16:20:00 +0000
commit0cb1bf78736573f13d45e6b138a8c1ac42228b1f (patch)
treeb79a2e0bcbcdbb02d22052f03c300c06d8cd9d16 /pimd/pim_vty.c
parentaa9d66e922e2a232b2fd89b87d8cb7409ae82dc1 (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.c49
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