summaryrefslogtreecommitdiffstats
path: root/pimd/pim_igmpv3.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_igmpv3.c')
-rw-r--r--pimd/pim_igmpv3.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index 2c5ad4d44..d0ba79378 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -507,6 +507,8 @@ static void allow(struct gm_sock *igmp, struct in_addr from,
struct in_addr *src_addr;
src_addr = sources + i;
+ if (pim_is_group_filtered(igmp->interface->info, &group_addr, src_addr))
+ continue;
source = igmp_get_source_by_addr(group, *src_addr, NULL);
if (!source)
@@ -646,7 +648,7 @@ void igmpv3_report_isex(struct gm_sock *igmp, struct in_addr from,
on_trace(__func__, ifp, from, group_addr, num_sources, sources);
- if (pim_is_group_filtered(ifp->info, &group_addr))
+ if (pim_is_group_filtered(ifp->info, &group_addr, NULL))
return;
/* non-existent group is created as INCLUDE {empty} */
@@ -1809,12 +1811,13 @@ static bool igmp_pkt_grp_addr_ok(struct interface *ifp, const char *from_str,
pim_ifp = ifp->info;
/* determine filtering status for group */
- if (pim_is_group_filtered(pim_ifp, &grp)) {
+ if (pim_is_group_filtered(pim_ifp, &grp, NULL)) {
if (PIM_DEBUG_GM_PACKETS) {
- zlog_debug(
- "Filtering IGMPv3 group record %pI4 from %s on %s per prefix-list %s",
- &grp.s_addr, from_str, ifp->name,
- pim_ifp->boundary_oil_plist);
+ zlog_debug("Filtering IGMPv3 group record %pI4 from %s on %s per prefix-list %s or access-list %s",
+ &grp.s_addr, from_str, ifp->name,
+ (pim_ifp->boundary_oil_plist ? pim_ifp->boundary_oil_plist
+ : "(not found)"),
+ (pim_ifp->boundary_acl ? pim_ifp->boundary_acl->name : "(not found)"));
}
return false;
}
@@ -1943,11 +1946,9 @@ int igmp_v3_recv_report(struct gm_sock *igmp, struct in_addr from,
sizeof(struct in_addr));
if (PIM_DEBUG_GM_PACKETS) {
- zlog_debug(
- " Recv IGMP report v3 from %s on %s: record=%d type=%d auxdatalen=%d sources=%d group=%pI4",
- from_str, ifp->name, i, rec_type,
- rec_auxdatalen, rec_num_sources,
- &rec_group);
+ zlog_debug(" Recv IGMP report v3 (type %d) from %s on %s: record=%d type=%d auxdatalen=%d sources=%d group=%pI4",
+ rec_type, from_str, ifp->name, i, rec_type, rec_auxdatalen,
+ rec_num_sources, &rec_group);
}
/* Scan sources */