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
913 mutex_enter(&ipst->ips_mld_timer_lock); in mld_joingroup()
914 ipst->ips_mld_deferred_next = MIN(timer, in mld_joingroup()
915 ipst->ips_mld_deferred_next); in mld_joingroup()
916 mutex_exit(&ipst->ips_mld_timer_lock); in mld_joingroup()
1021 ip_stack_t *ipst = ilm->ilm_ipst; in igmp_statechange() local
1093 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_statechange()
1094 ipst->ips_igmp_deferred_next = MIN(ipst->ips_igmp_deferred_next, in igmp_statechange()
1097 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_statechange()
1112 ip_stack_t *ipst = ilm->ilm_ipst; in mld_statechange() local
1184 mutex_enter(&ipst->ips_mld_timer_lock); in mld_statechange()
1185 ipst->ips_mld_deferred_next = in mld_statechange()
1186 MIN(ipst->ips_mld_deferred_next, ilm->ilm_rtx.rtx_timer); in mld_statechange()
1188 mutex_exit(&ipst->ips_mld_timer_lock); in mld_statechange()
1400 ip_stack_t *ipst = arg; in igmp_timeout_handler() local
1403 mutex_enter(&ipst->ips_igmp_timer_lock); in igmp_timeout_handler()
1404 ASSERT(ipst->ips_igmp_timeout_id != 0); in igmp_timeout_handler()
1405 ipst->ips_igmp_timeout_id = 0; in igmp_timeout_handler()
1406 ipst->ips_igmp_timer_scheduled_last = 0; in igmp_timeout_handler()
1407 ipst->ips_igmp_time_to_next = 0; in igmp_timeout_handler()
1408 mutex_exit(&ipst->ips_igmp_timer_lock); in igmp_timeout_handler()
1410 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_timeout_handler()
1411 ill = ILL_START_WALK_V4(&ctx, ipst); in igmp_timeout_handler()
1417 rw_exit(&ipst->ips_ill_g_lock); in igmp_timeout_handler()
1422 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_timeout_handler()
1424 rw_exit(&ipst->ips_ill_g_lock); in igmp_timeout_handler()
1426 igmp_start_timers(global_next, ipst); in igmp_timeout_handler()
1619 ip_stack_t *ipst = arg; in mld_timeout_handler() local
1622 mutex_enter(&ipst->ips_mld_timer_lock); in mld_timeout_handler()
1623 ASSERT(ipst->ips_mld_timeout_id != 0); in mld_timeout_handler()
1624 ipst->ips_mld_timeout_id = 0; in mld_timeout_handler()
1625 ipst->ips_mld_timer_scheduled_last = 0; in mld_timeout_handler()
1626 ipst->ips_mld_time_to_next = 0; in mld_timeout_handler()
1627 mutex_exit(&ipst->ips_mld_timer_lock); in mld_timeout_handler()
1629 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_timeout_handler()
1630 ill = ILL_START_WALK_V6(&ctx, ipst); in mld_timeout_handler()
1636 rw_exit(&ipst->ips_ill_g_lock); in mld_timeout_handler()
1641 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_timeout_handler()
1643 rw_exit(&ipst->ips_ill_g_lock); in mld_timeout_handler()
1645 mld_start_timers(global_next, ipst); in mld_timeout_handler()
1670 ip_stack_t *ipst = (ip_stack_t *)arg; in igmp_slowtimo() local
1682 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_slowtimo()
1683 for (ifp = IP_V4_ILL_G_LIST(ipst); in igmp_slowtimo()
1684 ifp != (ill_if_t *)&IP_V4_ILL_G_LIST(ipst); in igmp_slowtimo()
1700 rw_exit(&ipst->ips_ill_g_lock); in igmp_slowtimo()
1707 (ipst->ips_igmp_max_version >= IGMP_V2_ROUTER) && in igmp_slowtimo()
1710 (ipst->ips_igmp_max_version == in igmp_slowtimo()
1731 (ipst->ips_igmp_max_version >= IGMP_V3_ROUTER) && in igmp_slowtimo()
1743 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in igmp_slowtimo()
1746 rw_exit(&ipst->ips_ill_g_lock); in igmp_slowtimo()
1747 ill_mcast_timer_start(ipst); in igmp_slowtimo()
1748 mutex_enter(&ipst->ips_igmp_slowtimeout_lock); in igmp_slowtimo()
1749 if (ipst->ips_igmp_slowtimeout_quiesce != B_TRUE) { in igmp_slowtimo()
1750 ipst->ips_igmp_slowtimeout_id = timeout(igmp_slowtimo, in igmp_slowtimo()
1751 (void *)ipst, MSEC_TO_TICK(MCAST_SLOWTIMO_INTERVAL)); in igmp_slowtimo()
1753 ipst->ips_igmp_slowtimeout_id = 0; in igmp_slowtimo()
1755 mutex_exit(&ipst->ips_igmp_slowtimeout_lock); in igmp_slowtimo()
1772 ip_stack_t *ipst = (ip_stack_t *)arg; in mld_slowtimo() local
1776 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_slowtimo()
1777 for (ifp = IP_V6_ILL_G_LIST(ipst); in mld_slowtimo()
1778 ifp != (ill_if_t *)&IP_V6_ILL_G_LIST(ipst); in mld_slowtimo()
1789 rw_exit(&ipst->ips_ill_g_lock); in mld_slowtimo()
1794 (ipst->ips_mld_max_version >= MLD_V2_ROUTER) && in mld_slowtimo()
1806 rw_enter(&ipst->ips_ill_g_lock, RW_READER); in mld_slowtimo()
1809 rw_exit(&ipst->ips_ill_g_lock); in mld_slowtimo()
1810 ill_mcast_timer_start(ipst); in mld_slowtimo()
1811 mutex_enter(&ipst->ips_mld_slowtimeout_lock); in mld_slowtimo()
1812 if (ipst->ips_mld_slowtimeout_quiesce != B_TRUE) { in mld_slowtimo()
1813 ipst->ips_mld_slowtimeout_id = timeout(mld_slowtimo, in mld_slowtimo()
1814 (void *)ipst, MSEC_TO_TICK(MCAST_SLOWTIMO_INTERVAL)); in mld_slowtimo()
1816 ipst->ips_mld_slowtimeout_id = 0; in mld_slowtimo()
1818 mutex_exit(&ipst->ips_mld_slowtimeout_lock); in mld_slowtimo()
1835 ip_stack_t *ipst = ill->ill_ipst; in igmp_sendpkt() local
1873 ++ipst->ips_igmpstat.igps_snd_reports; in igmp_sendpkt()
1898 ip_stack_t *ipst = ill->ill_ipst; in igmpv3_sendrpt() local
2026 ++ipst->ips_igmpstat.igps_snd_reports; in igmpv3_sendrpt()
2068 ip_stack_t *ipst = ill->ill_ipst; in mld_input() local
2107 (ipst->ips_mld_max_version < MLD_V2_ROUTER)) { in mld_input()
2121 mld_start_timers(next, ipst); in mld_input()