* Purge all source nodes from an in_multi's filter set. */
| 1192 | * Purge all source nodes from an in_multi's filter set. |
| 1193 | */ |
| 1194 | static void |
| 1195 | inm_purge(struct in_multi *inm) |
| 1196 | { |
| 1197 | struct ip_msource *ims, *tims; |
| 1198 | |
| 1199 | RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { |
| 1200 | CTR2(KTR_IGMPV3, "%s: free ims %p", __func__, ims); |
| 1201 | RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); |
| 1202 | free(ims, M_IPMSOURCE); |
| 1203 | inm->inm_nsrc--; |
| 1204 | } |
| 1205 | } |
| 1206 | |
| 1207 | /* |
| 1208 | * Join a multicast group; unlocked entry point. |