Lines Matching refs:ipst

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