Lines Matching refs:ill

68 static ilm_t	*ilm_add(ill_t *ill, const in6_addr_t *group,
81 static int ip_ll_multireq(ill_t *ill, const in6_addr_t *group,
87 ipaddr_t ifaddr, uint_t ifindex, ill_t *ill, mcast_record_t fmode,
90 static mblk_t *ill_create_dl(ill_t *ill, uint32_t dl_primitive,
406 ill_t *ill = ilm->ilm_ill; in ilm_update_add() local
456 if (!IS_LOOPBACK(ill)) { in ilm_update_add()
457 if (ill->ill_isv6) in ilm_update_add()
485 ill_t *ill = ilm->ilm_ill; in ilm_update_del() local
515 if (!IS_LOOPBACK(ill)) { in ilm_update_del()
516 if (ill->ill_isv6) in ilm_update_del()
531 buf, sizeof (buf)), ill->ill_name)); in ilm_update_del()
557 ip_addmulti(const in6_addr_t *v6group, ill_t *ill, zoneid_t zoneid, in ip_addmulti() argument
563 mutex_enter(&ill->ill_mcast_serializer); in ip_addmulti()
564 ilm = ip_addmulti_serial(v6group, ill, zoneid, ILGSTAT_NONE, in ip_addmulti()
566 mutex_exit(&ill->ill_mcast_serializer); in ip_addmulti()
571 ill_mcast_send_queued(ill); in ip_addmulti()
572 ill_dlpi_send_queued(ill); in ip_addmulti()
595 ip_addmulti_serial(const in6_addr_t *v6group, ill_t *ill, zoneid_t zoneid, in ip_addmulti_serial() argument
601 ASSERT(MUTEX_HELD(&ill->ill_mcast_serializer)); in ip_addmulti_serial()
603 if (ill->ill_isv6) { in ip_addmulti_serial()
614 ASSERT(!IS_UNDER_IPMP(ill)); in ip_addmulti_serial()
625 if (IS_UNDER_IPMP(ill)) { in ip_addmulti_serial()
630 rw_enter(&ill->ill_mcast_lock, RW_WRITER); in ip_addmulti_serial()
637 if (ill->ill_state_flags & ILL_CONDEMNED) { in ip_addmulti_serial()
638 rw_exit(&ill->ill_mcast_lock); in ip_addmulti_serial()
642 ilm = ip_addmulti_impl(v6group, ill, zoneid, ilgstat, ilg_fmode, in ip_addmulti_serial()
644 rw_exit(&ill->ill_mcast_lock); in ip_addmulti_serial()
646 ill_mcast_timer_start(ill->ill_ipst); in ip_addmulti_serial()
651 ip_addmulti_impl(const in6_addr_t *v6group, ill_t *ill, zoneid_t zoneid, in ip_addmulti_impl() argument
658 ASSERT(RW_WRITE_HELD(&ill->ill_mcast_lock)); in ip_addmulti_impl()
667 ilm = ilm_lookup(ill, v6group, zoneid); in ip_addmulti_impl()
684 ilm = ilm_add(ill, v6group, ilgstat, ilg_fmode, ilg_flist, zoneid); in ip_addmulti_impl()
695 if (ilm_numentries(ill, v6group) == 1) { in ip_addmulti_impl()
696 ret = ill_join_allmulti(ill); in ip_addmulti_impl()
699 if (!IS_LOOPBACK(ill)) { in ip_addmulti_impl()
700 if (ill->ill_isv6) in ip_addmulti_impl()
710 if (ilm_numentries(ill, v6group) == 1) { in ip_addmulti_impl()
711 ret = ip_ll_multireq(ill, v6group, DL_ENABMULTI_REQ); in ip_addmulti_impl()
720 buf, sizeof (buf)), ill->ill_name)); in ip_addmulti_impl()
735 ip_mphysaddr_add(ill_t *ill, uchar_t *hw_addr) in ip_mphysaddr_add() argument
738 int hw_addr_length = ill->ill_phys_addr_length; in ip_mphysaddr_add()
740 mutex_enter(&ill->ill_lock); in ip_mphysaddr_add()
741 for (mpa = ill->ill_mphysaddr_list; mpa != NULL; mpa = mpa->mpa_next) { in ip_mphysaddr_add()
744 mutex_exit(&ill->ill_lock); in ip_mphysaddr_add()
759 (void *)hw_addr, ill->ill_name)); in ip_mphysaddr_add()
760 mutex_exit(&ill->ill_lock); in ip_mphysaddr_add()
765 mpa->mpa_next = ill->ill_mphysaddr_list; in ip_mphysaddr_add()
766 ill->ill_mphysaddr_list = mpa; in ip_mphysaddr_add()
767 mutex_exit(&ill->ill_lock); in ip_mphysaddr_add()
777 ip_mphysaddr_del(ill_t *ill, uchar_t *hw_addr) in ip_mphysaddr_del() argument
780 int hw_addr_length = ill->ill_phys_addr_length; in ip_mphysaddr_del()
783 mutex_enter(&ill->ill_lock); in ip_mphysaddr_del()
784 for (mpapp = &ill->ill_mphysaddr_list; (mpap = *mpapp) != NULL; in ip_mphysaddr_del()
798 " ill_name: %s\n", (void *)hw_addr, ill->ill_name)); in ip_mphysaddr_del()
805 mutex_exit(&ill->ill_lock); in ip_mphysaddr_del()
818 ip_ll_send_multireq(ill_t *ill, const in6_addr_t *v6groupp, t_uscalar_t prim) in ip_ll_send_multireq() argument
826 ASSERT(RW_LOCK_HELD(&ill->ill_mcast_lock)); in ip_ll_send_multireq()
828 if (IS_IPMP(ill)) { in ip_ll_send_multireq()
830 release_ill = ipmp_illgrp_hold_cast_ill(ill->ill_grp); in ip_ll_send_multireq()
838 ill->ill_name, ill->ill_isv6)); in ip_ll_send_multireq()
841 ill = release_ill; in ip_ll_send_multireq()
844 mp = ill_create_dl(ill, prim, &addrlen, &addroff); in ip_ll_send_multireq()
850 mp = ndp_mcastreq(ill, v6groupp, addrlen, addroff, mp); in ip_ll_send_multireq()
852 ip0dbg(("null from ndp_mcastreq(ill %s)\n", ill->ill_name)); in ip_ll_send_multireq()
861 if (!ip_mphysaddr_add(ill, cp)) { in ip_ll_send_multireq()
866 mutex_enter(&ill->ill_lock); in ip_ll_send_multireq()
868 if (ill->ill_dlpi_multicast_state == IDS_UNKNOWN) in ip_ll_send_multireq()
869 ill->ill_dlpi_multicast_state = IDS_INPROGRESS; in ip_ll_send_multireq()
870 mutex_exit(&ill->ill_lock); in ip_ll_send_multireq()
874 if (!ip_mphysaddr_del(ill, cp)) { in ip_ll_send_multireq()
880 ill_dlpi_queue(ill, mp); in ip_ll_send_multireq()
892 ip_ll_multireq(ill_t *ill, const in6_addr_t *v6groupp, t_uscalar_t prim) in ip_ll_multireq() argument
894 if (ill->ill_net_type != IRE_IF_RESOLVER || in ip_ll_multireq()
895 ill->ill_ipif->ipif_flags & IPIF_POINTOPOINT) { in ip_ll_multireq()
900 if (ill->ill_phyint->phyint_flags & PHYI_MULTI_BCAST) { in ip_ll_multireq()
904 return (ip_ll_send_multireq(ill, v6groupp, prim)); in ip_ll_multireq()
914 ill_t *ill = ilm->ilm_ill; in ip_delmulti() local
918 mutex_enter(&ill->ill_mcast_serializer); in ip_delmulti()
920 mutex_exit(&ill->ill_mcast_serializer); in ip_delmulti()
925 ill_mcast_send_queued(ill); in ip_delmulti()
926 ill_dlpi_send_queued(ill); in ip_delmulti()
940 ill_t *ill = ilm->ilm_ill; in ip_delmulti_serial() local
943 ASSERT(MUTEX_HELD(&ill->ill_mcast_serializer)); in ip_delmulti_serial()
944 ASSERT(!(IS_UNDER_IPMP(ill))); in ip_delmulti_serial()
946 rw_enter(&ill->ill_mcast_lock, RW_WRITER); in ip_delmulti_serial()
948 rw_exit(&ill->ill_mcast_lock); in ip_delmulti_serial()
949 ill_mcast_timer_start(ill->ill_ipst); in ip_delmulti_serial()
956 ill_t *ill = ilm->ilm_ill; in ip_delmulti_impl() local
960 ASSERT(RW_WRITE_HELD(&ill->ill_mcast_lock)); in ip_delmulti_impl()
980 if (ilm_numentries(ill, &v6group) != 0) in ip_delmulti_impl()
983 ill_leave_allmulti(ill); in ip_delmulti_impl()
988 if (!IS_LOOPBACK(ill)) { in ip_delmulti_impl()
989 if (ill->ill_isv6) in ip_delmulti_impl()
1000 if (ilm_numentries(ill, &v6group) != 0) in ip_delmulti_impl()
1003 error = ip_ll_multireq(ill, &v6group, DL_DISABMULTI_REQ); in ip_delmulti_impl()
1010 ill->ill_name)); in ip_delmulti_impl()
1019 ill_join_allmulti(ill_t *ill) in ill_join_allmulti() argument
1025 ASSERT(RW_WRITE_HELD(&ill->ill_mcast_lock)); in ill_join_allmulti()
1027 if (IS_LOOPBACK(ill)) in ill_join_allmulti()
1030 if (!ill->ill_dl_up) { in ill_join_allmulti()
1038 if (IS_IPMP(ill)) { in ill_join_allmulti()
1040 release_ill = ipmp_illgrp_hold_cast_ill(ill->ill_grp); in ill_join_allmulti()
1048 ill->ill_name, ill->ill_isv6)); in ill_join_allmulti()
1051 ill = release_ill; in ill_join_allmulti()
1052 if (!ill->ill_dl_up) { in ill_join_allmulti()
1053 ill_refrele(ill); in ill_join_allmulti()
1065 if ((ill->ill_net_type == IRE_IF_RESOLVER) && in ill_join_allmulti()
1066 !(ill->ill_phyint->phyint_flags & PHYI_MULTI_BCAST)) { in ill_join_allmulti()
1067 promiscon_mp = ill_create_dl(ill, DL_PROMISCON_REQ, in ill_join_allmulti()
1069 if (ill->ill_promiscoff_mp == NULL) in ill_join_allmulti()
1070 promiscoff_mp = ill_create_dl(ill, DL_PROMISCOFF_REQ, in ill_join_allmulti()
1073 (ill->ill_promiscoff_mp == NULL && promiscoff_mp == NULL)) { in ill_join_allmulti()
1080 if (ill->ill_promiscoff_mp == NULL) in ill_join_allmulti()
1081 ill->ill_promiscoff_mp = promiscoff_mp; in ill_join_allmulti()
1082 ill_dlpi_queue(ill, promiscon_mp); in ill_join_allmulti()
1093 ill_leave_allmulti(ill_t *ill) in ill_leave_allmulti() argument
1098 ASSERT(RW_WRITE_HELD(&ill->ill_mcast_lock)); in ill_leave_allmulti()
1100 if (IS_LOOPBACK(ill)) in ill_leave_allmulti()
1103 if (!ill->ill_dl_up) { in ill_leave_allmulti()
1111 if (IS_IPMP(ill)) { in ill_leave_allmulti()
1113 release_ill = ipmp_illgrp_hold_cast_ill(ill->ill_grp); in ill_leave_allmulti()
1121 ill->ill_name, ill->ill_isv6)); in ill_leave_allmulti()
1124 ill = release_ill; in ill_leave_allmulti()
1125 if (!ill->ill_dl_up) in ill_leave_allmulti()
1135 promiscoff_mp = ill->ill_promiscoff_mp; in ill_leave_allmulti()
1137 ill->ill_promiscoff_mp = NULL; in ill_leave_allmulti()
1138 ill_dlpi_queue(ill, promiscoff_mp); in ill_leave_allmulti()
1148 ill_t *ill; in ip_join_allmulti() local
1152 ill = ill_lookup_on_ifindex(ifindex, isv6, ipst); in ip_join_allmulti()
1153 if (ill == NULL) in ip_join_allmulti()
1163 if (IS_UNDER_IPMP(ill)) { in ip_join_allmulti()
1164 ill_refrele(ill); in ip_join_allmulti()
1167 mutex_enter(&ill->ill_lock); in ip_join_allmulti()
1168 if (ill->ill_ipallmulti_cnt > 0) { in ip_join_allmulti()
1170 ASSERT(ill->ill_ipallmulti_ilm != NULL); in ip_join_allmulti()
1171 ill->ill_ipallmulti_cnt++; in ip_join_allmulti()
1172 mutex_exit(&ill->ill_lock); in ip_join_allmulti()
1175 mutex_exit(&ill->ill_lock); in ip_join_allmulti()
1177 ilm = ip_addmulti(&ipv6_all_zeros, ill, ill->ill_zoneid, &ret); in ip_join_allmulti()
1180 ill_refrele(ill); in ip_join_allmulti()
1184 mutex_enter(&ill->ill_lock); in ip_join_allmulti()
1185 if (ill->ill_ipallmulti_cnt > 0) { in ip_join_allmulti()
1188 mutex_exit(&ill->ill_lock); in ip_join_allmulti()
1191 ASSERT(ill->ill_ipallmulti_ilm == NULL); in ip_join_allmulti()
1192 ill->ill_ipallmulti_ilm = ilm; in ip_join_allmulti()
1193 ill->ill_ipallmulti_cnt++; in ip_join_allmulti()
1194 mutex_exit(&ill->ill_lock); in ip_join_allmulti()
1196 ill_refrele(ill); in ip_join_allmulti()
1203 ill_t *ill; in ip_leave_allmulti() local
1206 ill = ill_lookup_on_ifindex(ifindex, isv6, ipst); in ip_leave_allmulti()
1207 if (ill == NULL) in ip_leave_allmulti()
1210 if (IS_UNDER_IPMP(ill)) { in ip_leave_allmulti()
1211 ill_refrele(ill); in ip_leave_allmulti()
1215 mutex_enter(&ill->ill_lock); in ip_leave_allmulti()
1216 if (ill->ill_ipallmulti_cnt == 0) { in ip_leave_allmulti()
1218 mutex_exit(&ill->ill_lock); in ip_leave_allmulti()
1221 ill->ill_ipallmulti_cnt--; in ip_leave_allmulti()
1222 if (ill->ill_ipallmulti_cnt == 0) { in ip_leave_allmulti()
1224 ilm = ill->ill_ipallmulti_ilm; in ip_leave_allmulti()
1225 ill->ill_ipallmulti_ilm = NULL; in ip_leave_allmulti()
1229 mutex_exit(&ill->ill_lock); in ip_leave_allmulti()
1234 ill_refrele(ill); in ip_leave_allmulti()
1243 ip_purge_allmulti(ill_t *ill) in ip_purge_allmulti() argument
1247 ASSERT(IAM_WRITER_ILL(ill)); in ip_purge_allmulti()
1249 mutex_enter(&ill->ill_lock); in ip_purge_allmulti()
1250 ilm = ill->ill_ipallmulti_ilm; in ip_purge_allmulti()
1251 ill->ill_ipallmulti_ilm = NULL; in ip_purge_allmulti()
1252 ill->ill_ipallmulti_cnt = 0; in ip_purge_allmulti()
1253 mutex_exit(&ill->ill_lock); in ip_purge_allmulti()
1265 ill_create_dl(ill_t *ill, uint32_t dl_primitive, in ill_create_dl() argument
1277 hw_addr_length = ill->ill_phys_addr_length; in ill_create_dl()
1349 ill_recover_multicast(ill_t *ill) in ill_recover_multicast() argument
1354 ill->ill_need_recover_multicast = 0; in ill_recover_multicast()
1356 rw_enter(&ill->ill_mcast_lock, RW_WRITER); in ill_recover_multicast()
1357 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in ill_recover_multicast()
1363 if (ilm_numentries(ill, &ilm->ilm_v6addr) > 1 && in ill_recover_multicast()
1364 ilm_lookup(ill, &ilm->ilm_v6addr, ALL_ZONES) != ilm) { in ill_recover_multicast()
1372 (void) ill_join_allmulti(ill); in ill_recover_multicast()
1374 if (ill->ill_isv6) in ill_recover_multicast()
1379 (void) ip_ll_multireq(ill, &ilm->ilm_v6addr, in ill_recover_multicast()
1383 rw_exit(&ill->ill_mcast_lock); in ill_recover_multicast()
1385 ill_mcast_send_queued(ill); in ill_recover_multicast()
1386 ill_dlpi_send_queued(ill); in ill_recover_multicast()
1387 ill_mcast_timer_start(ill->ill_ipst); in ill_recover_multicast()
1399 ill_leave_multicast(ill_t *ill) in ill_leave_multicast() argument
1404 ill->ill_need_recover_multicast = 1; in ill_leave_multicast()
1406 rw_enter(&ill->ill_mcast_lock, RW_WRITER); in ill_leave_multicast()
1407 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in ill_leave_multicast()
1413 if (ilm_numentries(ill, &ilm->ilm_v6addr) > 1 && in ill_leave_multicast()
1414 ilm_lookup(ill, &ilm->ilm_v6addr, ALL_ZONES) != ilm) { in ill_leave_multicast()
1422 ill_leave_allmulti(ill); in ill_leave_multicast()
1424 if (ill->ill_isv6) in ill_leave_multicast()
1429 (void) ip_ll_multireq(ill, &ilm->ilm_v6addr, in ill_leave_multicast()
1433 rw_exit(&ill->ill_mcast_lock); in ill_leave_multicast()
1435 ill_mcast_send_queued(ill); in ill_leave_multicast()
1436 ill_dlpi_send_queued(ill); in ill_leave_multicast()
1437 ill_mcast_timer_start(ill->ill_ipst); in ill_leave_multicast()
1445 ill_hasmembers_v6(ill_t *ill, const in6_addr_t *v6group) in ill_hasmembers_v6() argument
1449 rw_enter(&ill->ill_mcast_lock, RW_READER); in ill_hasmembers_v6()
1450 ilm = ilm_lookup(ill, v6group, ALL_ZONES); in ill_hasmembers_v6()
1451 rw_exit(&ill->ill_mcast_lock); in ill_hasmembers_v6()
1463 ill_hasmembers_v4(ill_t *ill, ipaddr_t group) in ill_hasmembers_v4() argument
1468 return (ill_hasmembers_v6(ill, &v6group)); in ill_hasmembers_v4()
1476 ill_hasmembers_otherzones_v6(ill_t *ill, const in6_addr_t *v6group, in ill_hasmembers_otherzones_v6() argument
1481 rw_enter(&ill->ill_mcast_lock, RW_READER); in ill_hasmembers_otherzones_v6()
1482 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in ill_hasmembers_otherzones_v6()
1485 rw_exit(&ill->ill_mcast_lock); in ill_hasmembers_otherzones_v6()
1489 rw_exit(&ill->ill_mcast_lock); in ill_hasmembers_otherzones_v6()
1501 ill_hasmembers_otherzones_v4(ill_t *ill, ipaddr_t group, zoneid_t skipzone) in ill_hasmembers_otherzones_v4() argument
1506 return (ill_hasmembers_otherzones_v6(ill, &v6group, skipzone)); in ill_hasmembers_otherzones_v4()
1521 ill_hasmembers_nextzone_v6(ill_t *ill, const in6_addr_t *v6group, in ill_hasmembers_nextzone_v6() argument
1526 rw_enter(&ill->ill_mcast_lock, RW_READER); in ill_hasmembers_nextzone_v6()
1527 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in ill_hasmembers_nextzone_v6()
1531 rw_exit(&ill->ill_mcast_lock); in ill_hasmembers_nextzone_v6()
1535 rw_exit(&ill->ill_mcast_lock); in ill_hasmembers_nextzone_v6()
1548 ill_hasmembers_nextzone_v4(ill_t *ill, ipaddr_t group, zoneid_t zoneid) in ill_hasmembers_nextzone_v4() argument
1554 return (ill_hasmembers_nextzone_v6(ill, &v6group, zoneid)); in ill_hasmembers_nextzone_v4()
1561 ilm_lookup(ill_t *ill, const in6_addr_t *v6group, zoneid_t zoneid) in ilm_lookup() argument
1565 ASSERT(RW_LOCK_HELD(&ill->ill_mcast_lock)); in ilm_lookup()
1567 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in ilm_lookup()
1573 ASSERT(ilm->ilm_ill == ill); in ilm_lookup()
1585 ilm_numentries(ill_t *ill, const in6_addr_t *v6group) in ilm_numentries() argument
1590 ASSERT(RW_LOCK_HELD(&ill->ill_mcast_lock)); in ilm_numentries()
1591 for (ilm = ill->ill_ilm; ilm; ilm = ilm->ilm_next) { in ilm_numentries()
1601 ilm_add(ill_t *ill, const in6_addr_t *v6group, ilg_stat_t ilgstat, in ilm_add() argument
1608 ASSERT(RW_WRITE_HELD(&ill->ill_mcast_lock)); in ilm_add()
1625 ilm->ilm_ill = ill; in ilm_add()
1626 DTRACE_PROBE3(ill__incr__cnt, (ill_t *), ill, in ilm_add()
1628 ill->ill_ilm_cnt++; in ilm_add()
1630 ASSERT(ill->ill_ipst); in ilm_add()
1631 ilm->ilm_ipst = ill->ill_ipst; /* No netstack_hold */ in ilm_add()
1639 ilm_cur = ill->ill_ilm; in ilm_add()
1640 ilm_ptpn = &ill->ill_ilm; in ilm_add()
1681 ill_t *ill = ilm->ilm_ill; in ilm_delete() local
1689 ASSERT(RW_WRITE_HELD(&ill->ill_mcast_lock)); in ilm_delete()
1691 for (ilmp = &ill->ill_ilm; *ilmp != ilm; ilmp = &(*ilmp)->ilm_next) in ilm_delete()
1696 mutex_enter(&ill->ill_lock); in ilm_delete()
1703 DTRACE_PROBE3(ill__decr__cnt, (ill_t *), ill, in ilm_delete()
1705 ASSERT(ill->ill_ilm_cnt > 0); in ilm_delete()
1706 ill->ill_ilm_cnt--; in ilm_delete()
1707 if (ILL_FREE_OK(ill)) in ilm_delete()
1714 ipif_ill_refrele_tail(ill); in ilm_delete()
1716 mutex_exit(&ill->ill_lock); in ilm_delete()
1731 ill_t *ill; in ill_mcast_lookup() local
1738 ill = ill_lookup_on_ifindex_zoneid(ifindex, zoneid, in ill_mcast_lookup()
1745 ill = NULL; in ill_mcast_lookup()
1747 ill = ipif->ipif_ill; in ill_mcast_lookup()
1748 ill_refhold(ill); in ill_mcast_lookup()
1752 ill = ill_lookup_group_v4(v4group, zoneid, ipst, NULL, in ill_mcast_lookup()
1757 ill = ill_lookup_on_ifindex_zoneid(ifindex, zoneid, in ill_mcast_lookup()
1760 ill = ill_lookup_group_v6(group, zoneid, ipst, NULL, in ill_mcast_lookup()
1764 if (ill == NULL) { in ill_mcast_lookup()
1772 if (IS_UNDER_IPMP(ill) || IS_VNI(ill)) { in ill_mcast_lookup()
1773 ill_refrele(ill); in ill_mcast_lookup()
1777 return (ill); in ill_mcast_lookup()
1795 ill_t *ill = NULL; in ip_opt_check() local
1826 ill = ill_mcast_lookup(v6group, ifaddr, ifindex, IPCL_ZONEID(connp), in ip_opt_check()
1828 *illpp = ill; in ip_opt_check()
1919 struct ip_msfilter *imsf, const struct in6_addr *group, ill_t *ill, in ip_set_srcfilter() argument
1964 mutex_enter(&ill->ill_mcast_serializer); in ip_set_srcfilter()
1974 mutex_exit(&ill->ill_mcast_serializer); in ip_set_srcfilter()
1980 mutex_exit(&ill->ill_mcast_serializer); in ip_set_srcfilter()
1985 ilg->ilg_ill = ill; in ip_set_srcfilter()
1994 mutex_exit(&ill->ill_mcast_serializer); in ip_set_srcfilter()
1995 ill = ilg->ilg_ill; in ip_set_srcfilter()
1998 mutex_enter(&ill->ill_mcast_serializer); in ip_set_srcfilter()
2007 mutex_exit(&ill->ill_mcast_serializer); in ip_set_srcfilter()
2012 ill_mcast_send_queued(ill); in ip_set_srcfilter()
2013 ill_dlpi_send_queued(ill); in ip_set_srcfilter()
2025 mutex_exit(&ill->ill_mcast_serializer); in ip_set_srcfilter()
2098 ilm = ip_addmulti_serial(group, ill, connp->conn_zoneid, ilgstat, in ip_set_srcfilter()
2182 mutex_exit(&ill->ill_mcast_serializer); in ip_set_srcfilter()
2183 ill_mcast_send_queued(ill); in ip_set_srcfilter()
2184 ill_dlpi_send_queued(ill); in ip_set_srcfilter()
2213 ill_t *ill; in ip_sioctl_msfilter() local
2216 err = ip_msfilter_ill(connp, mp, ipip, &ill); in ip_sioctl_msfilter()
2265 err = ip_set_srcfilter(connp, gf, NULL, &v6group, ill, in ip_sioctl_msfilter()
2297 err = ip_set_srcfilter(connp, gf, imsf, &v6group, ill, in ip_sioctl_msfilter()
2301 ill_refrele(ill); in ip_sioctl_msfilter()
2319 ill_t *ill; in ip_msfilter_ill() local
2346 ill = ill_mcast_lookup(&v6group, v4addr, 0, IPCL_ZONEID(connp), in ip_msfilter_ill()
2348 if (ill == NULL && v4addr != INADDR_ANY) in ip_msfilter_ill()
2367 ill = ill_mcast_lookup(&v6group, INADDR_ANY, index, in ip_msfilter_ill()
2370 *illp = ill; in ip_msfilter_ill()
2458 ill_t *ill; in ip_opt_add_group() local
2462 err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex, &ill); in ip_opt_add_group()
2476 ill_refrele(ill); in ip_opt_add_group()
2479 mutex_enter(&ill->ill_mcast_serializer); in ip_opt_add_group()
2491 if (ill->ill_grp_pending || IS_UNDER_IPMP(ill)) { in ip_opt_add_group()
2492 DTRACE_PROBE2(group__add__on__under, ill_t *, ill, in ip_opt_add_group()
2494 mutex_exit(&ill->ill_mcast_serializer); in ip_opt_add_group()
2495 ill_refrele(ill); in ip_opt_add_group()
2498 err = ilg_add(connp, v6group, ifaddr, ifindex, ill, fmode, v6src); in ip_opt_add_group()
2499 mutex_exit(&ill->ill_mcast_serializer); in ip_opt_add_group()
2505 ill_mcast_send_queued(ill); in ip_opt_add_group()
2506 ill_dlpi_send_queued(ill); in ip_opt_add_group()
2507 ill_refrele(ill); in ip_opt_add_group()
2525 ill_t *ill; in ip_opt_delete_group_excl() local
2538 &ill); in ip_opt_delete_group_excl()
2539 if (ill != NULL) { in ip_opt_delete_group_excl()
2541 ill_refrele(ill); in ip_opt_delete_group_excl()
2548 ill = ilg->ilg_ill; in ip_opt_delete_group_excl()
2549 if (ill != NULL) { in ip_opt_delete_group_excl()
2551 ill_refhold(ill); in ip_opt_delete_group_excl()
2554 mutex_enter(&ill->ill_mcast_serializer); in ip_opt_delete_group_excl()
2560 mutex_exit(&ill->ill_mcast_serializer); in ip_opt_delete_group_excl()
2561 ill_refrele(ill); in ip_opt_delete_group_excl()
2582 if (ill != NULL) in ip_opt_delete_group_excl()
2600 if (ill != NULL) in ip_opt_delete_group_excl()
2605 ASSERT(ill != NULL); in ip_opt_delete_group_excl()
2609 if (ill != NULL) { in ip_opt_delete_group_excl()
2610 mutex_exit(&ill->ill_mcast_serializer); in ip_opt_delete_group_excl()
2615 ill_mcast_send_queued(ill); in ip_opt_delete_group_excl()
2616 ill_dlpi_send_queued(ill); in ip_opt_delete_group_excl()
2617 ill_refrele(ill); in ip_opt_delete_group_excl()
2665 ill_t *ill; in ip_opt_delete_group() local
2669 &ill); in ip_opt_delete_group()
2674 if (ill != NULL) in ip_opt_delete_group()
2675 ill_refrele(ill); in ip_opt_delete_group()
2697 uint_t ifindex, ill_t *ill, mcast_record_t fmode, const in6_addr_t *v6src) in ilg_add() argument
2706 if (!(ill->ill_flags & ILLF_MULTICAST)) in ilg_add()
2710 ASSERT(MUTEX_HELD(&ill->ill_mcast_serializer)); in ilg_add()
2772 ilg->ilg_ill = ill; in ilg_add()
2814 ilm = ip_addmulti_serial(v6group, ill, connp->conn_zoneid, ilgstat, in ilg_add()
2895 ill_t *ill) in conn_hasmembers_ill_withsrc_v4() argument
2909 if (ilg->ilg_ill != ill) in conn_hasmembers_ill_withsrc_v4()
2913 ASSERT(!IS_UNDER_IPMP(ill)); in conn_hasmembers_ill_withsrc_v4()
2955 const in6_addr_t *v6src, ill_t *ill) in conn_hasmembers_ill_withsrc_v6() argument
2967 if (ilg->ilg_ill != ill) in conn_hasmembers_ill_withsrc_v6()
2971 ASSERT(!IS_UNDER_IPMP(ill)); in conn_hasmembers_ill_withsrc_v6()
3082 ill_t *ill; in ilg_delete_all() local
3111 ill = ilg->ilg_ilm->ilm_ill; in ilg_delete_all()
3119 if (!mutex_tryenter(&ill->ill_mcast_serializer)) { in ilg_delete_all()
3120 ill_refhold(ill); in ilg_delete_all()
3127 mutex_enter(&ill->ill_mcast_serializer); in ilg_delete_all()
3145 mutex_exit(&ill->ill_mcast_serializer); in ilg_delete_all()
3150 ill_mcast_send_queued(ill); in ilg_delete_all()
3151 ill_dlpi_send_queued(ill); in ilg_delete_all()
3154 ill_refrele(ill); in ilg_delete_all()
3168 ilg_attach(conn_t *connp, ilg_t *ilg, ill_t *ill) in ilg_attach() argument
3199 ilg->ilg_ill = ill; in ilg_attach()
3203 ilm = ip_addmulti_serial(&v6group, ill, connp->conn_zoneid, ilgstat, in ilg_attach()
3268 ill_t *ill = (ill_t *)arg; in conn_update_ill() local
3286 if (ill != NULL) in conn_update_ill()
3287 ilg_check_detach(connp, ill); in conn_update_ill()
3289 ilg_check_reattach(connp, ill); in conn_update_ill()
3301 ilg_check_detach(conn_t *connp, ill_t *ill) in ilg_check_detach() argument
3307 mutex_enter(&ill->ill_mcast_serializer); in ilg_check_detach()
3314 if (ilg->ilg_ill != ill) in ilg_check_detach()
3341 mutex_exit(&ill->ill_mcast_serializer); in ilg_check_detach()
3346 ill_mcast_send_queued(ill); in ilg_check_detach()
3347 ill_dlpi_send_queued(ill); in ilg_check_detach()
3359 ill_t *ill; in ilg_check_reattach() local
3374 ill = ill_mcast_lookup(&ilg->ilg_v6group, ilg->ilg_ifaddr, in ilg_check_reattach()
3382 if (ill != NULL && in ilg_check_reattach()
3383 (!(ill->ill_flags & ILLF_MULTICAST) || !ill->ill_dl_up)) { in ilg_check_reattach()
3388 ill_refrele(ill); in ilg_check_reattach()
3389 ill = NULL; in ilg_check_reattach()
3398 if (ill == ilg->ilg_ill || (ill != NULL && ill == oill)) { in ilg_check_reattach()
3399 if (ill != NULL) { in ilg_check_reattach()
3404 ill_refrele(ill); in ilg_check_reattach()
3469 if (ill != NULL) { in ilg_check_reattach()
3474 ill_refrele(ill); in ilg_check_reattach()
3481 if (ill != NULL) { in ilg_check_reattach()
3486 if (!mutex_tryenter(&ill->ill_mcast_serializer)) { in ilg_check_reattach()
3491 mutex_enter(&ill->ill_mcast_serializer); in ilg_check_reattach()
3510 ill->ill_name)); in ilg_check_reattach()
3511 ilg_attach(connp, ilg, ill); in ilg_check_reattach()
3516 mutex_exit(&ill->ill_mcast_serializer); in ilg_check_reattach()
3522 ill_mcast_send_queued(ill); in ilg_check_reattach()
3523 ill_dlpi_send_queued(ill); in ilg_check_reattach()
3524 ill_refrele(ill); in ilg_check_reattach()
3541 update_conn_ill(ill_t *ill, ip_stack_t *ipst) in update_conn_ill() argument
3543 ipcl_walk(conn_update_ill, (caddr_t)ill, ipst); in update_conn_ill()