Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet/in_mcast.c
Show First 20 Lines • Show All 2,550 Lines • ▼ Show 20 Lines | if (error) | ||||
imf_rollback(imf); | imf_rollback(imf); | ||||
else | else | ||||
imf_commit(imf); | imf_commit(imf); | ||||
imf_reap(imf); | imf_reap(imf); | ||||
if (is_final) { | if (is_final) { | ||||
/* Remove the gap in the membership and filter array. */ | /* 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) { | for (++idx; idx < imo->imo_num_memberships; ++idx) { | ||||
imo->imo_membership[idx-1] = imo->imo_membership[idx]; | imo->imo_membership[idx - 1] = imo->imo_membership[idx]; | ||||
imo->imo_mfilters[idx-1] = imo->imo_mfilters[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--; | imo->imo_num_memberships--; | ||||
} | } | ||||
out_inp_locked: | out_inp_locked: | ||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
return (error); | return (error); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 577 Lines • Show Last 20 Lines |