| 603 | } |
| 604 | |
| 605 | static void |
| 606 | in6m_release_task(void *arg __unused, int pending __unused) |
| 607 | { |
| 608 | struct in6_multi_head in6m_free_tmp; |
| 609 | struct in6_multi *inm, *tinm; |
| 610 | |
| 611 | SLIST_INIT(&in6m_free_tmp); |
| 612 | mtx_lock(&in6_multi_free_mtx); |
| 613 | SLIST_CONCAT(&in6m_free_tmp, &in6m_free_list, in6_multi, in6m_nrele); |
| 614 | mtx_unlock(&in6_multi_free_mtx); |
| 615 | IN6_MULTI_LOCK(); |
| 616 | SLIST_FOREACH_SAFE(inm, &in6m_free_tmp, in6m_nrele, tinm) { |
| 617 | SLIST_REMOVE_HEAD(&in6m_free_tmp, in6m_nrele); |
| 618 | in6m_release(inm); |
| 619 | } |
| 620 | IN6_MULTI_UNLOCK(); |
| 621 | } |
| 622 | |
| 623 | /* |
| 624 | * Clear recorded source entries for a group. |
nothing calls this directly
no test coverage detected