* Purge all source nodes from an in6_multi's filter set. */
| 1162 | * Purge all source nodes from an in6_multi's filter set. |
| 1163 | */ |
| 1164 | static void |
| 1165 | in6m_purge(struct in6_multi *inm) |
| 1166 | { |
| 1167 | struct ip6_msource *ims, *tims; |
| 1168 | |
| 1169 | RB_FOREACH_SAFE(ims, ip6_msource_tree, &inm->in6m_srcs, tims) { |
| 1170 | CTR2(KTR_MLD, "%s: free ims %p", __func__, ims); |
| 1171 | RB_REMOVE(ip6_msource_tree, &inm->in6m_srcs, ims); |
| 1172 | free(ims, M_IP6MSOURCE); |
| 1173 | inm->in6m_nsrc--; |
| 1174 | } |
| 1175 | /* Free state-change requests that might be queued. */ |
| 1176 | mbufq_drain(&inm->in6m_scq); |
| 1177 | } |
| 1178 | |
| 1179 | /* |
| 1180 | * Join a multicast address w/o sources. |
no test coverage detected