Lines Matching refs:ipst
125 igmp_start_timers(unsigned next, ip_stack_t *ipst) in igmp_start_timers() argument
133 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
135 if (ipst->ips_igmp_timer_setter_active) { in igmp_start_timers()
143 ipst->ips_igmp_time_to_next = in igmp_start_timers()
144 MIN(ipst->ips_igmp_time_to_next, next); in igmp_start_timers()
145 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
148 ipst->ips_igmp_timer_setter_active = B_TRUE; in igmp_start_timers()
150 if (ipst->ips_igmp_timeout_id == 0) { in igmp_start_timers()
155 ipst->ips_igmp_time_to_next = next; in igmp_start_timers()
156 if (ipst->ips_igmp_timer_quiesce != B_TRUE) { in igmp_start_timers()
157 ipst->ips_igmp_timeout_id = in igmp_start_timers()
158 timeout(igmp_timeout_handler, (void *)ipst, in igmp_start_timers()
159 MSEC_TO_TICK(ipst->ips_igmp_time_to_next)); in igmp_start_timers()
160 ipst->ips_igmp_timer_scheduled_last = ddi_get_lbolt(); in igmp_start_timers()
162 ipst->ips_igmp_timer_setter_active = B_FALSE; in igmp_start_timers()
163 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
173 time_left = ipst->ips_igmp_timer_scheduled_last + in igmp_start_timers()
174 MSEC_TO_TICK(ipst->ips_igmp_time_to_next) - ddi_get_lbolt(); in igmp_start_timers()
176 ipst->ips_igmp_timer_setter_active = B_FALSE; in igmp_start_timers()
177 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
180 id = ipst->ips_igmp_timeout_id; in igmp_start_timers()
182 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
184 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
195 ASSERT(ipst->ips_igmp_timeout_id == 0); in igmp_start_timers()
197 ASSERT(ipst->ips_igmp_timeout_id != 0); in igmp_start_timers()
198 ipst->ips_igmp_timeout_id = 0; in igmp_start_timers()
200 if (ipst->ips_igmp_time_to_next != 0 && in igmp_start_timers()
201 ipst->ips_igmp_timer_quiesce != B_TRUE) { in igmp_start_timers()
202 ipst->ips_igmp_time_to_next = in igmp_start_timers()
203 MIN(ipst->ips_igmp_time_to_next, next); in igmp_start_timers()
204 ipst->ips_igmp_timeout_id = timeout(igmp_timeout_handler, in igmp_start_timers()
205 (void *)ipst, MSEC_TO_TICK(ipst->ips_igmp_time_to_next)); in igmp_start_timers()
206 ipst->ips_igmp_timer_scheduled_last = ddi_get_lbolt(); in igmp_start_timers()
208 ipst->ips_igmp_timer_setter_active = B_FALSE; in igmp_start_timers()
209 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_start_timers()
217 mld_start_timers(unsigned next, ip_stack_t *ipst) in mld_start_timers() argument
225 mutex_enter(&ipst->ips_mld_timer_lock); in mld_start_timers()
226 if (ipst->ips_mld_timer_setter_active) { in mld_start_timers()
234 ipst->ips_mld_time_to_next = in mld_start_timers()
235 MIN(ipst->ips_mld_time_to_next, next); in mld_start_timers()
236 mutex_exit(&ipst->ips_mld_timer_lock); in mld_start_timers()
239 ipst->ips_mld_timer_setter_active = B_TRUE; in mld_start_timers()
241 if (ipst->ips_mld_timeout_id == 0) { in mld_start_timers()
246 ipst->ips_mld_time_to_next = next; in mld_start_timers()
247 if (ipst->ips_mld_timer_quiesce != B_TRUE) { in mld_start_timers()
248 ipst->ips_mld_timeout_id = timeout(mld_timeout_handler, in mld_start_timers()
249 (void *)ipst, in mld_start_timers()
250 MSEC_TO_TICK(ipst->ips_mld_time_to_next)); in mld_start_timers()
251 ipst->ips_mld_timer_scheduled_last = ddi_get_lbolt(); in mld_start_timers()
253 ipst->ips_mld_timer_setter_active = B_FALSE; in mld_start_timers()
254 mutex_exit(&ipst->ips_mld_timer_lock); in mld_start_timers()
264 time_left = ipst->ips_mld_timer_scheduled_last + in mld_start_timers()
265 MSEC_TO_TICK(ipst->ips_mld_time_to_next) - ddi_get_lbolt(); in mld_start_timers()
267 ipst->ips_mld_timer_setter_active = B_FALSE; in mld_start_timers()
268 mutex_exit(&ipst->ips_mld_timer_lock); in mld_start_timers()
271 id = ipst->ips_mld_timeout_id; in mld_start_timers()
273 mutex_exit(&ipst->ips_mld_timer_lock); in mld_start_timers()
275 mutex_enter(&ipst->ips_mld_timer_lock); in mld_start_timers()
286 ASSERT(ipst->ips_mld_timeout_id == 0); in mld_start_timers()
288 ASSERT(ipst->ips_mld_timeout_id != 0); in mld_start_timers()
289 ipst->ips_mld_timeout_id = 0; in mld_start_timers()
291 if (ipst->ips_mld_time_to_next != 0 && in mld_start_timers()
292 ipst->ips_mld_timer_quiesce == B_FALSE) { in mld_start_timers()
293 ipst->ips_mld_time_to_next = in mld_start_timers()
294 MIN(ipst->ips_mld_time_to_next, next); in mld_start_timers()
295 ipst->ips_mld_timeout_id = timeout(mld_timeout_handler, in mld_start_timers()
296 (void *)ipst, MSEC_TO_TICK(ipst->ips_mld_time_to_next)); in mld_start_timers()
297 ipst->ips_mld_timer_scheduled_last = ddi_get_lbolt(); in mld_start_timers()
299 ipst->ips_mld_timer_setter_active = B_FALSE; in mld_start_timers()
300 mutex_exit(&ipst->ips_mld_timer_lock); in mld_start_timers()
323 ip_stack_t *ipst = ill->ill_ipst; in igmp_input() local
326 ++ipst->ips_igmpstat.igps_rcv_total; in igmp_input()
331 ++ipst->ips_igmpstat.igps_rcv_tooshort; in igmp_input()
342 ++ipst->ips_igmpstat.igps_rcv_tooshort; in igmp_input()
354 ++ipst->ips_igmpstat.igps_rcv_tooshort; in igmp_input()
374 (ipst->ips_igmp_max_version <= IGMP_V2_ROUTER)) { in igmp_input()
380 ++ipst->ips_igmpstat.igps_rcv_tooshort; in igmp_input()
387 igmp_start_timers(next, ipst); in igmp_input()
417 ++ipst->ips_igmpstat.igps_rcv_reports; in igmp_input()
420 ++ipst->ips_igmpstat.igps_rcv_badreports; in igmp_input()
458 ++ipst->ips_igmpstat.igps_rcv_ourreports; in igmp_input()
491 ip_stack_t *ipst; in igmp_query_in() local
493 ipst = ill->ill_ipst; in igmp_query_in()
494 ++ipst->ips_igmpstat.igps_rcv_queries; in igmp_query_in()
510 (ipst->ips_igmp_max_version == IGMP_V1_ROUTER)) { in igmp_query_in()
529 ++ipst->ips_igmpstat.igps_rcv_badqueries; in igmp_query_in()
544 ++ipst->ips_igmpstat.igps_rcv_badqueries; in igmp_query_in()
630 ip_stack_t *ipst; in igmpv3_query_in() local
632 ipst = ill->ill_ipst; in igmpv3_query_in()
636 ++ipst->ips_igmpstat.igps_rcv_tooshort; in igmpv3_query_in()
641 ++ipst->ips_igmpstat.igps_rcv_queries; in igmpv3_query_in()
773 ip_stack_t *ipst = ilm->ilm_ipst; in igmp_joingroup() local
832 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_joingroup()
833 ipst->ips_igmp_deferred_next = MIN(timer, in igmp_joingroup()
834 ipst->ips_igmp_deferred_next); in igmp_joingroup()
835 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_joingroup()
855 ip_stack_t *ipst = ilm->ilm_ipst; in mld_joingroup() local
914 mutex_enter(&ipst->ips_mld_timer_lock); in mld_joingroup()
915 ipst->ips_mld_deferred_next = MIN(timer, in mld_joingroup()
916 ipst->ips_mld_deferred_next); in mld_joingroup()
917 mutex_exit(&ipst->ips_mld_timer_lock); in mld_joingroup()
1022 ip_stack_t *ipst = ilm->ilm_ipst; in igmp_statechange() local
1094 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_statechange()
1095 ipst->ips_igmp_deferred_next = MIN(ipst->ips_igmp_deferred_next, in igmp_statechange()
1098 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_statechange()
1113 ip_stack_t *ipst = ilm->ilm_ipst; in mld_statechange() local
1185 mutex_enter(&ipst->ips_mld_timer_lock); in mld_statechange()
1186 ipst->ips_mld_deferred_next = in mld_statechange()
1187 MIN(ipst->ips_mld_deferred_next, ilm->ilm_rtx.rtx_timer); in mld_statechange()
1189 mutex_exit(&ipst->ips_mld_timer_lock); in mld_statechange()
1401 ip_stack_t *ipst = arg; in igmp_timeout_handler() local
1404 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_timeout_handler()
1405 ASSERT(ipst->ips_igmp_timeout_id != 0); in igmp_timeout_handler()
1406 ipst->ips_igmp_timeout_id = 0; in igmp_timeout_handler()
1407 ipst->ips_igmp_timer_scheduled_last = 0; in igmp_timeout_handler()
1408 ipst->ips_igmp_time_to_next = 0; in igmp_timeout_handler()
1409 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_timeout_handler()
1411 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_timeout_handler()
1412 ill = ILL_START_WALK_V4(&ctx, ipst); in igmp_timeout_handler()
1418 rw_exit(&ipst->ips_ill_g_lock); in igmp_timeout_handler()
1423 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_timeout_handler()
1425 rw_exit(&ipst->ips_ill_g_lock); in igmp_timeout_handler()
1427 igmp_start_timers(global_next, ipst); in igmp_timeout_handler()
1620 ip_stack_t *ipst = arg; in mld_timeout_handler() local
1623 mutex_enter(&ipst->ips_mld_timer_lock); in mld_timeout_handler()
1624 ASSERT(ipst->ips_mld_timeout_id != 0); in mld_timeout_handler()
1625 ipst->ips_mld_timeout_id = 0; in mld_timeout_handler()
1626 ipst->ips_mld_timer_scheduled_last = 0; in mld_timeout_handler()
1627 ipst->ips_mld_time_to_next = 0; in mld_timeout_handler()
1628 mutex_exit(&ipst->ips_mld_timer_lock); in mld_timeout_handler()
1630 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_timeout_handler()
1631 ill = ILL_START_WALK_V6(&ctx, ipst); in mld_timeout_handler()
1637 rw_exit(&ipst->ips_ill_g_lock); in mld_timeout_handler()
1642 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_timeout_handler()
1644 rw_exit(&ipst->ips_ill_g_lock); in mld_timeout_handler()
1646 mld_start_timers(global_next, ipst); in mld_timeout_handler()
1671 ip_stack_t *ipst = (ip_stack_t *)arg; in igmp_slowtimo() local
1683 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_slowtimo()
1684 for (ifp = IP_V4_ILL_G_LIST(ipst); in igmp_slowtimo()
1685 ifp != (ill_if_t *)&IP_V4_ILL_G_LIST(ipst); in igmp_slowtimo()
1701 rw_exit(&ipst->ips_ill_g_lock); in igmp_slowtimo()
1708 (ipst->ips_igmp_max_version >= IGMP_V2_ROUTER) && in igmp_slowtimo()
1711 (ipst->ips_igmp_max_version == in igmp_slowtimo()
1732 (ipst->ips_igmp_max_version >= IGMP_V3_ROUTER) && in igmp_slowtimo()
1744 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_slowtimo()
1747 rw_exit(&ipst->ips_ill_g_lock); in igmp_slowtimo()
1748 ill_mcast_timer_start(ipst); in igmp_slowtimo()
1749 mutex_enter(&ipst->ips_igmp_slowtimeout_lock); in igmp_slowtimo()
1750 if (ipst->ips_igmp_slowtimeout_quiesce != B_TRUE) { in igmp_slowtimo()
1751 ipst->ips_igmp_slowtimeout_id = timeout(igmp_slowtimo, in igmp_slowtimo()
1752 (void *)ipst, MSEC_TO_TICK(MCAST_SLOWTIMO_INTERVAL)); in igmp_slowtimo()
1754 ipst->ips_igmp_slowtimeout_id = 0; in igmp_slowtimo()
1756 mutex_exit(&ipst->ips_igmp_slowtimeout_lock); in igmp_slowtimo()
1773 ip_stack_t *ipst = (ip_stack_t *)arg; in mld_slowtimo() local
1777 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_slowtimo()
1778 for (ifp = IP_V6_ILL_G_LIST(ipst); in mld_slowtimo()
1779 ifp != (ill_if_t *)&IP_V6_ILL_G_LIST(ipst); in mld_slowtimo()
1790 rw_exit(&ipst->ips_ill_g_lock); in mld_slowtimo()
1795 (ipst->ips_mld_max_version >= MLD_V2_ROUTER) && in mld_slowtimo()
1807 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_slowtimo()
1810 rw_exit(&ipst->ips_ill_g_lock); in mld_slowtimo()
1811 ill_mcast_timer_start(ipst); in mld_slowtimo()
1812 mutex_enter(&ipst->ips_mld_slowtimeout_lock); in mld_slowtimo()
1813 if (ipst->ips_mld_slowtimeout_quiesce != B_TRUE) { in mld_slowtimo()
1814 ipst->ips_mld_slowtimeout_id = timeout(mld_slowtimo, in mld_slowtimo()
1815 (void *)ipst, MSEC_TO_TICK(MCAST_SLOWTIMO_INTERVAL)); in mld_slowtimo()
1817 ipst->ips_mld_slowtimeout_id = 0; in mld_slowtimo()
1819 mutex_exit(&ipst->ips_mld_slowtimeout_lock); in mld_slowtimo()
1836 ip_stack_t *ipst = ill->ill_ipst; in igmp_sendpkt() local
1874 ++ipst->ips_igmpstat.igps_snd_reports; in igmp_sendpkt()
1899 ip_stack_t *ipst = ill->ill_ipst; in igmpv3_sendrpt() local
2027 ++ipst->ips_igmpstat.igps_snd_reports; in igmpv3_sendrpt()
2069 ip_stack_t *ipst = ill->ill_ipst; in mld_input() local
2108 (ipst->ips_mld_max_version < MLD_V2_ROUTER)) { in mld_input()
2122 mld_start_timers(next, ipst); in mld_input()