| 602 | } |
| 603 | |
| 604 | static void |
| 605 | mli_delete_locked(const struct ifnet *ifp) |
| 606 | { |
| 607 | struct mld_ifsoftc *mli, *tmli; |
| 608 | |
| 609 | CTR3(KTR_MLD, "%s: freeing mld_ifsoftc for ifp %p(%s)", |
| 610 | __func__, ifp, if_name(ifp)); |
| 611 | |
| 612 | MLD_LOCK_ASSERT(); |
| 613 | |
| 614 | LIST_FOREACH_SAFE(mli, &V_mli_head, mli_link, tmli) { |
| 615 | if (mli->mli_ifp == ifp) { |
| 616 | /* |
| 617 | * Free deferred General Query responses. |
| 618 | */ |
| 619 | mbufq_drain(&mli->mli_gq); |
| 620 | |
| 621 | LIST_REMOVE(mli, mli_link); |
| 622 | |
| 623 | free(mli, M_MLD); |
| 624 | return; |
| 625 | } |
| 626 | } |
| 627 | } |
| 628 | |
| 629 | /* |
| 630 | * Process a received MLDv1 general or address-specific query. |
no test coverage detected