Page MenuHomeFreeBSD

D19872.diff
No OneTemporary

D19872.diff

Index: head/sys/netinet/in_mcast.c
===================================================================
--- head/sys/netinet/in_mcast.c
+++ head/sys/netinet/in_mcast.c
@@ -2556,10 +2556,14 @@
if (is_final) {
/* Remove the gap in the membership and filter array. */
+ KASSERT(RB_EMPTY(&imf->imf_sources),
+ ("%s: imf_sources not empty", __func__));
for (++idx; idx < imo->imo_num_memberships; ++idx) {
- imo->imo_membership[idx-1] = imo->imo_membership[idx];
- imo->imo_mfilters[idx-1] = imo->imo_mfilters[idx];
+ imo->imo_membership[idx - 1] = imo->imo_membership[idx];
+ imo->imo_mfilters[idx - 1] = imo->imo_mfilters[idx];
}
+ imf_init(&imo->imo_mfilters[idx - 1], MCAST_UNDEFINED,
+ MCAST_EXCLUDE);
imo->imo_num_memberships--;
}
Index: head/sys/netinet6/in6_mcast.c
===================================================================
--- head/sys/netinet6/in6_mcast.c
+++ head/sys/netinet6/in6_mcast.c
@@ -2470,10 +2470,14 @@
if (is_final) {
/* Remove the gap in the membership array. */
+ KASSERT(RB_EMPTY(&imf->im6f_sources),
+ ("%s: im6f_sources not empty", __func__));
for (++idx; idx < imo->im6o_num_memberships; ++idx) {
- imo->im6o_membership[idx-1] = imo->im6o_membership[idx];
- imo->im6o_mfilters[idx-1] = imo->im6o_mfilters[idx];
+ imo->im6o_membership[idx - 1] = imo->im6o_membership[idx];
+ imo->im6o_mfilters[idx - 1] = imo->im6o_mfilters[idx];
}
+ im6f_init(&imo->im6o_mfilters[idx - 1], MCAST_UNDEFINED,
+ MCAST_EXCLUDE);
imo->im6o_num_memberships--;
}

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 21, 10:20 AM (1 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27111500
Default Alt Text
D19872.diff (1 KB)

Event Timeline