Lines Matching refs:ilm
77 static void igmp_sendpkt(ilm_t *ilm, uchar_t type, ipaddr_t addr);
78 static void mld_sendpkt(ilm_t *ilm, uchar_t type, const in6_addr_t *v6addr);
85 static mrec_t *mcast_merge_rtx(ilm_t *ilm, mrec_t *rp, slist_t *flist);
316 ilm_t *ilm; in igmp_input() local
454 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in igmp_input()
455 if (!IN6_ARE_ADDR_EQUAL(&ilm->ilm_v6addr, &v6group)) in igmp_input()
459 ilm->ilm_timer = INFINITY; in igmp_input()
460 ilm->ilm_state = IGMP_OTHERMEMBER; in igmp_input()
488 ilm_t *ilm; in igmp_query_in() local
589 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in igmp_query_in()
597 if (!IN6_IS_ADDR_V4MAPPED(&ilm->ilm_v6addr)) in igmp_query_in()
599 if (ilm->ilm_addr == htonl(INADDR_ANY)) in igmp_query_in()
601 if (ilm->ilm_addr != htonl(INADDR_ALLHOSTS_GROUP) && in igmp_query_in()
603 (igmpa->igmpa_group == ilm->ilm_addr)) { in igmp_query_in()
604 if (ilm->ilm_timer > timer) { in igmp_query_in()
605 MCAST_RANDOM_DELAY(ilm->ilm_timer, timer); in igmp_query_in()
606 if (ilm->ilm_timer < next) in igmp_query_in()
607 next = ilm->ilm_timer; in igmp_query_in()
608 ilm->ilm_timer += current; in igmp_query_in()
627 ilm_t *ilm; in igmpv3_query_in() local
699 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in igmpv3_query_in()
700 if (!IN6_IS_ADDR_V4MAPPED(&ilm->ilm_v6addr) || in igmpv3_query_in()
701 (ilm->ilm_addr == htonl(INADDR_ANY)) || in igmpv3_query_in()
702 (ilm->ilm_addr == htonl(INADDR_ALLHOSTS_GROUP)) || in igmpv3_query_in()
703 (igmp3qa->igmp3qa_group != ilm->ilm_addr)) in igmpv3_query_in()
713 if (numsrc == 0 || (ilm->ilm_timer < INFINITY && in igmpv3_query_in()
714 SLIST_IS_EMPTY(ilm->ilm_pendsrcs))) { in igmpv3_query_in()
716 FREE_SLIST(ilm->ilm_pendsrcs); in igmpv3_query_in()
717 ilm->ilm_pendsrcs = NULL; in igmpv3_query_in()
722 (ilm->ilm_pendsrcs == NULL && in igmpv3_query_in()
723 (ilm->ilm_pendsrcs = l_alloc()) == NULL)) { in igmpv3_query_in()
738 l_union_in_a(ilm->ilm_pendsrcs, pktl, in igmpv3_query_in()
745 ilm->ilm_timer = (ilm->ilm_timer == INFINITY) ? in igmpv3_query_in()
746 INFINITY : (ilm->ilm_timer - current); in igmpv3_query_in()
748 ilm->ilm_timer = MIN(ilm->ilm_timer, delay); in igmpv3_query_in()
749 if (ilm->ilm_timer < next) in igmpv3_query_in()
750 next = ilm->ilm_timer; in igmpv3_query_in()
751 ilm->ilm_timer += current; in igmpv3_query_in()
769 igmp_joingroup(ilm_t *ilm) in igmp_joingroup() argument
773 ip_stack_t *ipst = ilm->ilm_ipst; in igmp_joingroup()
775 ill = ilm->ilm_ill; in igmp_joingroup()
780 if (ilm->ilm_addr == htonl(INADDR_ALLHOSTS_GROUP)) { in igmp_joingroup()
781 ilm->ilm_rtx.rtx_timer = INFINITY; in igmp_joingroup()
782 ilm->ilm_state = IGMP_OTHERMEMBER; in igmp_joingroup()
785 ill->ill_mcast_type, htonl(ilm->ilm_addr))); in igmp_joingroup()
787 igmp_sendpkt(ilm, IGMP_V1_MEMBERSHIP_REPORT, 0); in igmp_joingroup()
789 igmp_sendpkt(ilm, IGMP_V2_MEMBERSHIP_REPORT, 0); in igmp_joingroup()
803 rtype = (ilm->ilm_fmode == MODE_IS_INCLUDE) ? in igmp_joingroup()
805 rp = mcast_bldmrec(rtype, &ilm->ilm_v6addr, in igmp_joingroup()
806 ilm->ilm_filter, NULL); in igmp_joingroup()
812 mcast_init_rtx(ill, &ilm->ilm_rtx, rtype, in igmp_joingroup()
813 ilm->ilm_filter); in igmp_joingroup()
817 ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv; in igmp_joingroup()
818 MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer, in igmp_joingroup()
820 timer = ilm->ilm_rtx.rtx_timer; in igmp_joingroup()
821 ilm->ilm_rtx.rtx_timer += CURRENT_MSTIME; in igmp_joingroup()
822 ilm->ilm_state = IGMP_IREPORTEDLAST; in igmp_joingroup()
839 (void) mi_strlog(ilm->ilm_ill->ill_rq, 1, SL_TRACE, in igmp_joingroup()
841 (ilm->ilm_ill->ill_mcast_type), in igmp_joingroup()
851 mld_joingroup(ilm_t *ilm) in mld_joingroup() argument
855 ip_stack_t *ipst = ilm->ilm_ipst; in mld_joingroup()
857 ill = ilm->ilm_ill; in mld_joingroup()
863 if (IN6_ARE_ADDR_EQUAL(&ipv6_all_hosts_mcast, &ilm->ilm_v6addr)) { in mld_joingroup()
864 ilm->ilm_rtx.rtx_timer = INFINITY; in mld_joingroup()
865 ilm->ilm_state = IGMP_OTHERMEMBER; in mld_joingroup()
868 mld_sendpkt(ilm, MLD_LISTENER_REPORT, NULL); in mld_joingroup()
882 rtype = (ilm->ilm_fmode == MODE_IS_INCLUDE) ? in mld_joingroup()
884 rp = mcast_bldmrec(rtype, &ilm->ilm_v6addr, in mld_joingroup()
885 ilm->ilm_filter, NULL); in mld_joingroup()
891 mcast_init_rtx(ill, &ilm->ilm_rtx, rtype, in mld_joingroup()
892 ilm->ilm_filter); in mld_joingroup()
897 ilm->ilm_rtx.rtx_cnt > 0); in mld_joingroup()
899 ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv; in mld_joingroup()
900 MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer, in mld_joingroup()
902 timer = ilm->ilm_rtx.rtx_timer; in mld_joingroup()
903 ilm->ilm_rtx.rtx_timer += CURRENT_MSTIME; in mld_joingroup()
904 ilm->ilm_state = IGMP_IREPORTEDLAST; in mld_joingroup()
921 (void) mi_strlog(ilm->ilm_ill->ill_rq, 1, SL_TRACE, in mld_joingroup()
923 (ilm->ilm_ill->ill_mcast_type), in mld_joingroup()
933 igmp_leavegroup(ilm_t *ilm) in igmp_leavegroup() argument
935 ill_t *ill = ilm->ilm_ill; in igmp_leavegroup()
940 if (ilm->ilm_state == IGMP_IREPORTEDLAST && in igmp_leavegroup()
942 (ilm->ilm_addr != htonl(INADDR_ALLHOSTS_GROUP))) { in igmp_leavegroup()
943 igmp_sendpkt(ilm, IGMP_V2_LEAVE_GROUP, in igmp_leavegroup()
948 (ilm->ilm_addr != htonl(INADDR_ALLHOSTS_GROUP))) { in igmp_leavegroup()
959 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in igmp_leavegroup()
960 rp = mcast_bldmrec(BLOCK_OLD_SOURCES, &ilm->ilm_v6addr, in igmp_leavegroup()
961 ilm->ilm_filter, NULL); in igmp_leavegroup()
963 rp = mcast_bldmrec(CHANGE_TO_INCLUDE, &ilm->ilm_v6addr, in igmp_leavegroup()
976 mld_leavegroup(ilm_t *ilm) in mld_leavegroup() argument
978 ill_t *ill = ilm->ilm_ill; in mld_leavegroup()
983 if (ilm->ilm_state == IGMP_IREPORTEDLAST && in mld_leavegroup()
985 (!IN6_ARE_ADDR_EQUAL(&ipv6_all_hosts_mcast, &ilm->ilm_v6addr))) { in mld_leavegroup()
986 mld_sendpkt(ilm, MLD_LISTENER_REDUCTION, &ipv6_all_rtrs_mcast); in mld_leavegroup()
990 (!IN6_ARE_ADDR_EQUAL(&ipv6_all_hosts_mcast, &ilm->ilm_v6addr))) { in mld_leavegroup()
1001 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in mld_leavegroup()
1002 rp = mcast_bldmrec(BLOCK_OLD_SOURCES, &ilm->ilm_v6addr, in mld_leavegroup()
1003 ilm->ilm_filter, NULL); in mld_leavegroup()
1005 rp = mcast_bldmrec(CHANGE_TO_INCLUDE, &ilm->ilm_v6addr, in mld_leavegroup()
1018 igmp_statechange(ilm_t *ilm, mcast_record_t fmode, slist_t *flist) in igmp_statechange() argument
1022 ip_stack_t *ipst = ilm->ilm_ipst; in igmp_statechange()
1024 ASSERT(ilm != NULL); in igmp_statechange()
1027 if (ilm->ilm_ill->ill_mcast_type != IGMP_V3_ROUTER) in igmp_statechange()
1030 ill = ilm->ilm_ill; in igmp_statechange()
1045 if (ilm->ilm_fmode == fmode) { in igmp_statechange()
1051 if (ilm->ilm_fmode == MODE_IS_INCLUDE) in igmp_statechange()
1056 l_difference(ilm->ilm_filter, flist, a_minus_b); in igmp_statechange()
1057 l_difference(flist, ilm->ilm_filter, b_minus_a); in igmp_statechange()
1058 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in igmp_statechange()
1067 rp = mcast_bldmrec(ALLOW_NEW_SOURCES, &ilm->ilm_v6addr, in igmp_statechange()
1070 rp = mcast_bldmrec(BLOCK_OLD_SOURCES, &ilm->ilm_v6addr, in igmp_statechange()
1074 } else if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in igmp_statechange()
1076 rp = mcast_bldmrec(CHANGE_TO_EXCLUDE, &ilm->ilm_v6addr, flist, in igmp_statechange()
1080 rp = mcast_bldmrec(CHANGE_TO_INCLUDE, &ilm->ilm_v6addr, flist, in igmp_statechange()
1089 rp = mcast_merge_rtx(ilm, rp, flist); in igmp_statechange()
1090 if (ilm->ilm_rtx.rtx_timer == INFINITY) { in igmp_statechange()
1091 ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv; in igmp_statechange()
1092 MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer, in igmp_statechange()
1096 ilm->ilm_rtx.rtx_timer); in igmp_statechange()
1097 ilm->ilm_rtx.rtx_timer += CURRENT_MSTIME; in igmp_statechange()
1109 mld_statechange(ilm_t *ilm, mcast_record_t fmode, slist_t *flist) in mld_statechange() argument
1113 ip_stack_t *ipst = ilm->ilm_ipst; in mld_statechange()
1115 ASSERT(ilm != NULL); in mld_statechange()
1117 ill = ilm->ilm_ill; in mld_statechange()
1136 if (ilm->ilm_fmode == fmode) { in mld_statechange()
1142 if (ilm->ilm_fmode == MODE_IS_INCLUDE) in mld_statechange()
1147 l_difference(ilm->ilm_filter, flist, a_minus_b); in mld_statechange()
1148 l_difference(flist, ilm->ilm_filter, b_minus_a); in mld_statechange()
1149 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in mld_statechange()
1157 rp = mcast_bldmrec(ALLOW_NEW_SOURCES, &ilm->ilm_v6addr, in mld_statechange()
1160 rp = mcast_bldmrec(BLOCK_OLD_SOURCES, &ilm->ilm_v6addr, in mld_statechange()
1164 } else if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in mld_statechange()
1166 rp = mcast_bldmrec(CHANGE_TO_EXCLUDE, &ilm->ilm_v6addr, flist, in mld_statechange()
1170 rp = mcast_bldmrec(CHANGE_TO_INCLUDE, &ilm->ilm_v6addr, flist, in mld_statechange()
1179 rp = mcast_merge_rtx(ilm, rp, flist); in mld_statechange()
1180 ASSERT(ilm->ilm_rtx.rtx_cnt > 0); in mld_statechange()
1181 if (ilm->ilm_rtx.rtx_timer == INFINITY) { in mld_statechange()
1182 ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv; in mld_statechange()
1183 MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer, in mld_statechange()
1187 MIN(ipst->ips_mld_deferred_next, ilm->ilm_rtx.rtx_timer); in mld_statechange()
1188 ilm->ilm_rtx.rtx_timer += CURRENT_MSTIME; in mld_statechange()
1199 ilm_t *ilm; in igmp_timeout_handler_per_ill() local
1219 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in igmp_timeout_handler_per_ill()
1220 if (ilm->ilm_addr == htonl(INADDR_ALLHOSTS_GROUP)) in igmp_timeout_handler_per_ill()
1222 rp = mcast_bldmrec(ilm->ilm_fmode, &ilm->ilm_v6addr, in igmp_timeout_handler_per_ill()
1223 ilm->ilm_filter, rp); in igmp_timeout_handler_per_ill()
1230 ilm->ilm_timer = INFINITY; in igmp_timeout_handler_per_ill()
1231 ilm->ilm_state = IGMP_IREPORTEDLAST; in igmp_timeout_handler_per_ill()
1232 FREE_SLIST(ilm->ilm_pendsrcs); in igmp_timeout_handler_per_ill()
1233 ilm->ilm_pendsrcs = NULL; in igmp_timeout_handler_per_ill()
1243 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in igmp_timeout_handler_per_ill()
1244 if (ilm->ilm_timer == INFINITY) in igmp_timeout_handler_per_ill()
1247 if (ilm->ilm_timer > (current + CURRENT_OFFSET)) { in igmp_timeout_handler_per_ill()
1248 if ((ilm->ilm_timer - current) < next) in igmp_timeout_handler_per_ill()
1249 next = ilm->ilm_timer - current; in igmp_timeout_handler_per_ill()
1255 (int)ntohl(ilm->ilm_timer - current), in igmp_timeout_handler_per_ill()
1263 ilm->ilm_timer = INFINITY; in igmp_timeout_handler_per_ill()
1264 ilm->ilm_state = IGMP_IREPORTEDLAST; in igmp_timeout_handler_per_ill()
1266 igmp_sendpkt(ilm, IGMP_V1_MEMBERSHIP_REPORT, 0); in igmp_timeout_handler_per_ill()
1268 igmp_sendpkt(ilm, IGMP_V2_MEMBERSHIP_REPORT, 0); in igmp_timeout_handler_per_ill()
1271 if (!SLIST_IS_EMPTY(ilm->ilm_pendsrcs) && in igmp_timeout_handler_per_ill()
1277 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in igmp_timeout_handler_per_ill()
1278 l_intersection(ilm->ilm_filter, in igmp_timeout_handler_per_ill()
1279 ilm->ilm_pendsrcs, rsp); in igmp_timeout_handler_per_ill()
1281 l_difference(ilm->ilm_pendsrcs, in igmp_timeout_handler_per_ill()
1282 ilm->ilm_filter, rsp); in igmp_timeout_handler_per_ill()
1284 FREE_SLIST(ilm->ilm_pendsrcs); in igmp_timeout_handler_per_ill()
1285 ilm->ilm_pendsrcs = NULL; in igmp_timeout_handler_per_ill()
1288 &ilm->ilm_v6addr, rsp, rp); in igmp_timeout_handler_per_ill()
1296 rp = mcast_bldmrec(ilm->ilm_fmode, in igmp_timeout_handler_per_ill()
1297 &ilm->ilm_v6addr, ilm->ilm_filter, rp); in igmp_timeout_handler_per_ill()
1304 rtxp = &ilm->ilm_rtx; in igmp_timeout_handler_per_ill()
1315 ilm->ilm_state = IGMP_IREPORTEDLAST; in igmp_timeout_handler_per_ill()
1317 igmp_sendpkt(ilm, IGMP_V1_MEMBERSHIP_REPORT, 0); in igmp_timeout_handler_per_ill()
1321 igmp_sendpkt(ilm, IGMP_V2_MEMBERSHIP_REPORT, 0); in igmp_timeout_handler_per_ill()
1341 rtype = (ilm->ilm_fmode == MODE_IS_INCLUDE) ? in igmp_timeout_handler_per_ill()
1343 rtxrp = mcast_bldmrec(rtype, &ilm->ilm_v6addr, in igmp_timeout_handler_per_ill()
1344 ilm->ilm_filter, rtxrp); in igmp_timeout_handler_per_ill()
1347 &ilm->ilm_v6addr, rtxp->rtx_allow, rtxrp); in igmp_timeout_handler_per_ill()
1349 &ilm->ilm_v6addr, rtxp->rtx_block, rtxrp); in igmp_timeout_handler_per_ill()
1438 ilm_t *ilm; in mld_timeout_handler_per_ill() local
1462 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in mld_timeout_handler_per_ill()
1463 if (IN6_ARE_ADDR_EQUAL(&ilm->ilm_v6addr, in mld_timeout_handler_per_ill()
1466 rp = mcast_bldmrec(ilm->ilm_fmode, &ilm->ilm_v6addr, in mld_timeout_handler_per_ill()
1467 ilm->ilm_filter, rp); in mld_timeout_handler_per_ill()
1474 ilm->ilm_timer = INFINITY; in mld_timeout_handler_per_ill()
1475 ilm->ilm_state = IGMP_IREPORTEDLAST; in mld_timeout_handler_per_ill()
1476 FREE_SLIST(ilm->ilm_pendsrcs); in mld_timeout_handler_per_ill()
1477 ilm->ilm_pendsrcs = NULL; in mld_timeout_handler_per_ill()
1487 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in mld_timeout_handler_per_ill()
1488 if (ilm->ilm_timer == INFINITY) in mld_timeout_handler_per_ill()
1491 if (ilm->ilm_timer > (current + CURRENT_OFFSET)) { in mld_timeout_handler_per_ill()
1492 if ((ilm->ilm_timer - current) < next) in mld_timeout_handler_per_ill()
1493 next = ilm->ilm_timer - current; in mld_timeout_handler_per_ill()
1499 (int)ntohl(ilm->ilm_timer - current), in mld_timeout_handler_per_ill()
1507 ilm->ilm_timer = INFINITY; in mld_timeout_handler_per_ill()
1508 ilm->ilm_state = IGMP_IREPORTEDLAST; in mld_timeout_handler_per_ill()
1510 mld_sendpkt(ilm, MLD_LISTENER_REPORT, NULL); in mld_timeout_handler_per_ill()
1513 if (!SLIST_IS_EMPTY(ilm->ilm_pendsrcs) && in mld_timeout_handler_per_ill()
1519 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in mld_timeout_handler_per_ill()
1520 l_intersection(ilm->ilm_filter, in mld_timeout_handler_per_ill()
1521 ilm->ilm_pendsrcs, rsp); in mld_timeout_handler_per_ill()
1523 l_difference(ilm->ilm_pendsrcs, in mld_timeout_handler_per_ill()
1524 ilm->ilm_filter, rsp); in mld_timeout_handler_per_ill()
1526 FREE_SLIST(ilm->ilm_pendsrcs); in mld_timeout_handler_per_ill()
1527 ilm->ilm_pendsrcs = NULL; in mld_timeout_handler_per_ill()
1530 &ilm->ilm_v6addr, rsp, rp); in mld_timeout_handler_per_ill()
1533 rp = mcast_bldmrec(ilm->ilm_fmode, in mld_timeout_handler_per_ill()
1534 &ilm->ilm_v6addr, ilm->ilm_filter, rp); in mld_timeout_handler_per_ill()
1539 rtxp = &ilm->ilm_rtx; in mld_timeout_handler_per_ill()
1550 ilm->ilm_state = IGMP_IREPORTEDLAST; in mld_timeout_handler_per_ill()
1552 mld_sendpkt(ilm, MLD_LISTENER_REPORT, NULL); in mld_timeout_handler_per_ill()
1572 rtype = (ilm->ilm_fmode == MODE_IS_INCLUDE) ? in mld_timeout_handler_per_ill()
1574 rtxrp = mcast_bldmrec(rtype, &ilm->ilm_v6addr, in mld_timeout_handler_per_ill()
1575 ilm->ilm_filter, rtxrp); in mld_timeout_handler_per_ill()
1578 &ilm->ilm_v6addr, rtxp->rtx_allow, rtxrp); in mld_timeout_handler_per_ill()
1580 &ilm->ilm_v6addr, rtxp->rtx_block, rtxrp); in mld_timeout_handler_per_ill()
1827 igmp_sendpkt(ilm_t *ilm, uchar_t type, ipaddr_t addr) in igmp_sendpkt() argument
1835 ill_t *ill = ilm->ilm_ill; in igmp_sendpkt()
1851 igmpa->igmpa_group = ilm->ilm_addr; in igmp_sendpkt()
2062 ilm_t *ilm; in mld_input() local
2173 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in mld_input()
2174 if (!IN6_ARE_ADDR_EQUAL(&ilm->ilm_v6addr, v6group_ptr)) in mld_input()
2179 ilm->ilm_timer = INFINITY; in mld_input()
2180 ilm->ilm_state = IGMP_OTHERMEMBER; in mld_input()
2204 ilm_t *ilm; in mld_query_in() local
2263 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in mld_query_in()
2264 ASSERT(!IN6_IS_ADDR_V4MAPPED(&ilm->ilm_v6addr)); in mld_query_in()
2266 if (IN6_IS_ADDR_UNSPECIFIED(&ilm->ilm_v6addr) || in mld_query_in()
2267 IN6_IS_ADDR_MC_NODELOCAL(&ilm->ilm_v6addr) || in mld_query_in()
2268 IN6_IS_ADDR_MC_RESERVED(&ilm->ilm_v6addr)) in mld_query_in()
2270 if ((!IN6_ARE_ADDR_EQUAL(&ilm->ilm_v6addr, in mld_query_in()
2273 (IN6_ARE_ADDR_EQUAL(v6group, &ilm->ilm_v6addr))) { in mld_query_in()
2276 ilm->ilm_timer = INFINITY; in mld_query_in()
2277 ilm->ilm_state = IGMP_IREPORTEDLAST; in mld_query_in()
2278 mld_sendpkt(ilm, MLD_LISTENER_REPORT, NULL); in mld_query_in()
2281 if (ilm->ilm_timer > timer) { in mld_query_in()
2282 MCAST_RANDOM_DELAY(ilm->ilm_timer, timer); in mld_query_in()
2283 if (ilm->ilm_timer < next) in mld_query_in()
2284 next = ilm->ilm_timer; in mld_query_in()
2285 ilm->ilm_timer += current; in mld_query_in()
2306 ilm_t *ilm; in mldv2_query_in() local
2378 for (ilm = ill->ill_ilm; ilm != NULL; ilm = ilm->ilm_next) { in mldv2_query_in()
2379 if (IN6_IS_ADDR_UNSPECIFIED(&ilm->ilm_v6addr) || in mldv2_query_in()
2380 IN6_IS_ADDR_MC_NODELOCAL(&ilm->ilm_v6addr) || in mldv2_query_in()
2381 IN6_IS_ADDR_MC_RESERVED(&ilm->ilm_v6addr) || in mldv2_query_in()
2382 !IN6_ARE_ADDR_EQUAL(v6group, &ilm->ilm_v6addr)) in mldv2_query_in()
2393 if (numsrc == 0 || (ilm->ilm_timer < INFINITY && in mldv2_query_in()
2394 SLIST_IS_EMPTY(ilm->ilm_pendsrcs))) { in mldv2_query_in()
2396 FREE_SLIST(ilm->ilm_pendsrcs); in mldv2_query_in()
2397 ilm->ilm_pendsrcs = NULL; in mldv2_query_in()
2402 (ilm->ilm_pendsrcs == NULL && in mldv2_query_in()
2403 (ilm->ilm_pendsrcs = l_alloc()) == NULL)) { in mldv2_query_in()
2417 l_union_in_a(ilm->ilm_pendsrcs, pktl, in mldv2_query_in()
2423 ilm->ilm_timer = (ilm->ilm_timer == INFINITY) ? in mldv2_query_in()
2424 INFINITY : (ilm->ilm_timer - current); in mldv2_query_in()
2426 ilm->ilm_timer = MIN(ilm->ilm_timer, delay); in mldv2_query_in()
2427 if (ilm->ilm_timer < next) in mldv2_query_in()
2428 next = ilm->ilm_timer; in mldv2_query_in()
2429 ilm->ilm_timer += current; in mldv2_query_in()
2447 mld_sendpkt(ilm_t *ilm, uchar_t type, const in6_addr_t *v6addr) in mld_sendpkt() argument
2455 ill_t *ill = ilm->ilm_ill; in mld_sendpkt()
2486 mldh->mld_addr = ilm->ilm_v6addr; in mld_sendpkt()
2501 ip6h->ip6_dst = ilm->ilm_v6addr; in mld_sendpkt()
2800 mcast_merge_rtx(ilm_t *ilm, mrec_t *mreclist, slist_t *flist) in mcast_merge_rtx() argument
2803 rtx_state_t *rtxp = &ilm->ilm_rtx; in mcast_merge_rtx()
2808 ill = ilm->ilm_ill; in mcast_merge_rtx()
2833 if (ilm->ilm_fmode == MODE_IS_INCLUDE) { in mcast_merge_rtx()
2899 &ilm->ilm_v6addr, rtxp->rtx_block, allow_mrec); in mcast_merge_rtx()
2905 &ilm->ilm_v6addr, rtxp->rtx_allow, block_mrec); in mcast_merge_rtx()