Lines Matching refs:mli
143 struct mld_ifsoftc *mli, int, struct mbuf *,
367 struct mld_ifsoftc *mli; in sysctl_mld_ifinfo() local
392 LIST_FOREACH(mli, &V_mli_head, mli_link) { in sysctl_mld_ifinfo()
393 if (ifp == mli->mli_ifp) { in sysctl_mld_ifinfo()
396 info.mli_version = mli->mli_version; in sysctl_mld_ifinfo()
397 info.mli_v1_timer = mli->mli_v1_timer; in sysctl_mld_ifinfo()
398 info.mli_v2_timer = mli->mli_v2_timer; in sysctl_mld_ifinfo()
399 info.mli_flags = mli->mli_flags; in sysctl_mld_ifinfo()
400 info.mli_rv = mli->mli_rv; in sysctl_mld_ifinfo()
401 info.mli_qi = mli->mli_qi; in sysctl_mld_ifinfo()
402 info.mli_qri = mli->mli_qri; in sysctl_mld_ifinfo()
403 info.mli_uri = mli->mli_uri; in sysctl_mld_ifinfo()
472 struct mld_ifsoftc *mli; in mld_domifattach() local
476 mli = malloc(sizeof(struct mld_ifsoftc), M_MLD, M_WAITOK | M_ZERO); in mld_domifattach()
477 mli->mli_ifp = ifp; in mld_domifattach()
478 mli->mli_version = MLD_VERSION_2; in mld_domifattach()
479 mli->mli_flags = 0; in mld_domifattach()
480 mli->mli_rv = MLD_RV_INIT; in mld_domifattach()
481 mli->mli_qi = MLD_QI_INIT; in mld_domifattach()
482 mli->mli_qri = MLD_QRI_INIT; in mld_domifattach()
483 mli->mli_uri = MLD_URI_INIT; in mld_domifattach()
484 mbufq_init(&mli->mli_gq, MLD_MAX_RESPONSE_PACKETS); in mld_domifattach()
486 mli->mli_flags |= MLIF_SILENT; in mld_domifattach()
488 mli->mli_flags |= MLIF_USEALLOW; in mld_domifattach()
491 LIST_INSERT_HEAD(&V_mli_head, mli, mli_link); in mld_domifattach()
494 return (mli); in mld_domifattach()
512 struct mld_ifsoftc *mli; in mld_ifdetach() local
522 mli = MLD_IFINFO(ifp); in mld_ifdetach()
535 if (mli->mli_version == MLD_VERSION_2) { in mld_ifdetach()
574 struct mld_ifsoftc *mli, *tmli; in mli_delete_locked() local
581 LIST_FOREACH_SAFE(mli, &V_mli_head, mli_link, tmli) { in mli_delete_locked()
582 if (mli->mli_ifp == ifp) { in mli_delete_locked()
586 mbufq_drain(&mli->mli_gq); in mli_delete_locked()
588 LIST_REMOVE(mli, mli_link); in mli_delete_locked()
590 free(mli, M_MLD); in mli_delete_locked()
608 struct mld_ifsoftc *mli; in mld_v1_input_query() local
668 mli = MLD_IFINFO(ifp); in mld_v1_input_query()
669 KASSERT(mli != NULL, ("%s: no mld_ifsoftc for ifp %p", __func__, ifp)); in mld_v1_input_query()
670 mld_set_version(mli, MLD_VERSION_1); in mld_v1_input_query()
784 struct mld_ifsoftc *mli; in mld_v2_input_query() local
871 mli = MLD_IFINFO(ifp); in mld_v2_input_query()
872 KASSERT(mli != NULL, ("%s: no mld_ifsoftc for ifp %p", __func__, ifp)); in mld_v2_input_query()
879 if (mli->mli_version != MLD_VERSION_2) in mld_v2_input_query()
882 mld_set_version(mli, MLD_VERSION_2); in mld_v2_input_query()
883 mli->mli_rv = qrv; in mld_v2_input_query()
884 mli->mli_qi = qqi; in mld_v2_input_query()
885 mli->mli_qri = maxdelay; in mld_v2_input_query()
904 if (mli->mli_v2_timer == 0 || mli->mli_v2_timer >= timer) { in mld_v2_input_query()
905 mli->mli_v2_timer = MLD_RANDOM_DELAY(timer); in mld_v2_input_query()
937 if (mli->mli_v2_timer == 0 || mli->mli_v2_timer >= timer) in mld_v2_input_query()
938 mld_v2_process_group_query(inm, mli, timer, m, mld, off); in mld_v2_input_query()
957 mld_v2_process_group_query(struct in6_multi *inm, struct mld_ifsoftc *mli, in mld_v2_process_group_query() argument
1160 struct mld_ifsoftc *mli; in mld_v1_input_report() local
1162 mli = inm->in6m_mli; in mld_v1_input_report()
1163 KASSERT(mli != NULL, in mld_v1_input_report()
1170 if (mli->mli_version == MLD_VERSION_2) in mld_v1_input_report()
1331 struct mld_ifsoftc *mli; in mld_fasttimo_vnet() local
1358 LIST_FOREACH(mli, &V_mli_head, mli_link) { in mld_fasttimo_vnet()
1359 if (mli->mli_v2_timer == 0) { in mld_fasttimo_vnet()
1361 } else if (--mli->mli_v2_timer == 0) { in mld_fasttimo_vnet()
1362 mld_v2_dispatch_general_query(mli); in mld_fasttimo_vnet()
1382 LIST_FOREACH(mli, &V_mli_head, mli_link) { in mld_fasttimo_vnet()
1383 ifp = mli->mli_ifp; in mld_fasttimo_vnet()
1385 if (mli->mli_version == MLD_VERSION_2) { in mld_fasttimo_vnet()
1386 uri_fasthz = MLD_RANDOM_DELAY(mli->mli_uri * in mld_fasttimo_vnet()
1397 switch (mli->mli_version) { in mld_fasttimo_vnet()
1409 switch (mli->mli_version) { in mld_fasttimo_vnet()
1606 mld_set_version(struct mld_ifsoftc *mli, const int version) in mld_set_version() argument
1613 version, mli->mli_ifp, if_name(mli->mli_ifp)); in mld_set_version()
1620 old_version_timer = (mli->mli_rv * mli->mli_qi) + mli->mli_qri; in mld_set_version()
1622 mli->mli_v1_timer = old_version_timer; in mld_set_version()
1625 if (mli->mli_v1_timer > 0 && mli->mli_version != MLD_VERSION_1) { in mld_set_version()
1626 mli->mli_version = MLD_VERSION_1; in mld_set_version()
1627 mld_v2_cancel_link_timers(mli); in mld_set_version()
1636 mld_v2_cancel_link_timers(struct mld_ifsoftc *mli) in mld_v2_cancel_link_timers() argument
1645 mli->mli_ifp, if_name(mli->mli_ifp)); in mld_v2_cancel_link_timers()
1660 mli->mli_v2_timer = 0; in mld_v2_cancel_link_timers()
1662 ifp = mli->mli_ifp; in mld_v2_cancel_link_timers()
1735 struct mld_ifsoftc *mli; in mld_slowtimo_vnet() local
1739 LIST_FOREACH(mli, &V_mli_head, mli_link) { in mld_slowtimo_vnet()
1740 mld_v1_process_querier_timers(mli); in mld_slowtimo_vnet()
1751 mld_v1_process_querier_timers(struct mld_ifsoftc *mli) in mld_v1_process_querier_timers() argument
1756 if (mli->mli_version != MLD_VERSION_2 && --mli->mli_v1_timer == 0) { in mld_v1_process_querier_timers()
1762 __func__, mli->mli_version, MLD_VERSION_2, in mld_v1_process_querier_timers()
1763 mli->mli_ifp, if_name(mli->mli_ifp)); in mld_v1_process_querier_timers()
1764 mli->mli_version = MLD_VERSION_2; in mld_v1_process_querier_timers()
1871 struct mld_ifsoftc *mli; in mld_change_state() local
1902 mli = MLD_IFINFO(ifp); in mld_change_state()
1903 KASSERT(mli != NULL, ("%s: no mld_ifsoftc for ifp %p", __func__, ifp)); in mld_change_state()
1915 error = mld_initial_join(inm, mli, delay); in mld_change_state()
1919 mld_final_leave(inm, mli); in mld_change_state()
1926 error = mld_handle_state_change(inm, mli); in mld_change_state()
1946 mld_initial_join(struct in6_multi *inm, struct mld_ifsoftc *mli, in mld_initial_join() argument
1970 KASSERT(mli && mli->mli_ifp == ifp, ("%s: inconsistent ifp", __func__)); in mld_initial_join()
1982 (mli->mli_flags & MLIF_SILENT) || in mld_initial_join()
1995 if (mli->mli_version == MLD_VERSION_2 && in mld_initial_join()
2002 switch (mli->mli_version) { in mld_initial_join()
2044 0, 0, (mli->mli_flags & MLIF_USEALLOW)); in mld_initial_join()
2061 KASSERT(mli->mli_rv > 1, in mld_initial_join()
2063 mli->mli_rv)); in mld_initial_join()
2064 inm->in6m_scrv = mli->mli_rv; in mld_initial_join()
2099 mld_handle_state_change(struct in6_multi *inm, struct mld_ifsoftc *mli) in mld_handle_state_change() argument
2116 KASSERT(mli && mli->mli_ifp == ifp, in mld_handle_state_change()
2120 (mli->mli_flags & MLIF_SILENT) || in mld_handle_state_change()
2122 (mli->mli_version != MLD_VERSION_2)) { in mld_handle_state_change()
2138 (mli->mli_flags & MLIF_USEALLOW)); in mld_handle_state_change()
2147 inm->in6m_scrv = mli->mli_rv; in mld_handle_state_change()
2163 mld_final_leave(struct in6_multi *inm, struct mld_ifsoftc *mli) in mld_final_leave() argument
2189 if (mli->mli_version == MLD_VERSION_1) { in mld_final_leave()
2201 } else if (mli->mli_version == MLD_VERSION_2) { in mld_final_leave()
2210 inm->in6m_scrv = mli->mli_rv; in mld_final_leave()
2225 (mli->mli_flags & MLIF_USEALLOW)); in mld_final_leave()
2979 mld_v2_dispatch_general_query(struct mld_ifsoftc *mli) in mld_v2_dispatch_general_query() argument
2990 KASSERT(mli->mli_version == MLD_VERSION_2, in mld_v2_dispatch_general_query()
2991 ("%s: called when version %d", __func__, mli->mli_version)); in mld_v2_dispatch_general_query()
2999 if (!mbufq_empty(&mli->mli_gq)) in mld_v2_dispatch_general_query()
3002 ifp = mli->mli_ifp; in mld_v2_dispatch_general_query()
3021 retval = mld_v2_enqueue_group_record(&mli->mli_gq, in mld_v2_dispatch_general_query()
3034 mld_dispatch_queue(&mli->mli_gq, MLD_MAX_RESPONSE_BURST); in mld_v2_dispatch_general_query()
3039 if (mbufq_first(&mli->mli_gq) != NULL) { in mld_v2_dispatch_general_query()
3040 mli->mli_v2_timer = 1 + MLD_RANDOM_DELAY( in mld_v2_dispatch_general_query()