Lines Matching refs:connp

581 	conn_t	*connp;  in ipcl_conn_create()  local
586 if ((connp = kmem_cache_alloc(sctp_conn_cache, sleep)) == NULL) in ipcl_conn_create()
588 sctp_conn_init(connp); in ipcl_conn_create()
590 connp->conn_netstack = ns; in ipcl_conn_create()
591 connp->conn_ixa->ixa_ipst = ns->netstack_ip; in ipcl_conn_create()
592 connp->conn_ixa->ixa_conn_id = (long)connp; in ipcl_conn_create()
593 ipcl_globalhash_insert(connp); in ipcl_conn_create()
594 return (connp); in ipcl_conn_create()
618 connp = NULL; in ipcl_conn_create()
622 if ((connp = kmem_cache_alloc(conn_cache, sleep)) == NULL) in ipcl_conn_create()
625 connp->conn_ref = 1; in ipcl_conn_create()
627 connp->conn_netstack = ns; in ipcl_conn_create()
628 connp->conn_ixa->ixa_ipst = ns->netstack_ip; in ipcl_conn_create()
629 connp->conn_ixa->ixa_conn_id = (long)connp; in ipcl_conn_create()
630 ipcl_globalhash_insert(connp); in ipcl_conn_create()
631 return (connp); in ipcl_conn_create()
635 ipcl_conn_destroy(conn_t *connp) in ipcl_conn_destroy() argument
638 netstack_t *ns = connp->conn_netstack; in ipcl_conn_destroy()
640 ASSERT(!MUTEX_HELD(&connp->conn_lock)); in ipcl_conn_destroy()
641 ASSERT(connp->conn_ref == 0); in ipcl_conn_destroy()
642 ASSERT(connp->conn_ioctlref == 0); in ipcl_conn_destroy()
644 DTRACE_PROBE1(conn__destroy, conn_t *, connp); in ipcl_conn_destroy()
646 if (connp->conn_cred != NULL) { in ipcl_conn_destroy()
647 crfree(connp->conn_cred); in ipcl_conn_destroy()
648 connp->conn_cred = NULL; in ipcl_conn_destroy()
652 if (connp->conn_ht_iphc != NULL) { in ipcl_conn_destroy()
653 kmem_free(connp->conn_ht_iphc, connp->conn_ht_iphc_allocated); in ipcl_conn_destroy()
654 connp->conn_ht_iphc = NULL; in ipcl_conn_destroy()
655 connp->conn_ht_iphc_allocated = 0; in ipcl_conn_destroy()
656 connp->conn_ht_iphc_len = 0; in ipcl_conn_destroy()
657 connp->conn_ht_ulp = NULL; in ipcl_conn_destroy()
658 connp->conn_ht_ulp_len = 0; in ipcl_conn_destroy()
660 ip_pkt_free(&connp->conn_xmit_ipp); in ipcl_conn_destroy()
662 ipcl_globalhash_remove(connp); in ipcl_conn_destroy()
664 if (connp->conn_latch != NULL) { in ipcl_conn_destroy()
665 IPLATCH_REFRELE(connp->conn_latch); in ipcl_conn_destroy()
666 connp->conn_latch = NULL; in ipcl_conn_destroy()
668 if (connp->conn_latch_in_policy != NULL) { in ipcl_conn_destroy()
669 IPPOL_REFRELE(connp->conn_latch_in_policy); in ipcl_conn_destroy()
670 connp->conn_latch_in_policy = NULL; in ipcl_conn_destroy()
672 if (connp->conn_latch_in_action != NULL) { in ipcl_conn_destroy()
673 IPACT_REFRELE(connp->conn_latch_in_action); in ipcl_conn_destroy()
674 connp->conn_latch_in_action = NULL; in ipcl_conn_destroy()
676 if (connp->conn_policy != NULL) { in ipcl_conn_destroy()
677 IPPH_REFRELE(connp->conn_policy, ns); in ipcl_conn_destroy()
678 connp->conn_policy = NULL; in ipcl_conn_destroy()
681 if (connp->conn_ipsec_opt_mp != NULL) { in ipcl_conn_destroy()
682 freemsg(connp->conn_ipsec_opt_mp); in ipcl_conn_destroy()
683 connp->conn_ipsec_opt_mp = NULL; in ipcl_conn_destroy()
686 if (connp->conn_flags & IPCL_TCPCONN) { in ipcl_conn_destroy()
687 tcp_t *tcp = connp->conn_tcp; in ipcl_conn_destroy()
704 ipcl_conn_cleanup(connp); in ipcl_conn_destroy()
705 connp->conn_flags = IPCL_TCPCONN; in ipcl_conn_destroy()
708 connp->conn_netstack = NULL; in ipcl_conn_destroy()
709 connp->conn_ixa->ixa_ipst = NULL; in ipcl_conn_destroy()
716 tcp->tcp_connp = connp; in ipcl_conn_destroy()
717 kmem_cache_free(tcp_conn_cache, connp); in ipcl_conn_destroy()
721 if (connp->conn_flags & IPCL_SCTPCONN) { in ipcl_conn_destroy()
723 sctp_free(connp); in ipcl_conn_destroy()
727 ipcl_conn_cleanup(connp); in ipcl_conn_destroy()
729 connp->conn_netstack = NULL; in ipcl_conn_destroy()
730 connp->conn_ixa->ixa_ipst = NULL; in ipcl_conn_destroy()
735 if (connp->conn_flags & IPCL_UDPCONN) { in ipcl_conn_destroy()
736 connp->conn_flags = IPCL_UDPCONN; in ipcl_conn_destroy()
737 kmem_cache_free(udp_conn_cache, connp); in ipcl_conn_destroy()
738 } else if (connp->conn_flags & IPCL_RAWIPCONN) { in ipcl_conn_destroy()
739 connp->conn_flags = IPCL_RAWIPCONN; in ipcl_conn_destroy()
740 connp->conn_proto = IPPROTO_ICMP; in ipcl_conn_destroy()
741 connp->conn_ixa->ixa_protocol = connp->conn_proto; in ipcl_conn_destroy()
742 kmem_cache_free(rawip_conn_cache, connp); in ipcl_conn_destroy()
743 } else if (connp->conn_flags & IPCL_RTSCONN) { in ipcl_conn_destroy()
744 connp->conn_flags = IPCL_RTSCONN; in ipcl_conn_destroy()
745 kmem_cache_free(rts_conn_cache, connp); in ipcl_conn_destroy()
747 connp->conn_flags = IPCL_IPCCONN; in ipcl_conn_destroy()
748 ASSERT(connp->conn_flags & IPCL_IPCCONN); in ipcl_conn_destroy()
749 ASSERT(connp->conn_priv == NULL); in ipcl_conn_destroy()
750 kmem_cache_free(ip_conn_cache, connp); in ipcl_conn_destroy()
758 ipcl_conn_unlisten(conn_t *connp) in ipcl_conn_unlisten() argument
760 ASSERT((connp->conn_flags & IPCL_CL_LISTENER) != 0); in ipcl_conn_unlisten()
761 ASSERT(connp->conn_lport != 0); in ipcl_conn_unlisten()
767 if (connp->conn_ipversion == IPV6_VERSION) { in ipcl_conn_unlisten()
769 laddrp = (uint8_t *)&connp->conn_bound_addr_v6; in ipcl_conn_unlisten()
772 laddrp = (uint8_t *)&connp->conn_bound_addr_v4; in ipcl_conn_unlisten()
774 (*cl_inet_unlisten)(connp->conn_netstack->netstack_stackid, in ipcl_conn_unlisten()
775 IPPROTO_TCP, addr_family, laddrp, connp->conn_lport, NULL); in ipcl_conn_unlisten()
777 connp->conn_flags &= ~IPCL_CL_LISTENER; in ipcl_conn_unlisten()
785 #define IPCL_HASH_REMOVE(connp) { \ argument
786 connf_t *connfp = (connp)->conn_fanout; \
787 ASSERT(!MUTEX_HELD(&((connp)->conn_lock))); \
790 if ((connp)->conn_next != NULL) \
791 (connp)->conn_next->conn_prev = \
792 (connp)->conn_prev; \
793 if ((connp)->conn_prev != NULL) \
794 (connp)->conn_prev->conn_next = \
795 (connp)->conn_next; \
797 connfp->connf_head = (connp)->conn_next; \
798 (connp)->conn_fanout = NULL; \
799 (connp)->conn_next = NULL; \
800 (connp)->conn_prev = NULL; \
801 (connp)->conn_flags |= IPCL_REMOVED; \
802 if (((connp)->conn_flags & IPCL_CL_LISTENER) != 0) \
803 ipcl_conn_unlisten((connp)); \
804 CONN_DEC_REF((connp)); \
810 ipcl_hash_remove(conn_t *connp) in ipcl_hash_remove() argument
812 uint8_t protocol = connp->conn_proto; in ipcl_hash_remove()
814 IPCL_HASH_REMOVE(connp); in ipcl_hash_remove()
816 ill_set_inputfn_all(connp->conn_netstack->netstack_ip); in ipcl_hash_remove()
831 ipcl_hash_remove_locked(conn_t *connp, connf_t *connfp) in ipcl_hash_remove_locked() argument
834 ASSERT(MUTEX_HELD(&connp->conn_lock)); in ipcl_hash_remove_locked()
835 ASSERT((connp->conn_flags & IPCL_CL_LISTENER) == 0); in ipcl_hash_remove_locked()
837 if ((connp)->conn_next != NULL) { in ipcl_hash_remove_locked()
838 (connp)->conn_next->conn_prev = (connp)->conn_prev; in ipcl_hash_remove_locked()
840 if ((connp)->conn_prev != NULL) { in ipcl_hash_remove_locked()
841 (connp)->conn_prev->conn_next = (connp)->conn_next; in ipcl_hash_remove_locked()
843 connfp->connf_head = (connp)->conn_next; in ipcl_hash_remove_locked()
845 (connp)->conn_fanout = NULL; in ipcl_hash_remove_locked()
846 (connp)->conn_next = NULL; in ipcl_hash_remove_locked()
847 (connp)->conn_prev = NULL; in ipcl_hash_remove_locked()
848 (connp)->conn_flags |= IPCL_REMOVED; in ipcl_hash_remove_locked()
849 ASSERT((connp)->conn_ref == 2); in ipcl_hash_remove_locked()
850 (connp)->conn_ref--; in ipcl_hash_remove_locked()
853 #define IPCL_HASH_INSERT_CONNECTED_LOCKED(connfp, connp) { \ argument
854 ASSERT((connp)->conn_fanout == NULL); \
855 ASSERT((connp)->conn_next == NULL); \
856 ASSERT((connp)->conn_prev == NULL); \
858 (connfp)->connf_head->conn_prev = (connp); \
859 (connp)->conn_next = (connfp)->connf_head; \
861 (connp)->conn_fanout = (connfp); \
862 (connfp)->connf_head = (connp); \
863 (connp)->conn_flags = ((connp)->conn_flags & ~IPCL_REMOVED) | \
865 CONN_INC_REF(connp); \
868 #define IPCL_HASH_INSERT_CONNECTED(connfp, connp) { \ argument
869 IPCL_HASH_REMOVE((connp)); \
871 IPCL_HASH_INSERT_CONNECTED_LOCKED(connfp, connp); \
875 #define IPCL_HASH_INSERT_BOUND(connfp, connp) { \ argument
877 IPCL_HASH_REMOVE((connp)); \
886 pconnp->conn_next = (connp); \
887 (connp)->conn_prev = pconnp; \
889 (connfp)->connf_head = (connp); \
892 (connp)->conn_next = nconnp; \
893 nconnp->conn_prev = (connp); \
895 (connp)->conn_fanout = (connfp); \
896 (connp)->conn_flags = ((connp)->conn_flags & ~IPCL_REMOVED) | \
898 CONN_INC_REF(connp); \
902 #define IPCL_HASH_INSERT_WILDCARD(connfp, connp) { \ argument
905 IN6_IS_ADDR_V4MAPPED(&(connp)->conn_laddr_v6); \
906 IPCL_HASH_REMOVE((connp)); \
913 connp->conn_zoneid == next->conn_zoneid) { \
914 (connp)->conn_next = next; \
917 next->conn_prev = (connp); \
923 (connp)->conn_prev = prev; \
924 *list = (connp); \
925 (connp)->conn_fanout = (connfp); \
926 (connp)->conn_flags = ((connp)->conn_flags & ~IPCL_REMOVED) | \
928 CONN_INC_REF((connp)); \
933 ipcl_hash_insert_wildcard(connf_t *connfp, conn_t *connp) in ipcl_hash_insert_wildcard() argument
935 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_hash_insert_wildcard()
950 conn_t *connp; in ipcl_iptun_classify_v4() local
955 for (connp = connfp->connf_head; connp != NULL; in ipcl_iptun_classify_v4()
956 connp = connp->conn_next) { in ipcl_iptun_classify_v4()
957 if (IPCL_IPTUN_MATCH(connp, *dst, *src)) in ipcl_iptun_classify_v4()
960 if (connp != NULL) in ipcl_iptun_classify_v4()
969 for (connp = connfp->connf_head; connp != NULL; in ipcl_iptun_classify_v4()
970 connp = connp->conn_next) { in ipcl_iptun_classify_v4()
971 if (IPCL_IPTUN_MATCH(connp, *dst, INADDR_ANY)) in ipcl_iptun_classify_v4()
975 if (connp != NULL) in ipcl_iptun_classify_v4()
976 CONN_INC_REF(connp); in ipcl_iptun_classify_v4()
978 return (connp); in ipcl_iptun_classify_v4()
985 conn_t *connp; in ipcl_iptun_classify_v6() local
990 for (connp = connfp->connf_head; connp != NULL; in ipcl_iptun_classify_v6()
991 connp = connp->conn_next) { in ipcl_iptun_classify_v6()
992 if (IPCL_IPTUN_MATCH_V6(connp, dst, src)) { in ipcl_iptun_classify_v6()
993 CONN_INC_REF(connp); in ipcl_iptun_classify_v6()
998 return (connp); in ipcl_iptun_classify_v6()
1009 ipcl_sctp_hash_insert(conn_t *connp, in_port_t lport) in ipcl_sctp_hash_insert() argument
1013 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ipcl_sctp_hash_insert()
1022 oconnp->conn_zoneid == connp->conn_zoneid && in ipcl_sctp_hash_insert()
1023 oconnp->conn_family == connp->conn_family && in ipcl_sctp_hash_insert()
1024 ((IN6_IS_ADDR_UNSPECIFIED(&connp->conn_laddr_v6) || in ipcl_sctp_hash_insert()
1026 IN6_IS_ADDR_V4MAPPED_ANY(&connp->conn_laddr_v6) || in ipcl_sctp_hash_insert()
1029 &connp->conn_laddr_v6))) { in ipcl_sctp_hash_insert()
1037 if (IN6_IS_ADDR_UNSPECIFIED(&connp->conn_faddr_v6) || in ipcl_sctp_hash_insert()
1038 IN6_IS_ADDR_V4MAPPED_ANY(&connp->conn_faddr_v6)) { in ipcl_sctp_hash_insert()
1039 if (IN6_IS_ADDR_UNSPECIFIED(&connp->conn_laddr_v6) || in ipcl_sctp_hash_insert()
1040 IN6_IS_ADDR_V4MAPPED_ANY(&connp->conn_laddr_v6)) { in ipcl_sctp_hash_insert()
1041 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_sctp_hash_insert()
1043 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_sctp_hash_insert()
1046 IPCL_HASH_INSERT_CONNECTED(connfp, connp); in ipcl_sctp_hash_insert()
1052 ipcl_iptun_hash_insert(conn_t *connp, ip_stack_t *ipst) in ipcl_iptun_hash_insert() argument
1056 ipaddr_t laddr = connp->conn_laddr_v4; in ipcl_iptun_hash_insert()
1057 ipaddr_t faddr = connp->conn_faddr_v4; in ipcl_iptun_hash_insert()
1069 IPCL_HASH_INSERT_CONNECTED_LOCKED(connfp, connp); in ipcl_iptun_hash_insert()
1075 ipcl_iptun_hash_insert_v6(conn_t *connp, ip_stack_t *ipst) in ipcl_iptun_hash_insert_v6() argument
1079 in6_addr_t *laddr = &connp->conn_laddr_v6; in ipcl_iptun_hash_insert_v6()
1080 in6_addr_t *faddr = &connp->conn_faddr_v6; in ipcl_iptun_hash_insert_v6()
1092 IPCL_HASH_INSERT_CONNECTED_LOCKED(connfp, connp); in ipcl_iptun_hash_insert_v6()
1105 check_exempt_conflict_v4(conn_t *connp, ip_stack_t *ipst) in check_exempt_conflict_v4() argument
1110 connfp = &ipst->ips_ipcl_proto_fanout_v4[connp->conn_proto]; in check_exempt_conflict_v4()
1115 if (connp->conn_family != tconn->conn_family) in check_exempt_conflict_v4()
1118 if ((connp->conn_mac_mode == CONN_MAC_DEFAULT) && in check_exempt_conflict_v4()
1122 if (connp->conn_zoneid == tconn->conn_zoneid) in check_exempt_conflict_v4()
1125 if (connp->conn_laddr_v4 != INADDR_ANY && in check_exempt_conflict_v4()
1127 connp->conn_laddr_v4 != tconn->conn_laddr_v4) in check_exempt_conflict_v4()
1137 check_exempt_conflict_v6(conn_t *connp, ip_stack_t *ipst) in check_exempt_conflict_v6() argument
1142 connfp = &ipst->ips_ipcl_proto_fanout_v6[connp->conn_proto]; in check_exempt_conflict_v6()
1147 if (connp->conn_family != tconn->conn_family) in check_exempt_conflict_v6()
1150 if ((connp->conn_mac_mode == CONN_MAC_DEFAULT) && in check_exempt_conflict_v6()
1154 if (connp->conn_zoneid == tconn->conn_zoneid) in check_exempt_conflict_v6()
1157 if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_laddr_v6) && in check_exempt_conflict_v6()
1159 !IN6_ARE_ADDR_EQUAL(&connp->conn_laddr_v6, in check_exempt_conflict_v6()
1175 ipcl_bind_insert(conn_t *connp) in ipcl_bind_insert() argument
1177 if (connp->conn_ipversion == IPV6_VERSION) in ipcl_bind_insert()
1178 return (ipcl_bind_insert_v6(connp)); in ipcl_bind_insert()
1180 return (ipcl_bind_insert_v4(connp)); in ipcl_bind_insert()
1184 ipcl_bind_insert_v4(conn_t *connp) in ipcl_bind_insert_v4() argument
1188 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ipcl_bind_insert_v4()
1189 uint16_t lport = connp->conn_lport; in ipcl_bind_insert_v4()
1190 uint8_t protocol = connp->conn_proto; in ipcl_bind_insert_v4()
1192 if (IPCL_IS_IPTUN(connp)) in ipcl_bind_insert_v4()
1193 return (ipcl_iptun_hash_insert(connp, ipst)); in ipcl_bind_insert_v4()
1198 check_exempt_conflict_v4(connp, ipst)) in ipcl_bind_insert_v4()
1209 if (connp->conn_faddr_v4 != INADDR_ANY) { in ipcl_bind_insert_v4()
1210 IPCL_HASH_INSERT_CONNECTED(connfp, connp); in ipcl_bind_insert_v4()
1211 } else if (connp->conn_laddr_v4 != INADDR_ANY) { in ipcl_bind_insert_v4()
1212 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_bind_insert_v4()
1214 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_bind_insert_v4()
1222 ASSERT(connp->conn_zoneid != ALL_ZONES); in ipcl_bind_insert_v4()
1225 if (connp->conn_laddr_v4 != INADDR_ANY) { in ipcl_bind_insert_v4()
1226 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_bind_insert_v4()
1228 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_bind_insert_v4()
1231 ASSERT(connp->conn_ipversion == IPV4_VERSION); in ipcl_bind_insert_v4()
1232 connp->conn_flags |= IPCL_CL_LISTENER; in ipcl_bind_insert_v4()
1234 connp->conn_netstack->netstack_stackid, in ipcl_bind_insert_v4()
1236 (uint8_t *)&connp->conn_bound_addr_v4, lport, NULL); in ipcl_bind_insert_v4()
1241 ret = ipcl_sctp_hash_insert(connp, lport); in ipcl_bind_insert_v4()
1249 ipcl_bind_insert_v6(conn_t *connp) in ipcl_bind_insert_v6() argument
1253 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ipcl_bind_insert_v6()
1254 uint16_t lport = connp->conn_lport; in ipcl_bind_insert_v6()
1255 uint8_t protocol = connp->conn_proto; in ipcl_bind_insert_v6()
1257 if (IPCL_IS_IPTUN(connp)) { in ipcl_bind_insert_v6()
1258 return (ipcl_iptun_hash_insert_v6(connp, ipst)); in ipcl_bind_insert_v6()
1264 check_exempt_conflict_v6(connp, ipst)) in ipcl_bind_insert_v6()
1275 if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_faddr_v6)) { in ipcl_bind_insert_v6()
1276 IPCL_HASH_INSERT_CONNECTED(connfp, connp); in ipcl_bind_insert_v6()
1277 } else if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_laddr_v6)) { in ipcl_bind_insert_v6()
1278 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_bind_insert_v6()
1280 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_bind_insert_v6()
1286 ASSERT(connp->conn_zoneid != ALL_ZONES); in ipcl_bind_insert_v6()
1289 if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_laddr_v6)) { in ipcl_bind_insert_v6()
1290 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_bind_insert_v6()
1292 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_bind_insert_v6()
1298 if (connp->conn_ipversion == IPV6_VERSION) { in ipcl_bind_insert_v6()
1301 (uint8_t *)&connp->conn_bound_addr_v6; in ipcl_bind_insert_v6()
1304 laddrp = (uint8_t *)&connp->conn_bound_addr_v4; in ipcl_bind_insert_v6()
1306 connp->conn_flags |= IPCL_CL_LISTENER; in ipcl_bind_insert_v6()
1308 connp->conn_netstack->netstack_stackid, in ipcl_bind_insert_v6()
1314 ret = ipcl_sctp_hash_insert(connp, lport); in ipcl_bind_insert_v6()
1327 ipcl_conn_insert(conn_t *connp) in ipcl_conn_insert() argument
1329 if (connp->conn_ipversion == IPV6_VERSION) in ipcl_conn_insert()
1330 return (ipcl_conn_insert_v6(connp)); in ipcl_conn_insert()
1332 return (ipcl_conn_insert_v4(connp)); in ipcl_conn_insert()
1336 ipcl_conn_insert_v4(conn_t *connp) in ipcl_conn_insert_v4() argument
1341 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ipcl_conn_insert_v4()
1342 uint16_t lport = connp->conn_lport; in ipcl_conn_insert_v4()
1343 uint8_t protocol = connp->conn_proto; in ipcl_conn_insert_v4()
1345 if (IPCL_IS_IPTUN(connp)) in ipcl_conn_insert_v4()
1346 return (ipcl_iptun_hash_insert(connp, ipst)); in ipcl_conn_insert_v4()
1360 IPCL_CONN_HASH(connp->conn_faddr_v4, in ipcl_conn_insert_v4()
1361 connp->conn_ports, ipst)]; in ipcl_conn_insert_v4()
1365 if (IPCL_CONN_MATCH(tconnp, connp->conn_proto, in ipcl_conn_insert_v4()
1366 connp->conn_faddr_v4, connp->conn_laddr_v4, in ipcl_conn_insert_v4()
1367 connp->conn_ports) && in ipcl_conn_insert_v4()
1368 IPCL_ZONE_MATCH(tconnp, connp->conn_zoneid)) { in ipcl_conn_insert_v4()
1374 if (connp->conn_fanout != NULL) { in ipcl_conn_insert_v4()
1380 IPCL_HASH_REMOVE(connp); in ipcl_conn_insert_v4()
1384 ASSERT(connp->conn_recv != NULL); in ipcl_conn_insert_v4()
1385 ASSERT(connp->conn_recvicmp != NULL); in ipcl_conn_insert_v4()
1387 IPCL_HASH_INSERT_CONNECTED_LOCKED(connfp, connp); in ipcl_conn_insert_v4()
1396 IPCL_HASH_REMOVE(connp); in ipcl_conn_insert_v4()
1397 ret = ipcl_sctp_hash_insert(connp, lport); in ipcl_conn_insert_v4()
1408 check_exempt_conflict_v4(connp, ipst)) in ipcl_conn_insert_v4()
1420 if (connp->conn_faddr_v4 != INADDR_ANY) { in ipcl_conn_insert_v4()
1421 IPCL_HASH_INSERT_CONNECTED(connfp, connp); in ipcl_conn_insert_v4()
1422 } else if (connp->conn_laddr_v4 != INADDR_ANY) { in ipcl_conn_insert_v4()
1423 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_conn_insert_v4()
1425 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_conn_insert_v4()
1434 ipcl_conn_insert_v6(conn_t *connp) in ipcl_conn_insert_v6() argument
1439 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ipcl_conn_insert_v6()
1440 uint16_t lport = connp->conn_lport; in ipcl_conn_insert_v6()
1441 uint8_t protocol = connp->conn_proto; in ipcl_conn_insert_v6()
1442 uint_t ifindex = connp->conn_bound_if; in ipcl_conn_insert_v6()
1444 if (IPCL_IS_IPTUN(connp)) in ipcl_conn_insert_v6()
1445 return (ipcl_iptun_hash_insert_v6(connp, ipst)); in ipcl_conn_insert_v6()
1460 IPCL_CONN_HASH_V6(connp->conn_faddr_v6, connp->conn_ports, in ipcl_conn_insert_v6()
1466 if (IPCL_CONN_MATCH_V6(tconnp, connp->conn_proto, in ipcl_conn_insert_v6()
1467 connp->conn_faddr_v6, connp->conn_laddr_v6, in ipcl_conn_insert_v6()
1468 connp->conn_ports) && in ipcl_conn_insert_v6()
1471 IPCL_ZONE_MATCH(tconnp, connp->conn_zoneid)) { in ipcl_conn_insert_v6()
1477 if (connp->conn_fanout != NULL) { in ipcl_conn_insert_v6()
1483 IPCL_HASH_REMOVE(connp); in ipcl_conn_insert_v6()
1486 IPCL_HASH_INSERT_CONNECTED_LOCKED(connfp, connp); in ipcl_conn_insert_v6()
1491 IPCL_HASH_REMOVE(connp); in ipcl_conn_insert_v6()
1492 ret = ipcl_sctp_hash_insert(connp, lport); in ipcl_conn_insert_v6()
1497 check_exempt_conflict_v6(connp, ipst)) in ipcl_conn_insert_v6()
1508 if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_faddr_v6)) { in ipcl_conn_insert_v6()
1509 IPCL_HASH_INSERT_CONNECTED(connfp, connp); in ipcl_conn_insert_v6()
1510 } else if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_laddr_v6)) { in ipcl_conn_insert_v6()
1511 IPCL_HASH_INSERT_BOUND(connfp, connp); in ipcl_conn_insert_v6()
1513 IPCL_HASH_INSERT_WILDCARD(connfp, connp); in ipcl_conn_insert_v6()
1540 conn_t *connp; in ipcl_classify_v4() local
1555 for (connp = connfp->connf_head; connp != NULL; in ipcl_classify_v4()
1556 connp = connp->conn_next) { in ipcl_classify_v4()
1557 if (IPCL_CONN_MATCH(connp, protocol, in ipcl_classify_v4()
1559 (connp->conn_incoming_ifindex == 0 || in ipcl_classify_v4()
1560 connp->conn_incoming_ifindex == ifindex) && in ipcl_classify_v4()
1561 (connp->conn_zoneid == zoneid || in ipcl_classify_v4()
1562 connp->conn_allzones || in ipcl_classify_v4()
1563 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_v4()
1569 if (connp != NULL) { in ipcl_classify_v4()
1577 CONN_INC_REF(connp); in ipcl_classify_v4()
1579 return (connp); in ipcl_classify_v4()
1587 for (connp = bind_connfp->connf_head; connp != NULL; in ipcl_classify_v4()
1588 connp = connp->conn_next) { in ipcl_classify_v4()
1589 if (IPCL_BIND_MATCH(connp, protocol, ipha->ipha_dst, in ipcl_classify_v4()
1591 (connp->conn_incoming_ifindex == 0 || in ipcl_classify_v4()
1592 connp->conn_incoming_ifindex == ifindex) && in ipcl_classify_v4()
1593 (connp->conn_zoneid == zoneid || in ipcl_classify_v4()
1594 connp->conn_allzones || in ipcl_classify_v4()
1595 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_v4()
1610 if (connp != NULL && (ira->ira_flags & IRAF_SYSTEM_LABELED) && in ipcl_classify_v4()
1612 ira, connp)) { in ipcl_classify_v4()
1615 conn_t *, connp, mblk_t *, mp); in ipcl_classify_v4()
1616 connp = NULL; in ipcl_classify_v4()
1619 if (connp != NULL) { in ipcl_classify_v4()
1621 CONN_INC_REF(connp); in ipcl_classify_v4()
1623 return (connp); in ipcl_classify_v4()
1634 for (connp = connfp->connf_head; connp != NULL; in ipcl_classify_v4()
1635 connp = connp->conn_next) { in ipcl_classify_v4()
1636 if (IPCL_UDP_MATCH(connp, lport, ipha->ipha_dst, in ipcl_classify_v4()
1638 (connp->conn_incoming_ifindex == 0 || in ipcl_classify_v4()
1639 connp->conn_incoming_ifindex == ifindex) && in ipcl_classify_v4()
1640 (connp->conn_zoneid == zoneid || in ipcl_classify_v4()
1641 connp->conn_allzones || in ipcl_classify_v4()
1642 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_v4()
1647 if (connp != NULL && (ira->ira_flags & IRAF_SYSTEM_LABELED) && in ipcl_classify_v4()
1649 ira, connp)) { in ipcl_classify_v4()
1652 conn_t *, connp, mblk_t *, mp); in ipcl_classify_v4()
1653 connp = NULL; in ipcl_classify_v4()
1656 if (connp != NULL) { in ipcl_classify_v4()
1657 CONN_INC_REF(connp); in ipcl_classify_v4()
1659 return (connp); in ipcl_classify_v4()
1688 conn_t *connp; in ipcl_classify_v6() local
1705 for (connp = connfp->connf_head; connp != NULL; in ipcl_classify_v6()
1706 connp = connp->conn_next) { in ipcl_classify_v6()
1707 if (IPCL_CONN_MATCH_V6(connp, protocol, in ipcl_classify_v6()
1709 (connp->conn_incoming_ifindex == 0 || in ipcl_classify_v6()
1710 connp->conn_incoming_ifindex == ifindex) && in ipcl_classify_v6()
1711 (connp->conn_zoneid == zoneid || in ipcl_classify_v6()
1712 connp->conn_allzones || in ipcl_classify_v6()
1713 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_v6()
1719 if (connp != NULL) { in ipcl_classify_v6()
1727 CONN_INC_REF(connp); in ipcl_classify_v6()
1729 return (connp); in ipcl_classify_v6()
1738 for (connp = bind_connfp->connf_head; connp != NULL; in ipcl_classify_v6()
1739 connp = connp->conn_next) { in ipcl_classify_v6()
1740 if (IPCL_BIND_MATCH_V6(connp, protocol, in ipcl_classify_v6()
1742 (connp->conn_incoming_ifindex == 0 || in ipcl_classify_v6()
1743 connp->conn_incoming_ifindex == ifindex) && in ipcl_classify_v6()
1744 (connp->conn_zoneid == zoneid || in ipcl_classify_v6()
1745 connp->conn_allzones || in ipcl_classify_v6()
1746 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_v6()
1752 if (connp != NULL && (ira->ira_flags & IRAF_SYSTEM_LABELED) && in ipcl_classify_v6()
1754 ira, connp)) { in ipcl_classify_v6()
1757 conn_t *, connp, mblk_t *, mp); in ipcl_classify_v6()
1758 connp = NULL; in ipcl_classify_v6()
1761 if (connp != NULL) { in ipcl_classify_v6()
1763 CONN_INC_REF(connp); in ipcl_classify_v6()
1765 return (connp); in ipcl_classify_v6()
1777 for (connp = connfp->connf_head; connp != NULL; in ipcl_classify_v6()
1778 connp = connp->conn_next) { in ipcl_classify_v6()
1779 if (IPCL_UDP_MATCH_V6(connp, lport, ip6h->ip6_dst, in ipcl_classify_v6()
1781 (connp->conn_incoming_ifindex == 0 || in ipcl_classify_v6()
1782 connp->conn_incoming_ifindex == ifindex) && in ipcl_classify_v6()
1783 (connp->conn_zoneid == zoneid || in ipcl_classify_v6()
1784 connp->conn_allzones || in ipcl_classify_v6()
1785 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_v6()
1791 if (connp != NULL && (ira->ira_flags & IRAF_SYSTEM_LABELED) && in ipcl_classify_v6()
1793 ira, connp)) { in ipcl_classify_v6()
1796 conn_t *, connp, mblk_t *, mp); in ipcl_classify_v6()
1797 connp = NULL; in ipcl_classify_v6()
1800 if (connp != NULL) { in ipcl_classify_v6()
1801 CONN_INC_REF(connp); in ipcl_classify_v6()
1803 return (connp); in ipcl_classify_v6()
1843 conn_t *connp; in ipcl_classify_raw() local
1860 for (connp = connfp->connf_head; connp != NULL; in ipcl_classify_raw()
1861 connp = connp->conn_next) { in ipcl_classify_raw()
1863 if (ipversion != connp->conn_ipversion) in ipcl_classify_raw()
1865 if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_faddr_v6) && in ipcl_classify_raw()
1866 !IN6_IS_ADDR_V4MAPPED_ANY(&connp->conn_faddr_v6)) { in ipcl_classify_raw()
1868 if (!IPCL_CONN_MATCH(connp, protocol, in ipcl_classify_raw()
1872 if (!IPCL_CONN_MATCH_V6(connp, protocol, in ipcl_classify_raw()
1878 if (!IPCL_BIND_MATCH(connp, protocol, in ipcl_classify_raw()
1882 if (!IPCL_BIND_MATCH_V6(connp, protocol, in ipcl_classify_raw()
1888 if (connp->conn_zoneid == zoneid || in ipcl_classify_raw()
1889 connp->conn_allzones || in ipcl_classify_raw()
1890 ((connp->conn_mac_mode != CONN_MAC_DEFAULT) && in ipcl_classify_raw()
1896 if (connp != NULL && (ira->ira_flags & IRAF_SYSTEM_LABELED) && in ipcl_classify_raw()
1897 !tsol_receive_local(mp, dst, ipversion, ira, connp)) { in ipcl_classify_raw()
1900 conn_t *, connp, mblk_t *, mp); in ipcl_classify_raw()
1901 connp = NULL; in ipcl_classify_raw()
1904 if (connp != NULL) in ipcl_classify_raw()
1911 for (connp = connfp->connf_head; connp != NULL; in ipcl_classify_raw()
1912 connp = connp->conn_next) { in ipcl_classify_raw()
1914 if (ipversion != connp->conn_ipversion) in ipcl_classify_raw()
1916 if (!IPCL_ZONE_MATCH(connp, zoneid)) in ipcl_classify_raw()
1920 if (IPCL_RAW_MATCH(connp, protocol, ipha->ipha_dst)) in ipcl_classify_raw()
1923 if (IPCL_RAW_MATCH_V6(connp, protocol, ip6h->ip6_dst)) { in ipcl_classify_raw()
1929 if (connp != NULL) in ipcl_classify_raw()
1936 ASSERT(connp != NULL); in ipcl_classify_raw()
1937 CONN_INC_REF(connp); in ipcl_classify_raw()
1939 return (connp); in ipcl_classify_raw()
1947 conn_t *connp = &itc->itc_conn; in tcp_conn_constructor() local
1950 bzero(connp, sizeof (conn_t)); in tcp_conn_constructor()
1953 mutex_init(&connp->conn_lock, NULL, MUTEX_DEFAULT, NULL); in tcp_conn_constructor()
1954 cv_init(&connp->conn_cv, NULL, CV_DEFAULT, NULL); in tcp_conn_constructor()
1955 cv_init(&connp->conn_sq_cv, NULL, CV_DEFAULT, NULL); in tcp_conn_constructor()
1959 connp->conn_tcp = tcp; in tcp_conn_constructor()
1960 connp->conn_flags = IPCL_TCPCONN; in tcp_conn_constructor()
1961 connp->conn_proto = IPPROTO_TCP; in tcp_conn_constructor()
1962 tcp->tcp_connp = connp; in tcp_conn_constructor()
1963 rw_init(&connp->conn_ilg_lock, NULL, RW_DEFAULT, NULL); in tcp_conn_constructor()
1965 connp->conn_ixa = kmem_zalloc(sizeof (ip_xmit_attr_t), kmflags); in tcp_conn_constructor()
1966 if (connp->conn_ixa == NULL) { in tcp_conn_constructor()
1970 connp->conn_ixa->ixa_refcnt = 1; in tcp_conn_constructor()
1971 connp->conn_ixa->ixa_protocol = connp->conn_proto; in tcp_conn_constructor()
1972 connp->conn_ixa->ixa_xmit_hint = CONN_TO_XMIT_HINT(connp); in tcp_conn_constructor()
1981 conn_t *connp = &itc->itc_conn; in tcp_conn_destructor() local
1984 ASSERT(connp->conn_flags & IPCL_TCPCONN); in tcp_conn_destructor()
1985 ASSERT(tcp->tcp_connp == connp); in tcp_conn_destructor()
1986 ASSERT(connp->conn_tcp == tcp); in tcp_conn_destructor()
1988 mutex_destroy(&connp->conn_lock); in tcp_conn_destructor()
1989 cv_destroy(&connp->conn_cv); in tcp_conn_destructor()
1990 cv_destroy(&connp->conn_sq_cv); in tcp_conn_destructor()
1991 rw_destroy(&connp->conn_ilg_lock); in tcp_conn_destructor()
1994 if (connp->conn_ixa != NULL) { in tcp_conn_destructor()
1995 ASSERT(connp->conn_ixa->ixa_refcnt == 1); in tcp_conn_destructor()
1996 ASSERT(connp->conn_ixa->ixa_ire == NULL); in tcp_conn_destructor()
1997 ASSERT(connp->conn_ixa->ixa_nce == NULL); in tcp_conn_destructor()
1998 ixa_refrele(connp->conn_ixa); in tcp_conn_destructor()
2007 conn_t *connp = &itc->itc_conn; in ip_conn_constructor() local
2009 bzero(connp, sizeof (conn_t)); in ip_conn_constructor()
2010 mutex_init(&connp->conn_lock, NULL, MUTEX_DEFAULT, NULL); in ip_conn_constructor()
2011 cv_init(&connp->conn_cv, NULL, CV_DEFAULT, NULL); in ip_conn_constructor()
2012 connp->conn_flags = IPCL_IPCCONN; in ip_conn_constructor()
2013 rw_init(&connp->conn_ilg_lock, NULL, RW_DEFAULT, NULL); in ip_conn_constructor()
2015 connp->conn_ixa = kmem_zalloc(sizeof (ip_xmit_attr_t), kmflags); in ip_conn_constructor()
2016 if (connp->conn_ixa == NULL) in ip_conn_constructor()
2018 connp->conn_ixa->ixa_refcnt = 1; in ip_conn_constructor()
2019 connp->conn_ixa->ixa_xmit_hint = CONN_TO_XMIT_HINT(connp); in ip_conn_constructor()
2028 conn_t *connp = &itc->itc_conn; in ip_conn_destructor() local
2030 ASSERT(connp->conn_flags & IPCL_IPCCONN); in ip_conn_destructor()
2031 ASSERT(connp->conn_priv == NULL); in ip_conn_destructor()
2032 mutex_destroy(&connp->conn_lock); in ip_conn_destructor()
2033 cv_destroy(&connp->conn_cv); in ip_conn_destructor()
2034 rw_destroy(&connp->conn_ilg_lock); in ip_conn_destructor()
2037 if (connp->conn_ixa != NULL) { in ip_conn_destructor()
2038 ASSERT(connp->conn_ixa->ixa_refcnt == 1); in ip_conn_destructor()
2039 ASSERT(connp->conn_ixa->ixa_ire == NULL); in ip_conn_destructor()
2040 ASSERT(connp->conn_ixa->ixa_nce == NULL); in ip_conn_destructor()
2041 ixa_refrele(connp->conn_ixa); in ip_conn_destructor()
2050 conn_t *connp = &itc->itc_conn; in udp_conn_constructor() local
2053 bzero(connp, sizeof (conn_t)); in udp_conn_constructor()
2056 mutex_init(&connp->conn_lock, NULL, MUTEX_DEFAULT, NULL); in udp_conn_constructor()
2057 cv_init(&connp->conn_cv, NULL, CV_DEFAULT, NULL); in udp_conn_constructor()
2058 connp->conn_udp = udp; in udp_conn_constructor()
2059 connp->conn_flags = IPCL_UDPCONN; in udp_conn_constructor()
2060 connp->conn_proto = IPPROTO_UDP; in udp_conn_constructor()
2061 udp->udp_connp = connp; in udp_conn_constructor()
2062 rw_init(&connp->conn_ilg_lock, NULL, RW_DEFAULT, NULL); in udp_conn_constructor()
2063 connp->conn_ixa = kmem_zalloc(sizeof (ip_xmit_attr_t), kmflags); in udp_conn_constructor()
2064 if (connp->conn_ixa == NULL) in udp_conn_constructor()
2066 connp->conn_ixa->ixa_refcnt = 1; in udp_conn_constructor()
2067 connp->conn_ixa->ixa_protocol = connp->conn_proto; in udp_conn_constructor()
2068 connp->conn_ixa->ixa_xmit_hint = CONN_TO_XMIT_HINT(connp); in udp_conn_constructor()
2077 conn_t *connp = &itc->itc_conn; in udp_conn_destructor() local
2080 ASSERT(connp->conn_flags & IPCL_UDPCONN); in udp_conn_destructor()
2081 ASSERT(udp->udp_connp == connp); in udp_conn_destructor()
2082 ASSERT(connp->conn_udp == udp); in udp_conn_destructor()
2083 mutex_destroy(&connp->conn_lock); in udp_conn_destructor()
2084 cv_destroy(&connp->conn_cv); in udp_conn_destructor()
2085 rw_destroy(&connp->conn_ilg_lock); in udp_conn_destructor()
2088 if (connp->conn_ixa != NULL) { in udp_conn_destructor()
2089 ASSERT(connp->conn_ixa->ixa_refcnt == 1); in udp_conn_destructor()
2090 ASSERT(connp->conn_ixa->ixa_ire == NULL); in udp_conn_destructor()
2091 ASSERT(connp->conn_ixa->ixa_nce == NULL); in udp_conn_destructor()
2092 ixa_refrele(connp->conn_ixa); in udp_conn_destructor()
2101 conn_t *connp = &itc->itc_conn; in rawip_conn_constructor() local
2104 bzero(connp, sizeof (conn_t)); in rawip_conn_constructor()
2107 mutex_init(&connp->conn_lock, NULL, MUTEX_DEFAULT, NULL); in rawip_conn_constructor()
2108 cv_init(&connp->conn_cv, NULL, CV_DEFAULT, NULL); in rawip_conn_constructor()
2109 connp->conn_icmp = icmp; in rawip_conn_constructor()
2110 connp->conn_flags = IPCL_RAWIPCONN; in rawip_conn_constructor()
2111 connp->conn_proto = IPPROTO_ICMP; in rawip_conn_constructor()
2112 icmp->icmp_connp = connp; in rawip_conn_constructor()
2113 rw_init(&connp->conn_ilg_lock, NULL, RW_DEFAULT, NULL); in rawip_conn_constructor()
2114 connp->conn_ixa = kmem_zalloc(sizeof (ip_xmit_attr_t), kmflags); in rawip_conn_constructor()
2115 if (connp->conn_ixa == NULL) in rawip_conn_constructor()
2117 connp->conn_ixa->ixa_refcnt = 1; in rawip_conn_constructor()
2118 connp->conn_ixa->ixa_protocol = connp->conn_proto; in rawip_conn_constructor()
2119 connp->conn_ixa->ixa_xmit_hint = CONN_TO_XMIT_HINT(connp); in rawip_conn_constructor()
2128 conn_t *connp = &itc->itc_conn; in rawip_conn_destructor() local
2131 ASSERT(connp->conn_flags & IPCL_RAWIPCONN); in rawip_conn_destructor()
2132 ASSERT(icmp->icmp_connp == connp); in rawip_conn_destructor()
2133 ASSERT(connp->conn_icmp == icmp); in rawip_conn_destructor()
2134 mutex_destroy(&connp->conn_lock); in rawip_conn_destructor()
2135 cv_destroy(&connp->conn_cv); in rawip_conn_destructor()
2136 rw_destroy(&connp->conn_ilg_lock); in rawip_conn_destructor()
2139 if (connp->conn_ixa != NULL) { in rawip_conn_destructor()
2140 ASSERT(connp->conn_ixa->ixa_refcnt == 1); in rawip_conn_destructor()
2141 ASSERT(connp->conn_ixa->ixa_ire == NULL); in rawip_conn_destructor()
2142 ASSERT(connp->conn_ixa->ixa_nce == NULL); in rawip_conn_destructor()
2143 ixa_refrele(connp->conn_ixa); in rawip_conn_destructor()
2152 conn_t *connp = &itc->itc_conn; in rts_conn_constructor() local
2155 bzero(connp, sizeof (conn_t)); in rts_conn_constructor()
2158 mutex_init(&connp->conn_lock, NULL, MUTEX_DEFAULT, NULL); in rts_conn_constructor()
2159 cv_init(&connp->conn_cv, NULL, CV_DEFAULT, NULL); in rts_conn_constructor()
2160 connp->conn_rts = rts; in rts_conn_constructor()
2161 connp->conn_flags = IPCL_RTSCONN; in rts_conn_constructor()
2162 rts->rts_connp = connp; in rts_conn_constructor()
2163 rw_init(&connp->conn_ilg_lock, NULL, RW_DEFAULT, NULL); in rts_conn_constructor()
2164 connp->conn_ixa = kmem_zalloc(sizeof (ip_xmit_attr_t), kmflags); in rts_conn_constructor()
2165 if (connp->conn_ixa == NULL) in rts_conn_constructor()
2167 connp->conn_ixa->ixa_refcnt = 1; in rts_conn_constructor()
2168 connp->conn_ixa->ixa_xmit_hint = CONN_TO_XMIT_HINT(connp); in rts_conn_constructor()
2177 conn_t *connp = &itc->itc_conn; in rts_conn_destructor() local
2180 ASSERT(connp->conn_flags & IPCL_RTSCONN); in rts_conn_destructor()
2181 ASSERT(rts->rts_connp == connp); in rts_conn_destructor()
2182 ASSERT(connp->conn_rts == rts); in rts_conn_destructor()
2183 mutex_destroy(&connp->conn_lock); in rts_conn_destructor()
2184 cv_destroy(&connp->conn_cv); in rts_conn_destructor()
2185 rw_destroy(&connp->conn_ilg_lock); in rts_conn_destructor()
2188 if (connp->conn_ixa != NULL) { in rts_conn_destructor()
2189 ASSERT(connp->conn_ixa->ixa_refcnt == 1); in rts_conn_destructor()
2190 ASSERT(connp->conn_ixa->ixa_ire == NULL); in rts_conn_destructor()
2191 ASSERT(connp->conn_ixa->ixa_nce == NULL); in rts_conn_destructor()
2192 ixa_refrele(connp->conn_ixa); in rts_conn_destructor()
2207 ipcl_conn_cleanup(conn_t *connp) in ipcl_conn_cleanup() argument
2211 ASSERT(connp->conn_latch == NULL); in ipcl_conn_cleanup()
2212 ASSERT(connp->conn_latch_in_policy == NULL); in ipcl_conn_cleanup()
2213 ASSERT(connp->conn_latch_in_action == NULL); in ipcl_conn_cleanup()
2215 ASSERT(connp->conn_rq == NULL); in ipcl_conn_cleanup()
2216 ASSERT(connp->conn_wq == NULL); in ipcl_conn_cleanup()
2218 ASSERT(connp->conn_cred == NULL); in ipcl_conn_cleanup()
2219 ASSERT(connp->conn_g_fanout == NULL); in ipcl_conn_cleanup()
2220 ASSERT(connp->conn_g_next == NULL); in ipcl_conn_cleanup()
2221 ASSERT(connp->conn_g_prev == NULL); in ipcl_conn_cleanup()
2222 ASSERT(connp->conn_policy == NULL); in ipcl_conn_cleanup()
2223 ASSERT(connp->conn_fanout == NULL); in ipcl_conn_cleanup()
2224 ASSERT(connp->conn_next == NULL); in ipcl_conn_cleanup()
2225 ASSERT(connp->conn_prev == NULL); in ipcl_conn_cleanup()
2226 ASSERT(connp->conn_oper_pending_ill == NULL); in ipcl_conn_cleanup()
2227 ASSERT(connp->conn_ilg == NULL); in ipcl_conn_cleanup()
2228 ASSERT(connp->conn_drain_next == NULL); in ipcl_conn_cleanup()
2229 ASSERT(connp->conn_drain_prev == NULL); in ipcl_conn_cleanup()
2232 ASSERT(connp->conn_idl == NULL); in ipcl_conn_cleanup()
2234 ASSERT(connp->conn_ipsec_opt_mp == NULL); in ipcl_conn_cleanup()
2237 ASSERT(connp->conn_netstack == NULL); in ipcl_conn_cleanup()
2240 ASSERT(connp->conn_helper_info == NULL); in ipcl_conn_cleanup()
2241 ASSERT(connp->conn_ixa != NULL); in ipcl_conn_cleanup()
2242 ixa = connp->conn_ixa; in ipcl_conn_cleanup()
2249 bzero(&connp->conn_start_clr, in ipcl_conn_cleanup()
2251 ((uchar_t *)&connp->conn_start_clr - (uchar_t *)connp)); in ipcl_conn_cleanup()
2275 ipcl_globalhash_insert(conn_t *connp) in ipcl_globalhash_insert() argument
2279 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ipcl_globalhash_insert()
2288 connp->conn_g_prev = NULL; in ipcl_globalhash_insert()
2293 connp->conn_state_flags |= CONN_INCIPIENT; in ipcl_globalhash_insert()
2298 connp->conn_g_next = connfp->connf_head; in ipcl_globalhash_insert()
2299 if (connp->conn_g_next != NULL) in ipcl_globalhash_insert()
2300 connp->conn_g_next->conn_g_prev = connp; in ipcl_globalhash_insert()
2301 connfp->connf_head = connp; in ipcl_globalhash_insert()
2304 connp->conn_g_fanout = connfp; in ipcl_globalhash_insert()
2310 ipcl_globalhash_remove(conn_t *connp) in ipcl_globalhash_remove() argument
2319 if (connp->conn_g_fanout == NULL) in ipcl_globalhash_remove()
2322 connfp = connp->conn_g_fanout; in ipcl_globalhash_remove()
2324 if (connp->conn_g_prev != NULL) in ipcl_globalhash_remove()
2325 connp->conn_g_prev->conn_g_next = connp->conn_g_next; in ipcl_globalhash_remove()
2327 connfp->connf_head = connp->conn_g_next; in ipcl_globalhash_remove()
2328 if (connp->conn_g_next != NULL) in ipcl_globalhash_remove()
2329 connp->conn_g_next->conn_g_prev = connp->conn_g_prev; in ipcl_globalhash_remove()
2333 connp->conn_g_next = NULL; in ipcl_globalhash_remove()
2334 connp->conn_g_prev = NULL; in ipcl_globalhash_remove()
2335 connp->conn_g_fanout = NULL; in ipcl_globalhash_remove()
2356 conn_t *connp; in ipcl_walk() local
2362 connp = ipst->ips_ipcl_globalhash_fanout[i].connf_head; in ipcl_walk()
2363 while (connp != NULL) { in ipcl_walk()
2364 mutex_enter(&connp->conn_lock); in ipcl_walk()
2365 if (connp->conn_state_flags & in ipcl_walk()
2367 mutex_exit(&connp->conn_lock); in ipcl_walk()
2368 connp = connp->conn_g_next; in ipcl_walk()
2371 CONN_INC_REF_LOCKED(connp); in ipcl_walk()
2372 mutex_exit(&connp->conn_lock); in ipcl_walk()
2375 (*func)(connp, arg); in ipcl_walk()
2380 prev_connp = connp; in ipcl_walk()
2381 connp = connp->conn_g_next; in ipcl_walk()
2396 ipcl_conn_tcp_lookup_reversed_ipv4(conn_t *connp, ipha_t *ipha, tcpha_t *tcpha, in ipcl_conn_tcp_lookup_reversed_ipv4() argument
2427 (!zone_chk || tconnp->conn_zoneid == connp->conn_zoneid)) { in ipcl_conn_tcp_lookup_reversed_ipv4()
2429 ASSERT(tconnp != connp); in ipcl_conn_tcp_lookup_reversed_ipv4()
2446 ipcl_conn_tcp_lookup_reversed_ipv6(conn_t *connp, ip6_t *ip6h, tcpha_t *tcpha, in ipcl_conn_tcp_lookup_reversed_ipv6() argument
2481 (!zone_chk || tconnp->conn_zoneid == connp->conn_zoneid)) { in ipcl_conn_tcp_lookup_reversed_ipv6()
2483 ASSERT(tconnp != connp); in ipcl_conn_tcp_lookup_reversed_ipv6()
2583 conn_t *connp; in ipcl_lookup_listener_v4() local
2597 for (connp = bind_connfp->connf_head; connp != NULL; in ipcl_lookup_listener_v4()
2598 connp = connp->conn_next) { in ipcl_lookup_listener_v4()
2599 tcp = connp->conn_tcp; in ipcl_lookup_listener_v4()
2600 if (IPCL_BIND_MATCH(connp, IPPROTO_TCP, laddr, lport) && in ipcl_lookup_listener_v4()
2601 IPCL_ZONE_MATCH(connp, zoneid) && in ipcl_lookup_listener_v4()
2603 CONN_INC_REF(connp); in ipcl_lookup_listener_v4()
2605 return (connp); in ipcl_lookup_listener_v4()
2621 conn_t *connp = NULL; in ipcl_lookup_listener_v6() local
2635 for (connp = bind_connfp->connf_head; connp != NULL; in ipcl_lookup_listener_v6()
2636 connp = connp->conn_next) { in ipcl_lookup_listener_v6()
2637 tcp = connp->conn_tcp; in ipcl_lookup_listener_v6()
2638 if (IPCL_BIND_MATCH_V6(connp, IPPROTO_TCP, *laddr, lport) && in ipcl_lookup_listener_v6()
2639 IPCL_ZONE_MATCH(connp, zoneid) && in ipcl_lookup_listener_v6()
2640 (connp->conn_bound_if == 0 || in ipcl_lookup_listener_v6()
2641 connp->conn_bound_if == ifindex) && in ipcl_lookup_listener_v6()
2643 CONN_INC_REF(connp); in ipcl_lookup_listener_v6()
2645 return (connp); in ipcl_lookup_listener_v6()
2665 ipcl_get_next_conn(connf_t *connfp, conn_t *connp, uint32_t conn_flags) in ipcl_get_next_conn() argument
2674 next_connp = (connp == NULL) ? in ipcl_get_next_conn()
2675 connfp->connf_head : connp->conn_g_next; in ipcl_get_next_conn()
2697 if (connp != NULL) in ipcl_get_next_conn()
2698 CONN_DEC_REF(connp); in ipcl_get_next_conn()
2708 conn_trace_ref(conn_t *connp) in conn_trace_ref() argument
2713 ASSERT(MUTEX_HELD(&connp->conn_lock)); in conn_trace_ref()
2714 last = connp->conn_trace_last; in conn_trace_ref()
2719 ctb = &connp->conn_trace_buf[last]; in conn_trace_ref()
2721 connp->conn_trace_last = last; in conn_trace_ref()
2726 conn_untrace_ref(conn_t *connp) in conn_untrace_ref() argument
2731 ASSERT(MUTEX_HELD(&connp->conn_lock)); in conn_untrace_ref()
2732 last = connp->conn_trace_last; in conn_untrace_ref()
2737 ctb = &connp->conn_trace_buf[last]; in conn_untrace_ref()
2739 connp->conn_trace_last = last; in conn_untrace_ref()
2745 conn_get_socket_info(conn_t *connp, mib2_socketInfoEntry_t *sie) in conn_get_socket_info() argument
2759 mutex_enter(&connp->conn_lock); in conn_get_socket_info()
2761 if ((connp->conn_state_flags & CONN_CLOSING)) { in conn_get_socket_info()
2762 mutex_exit(&connp->conn_lock); in conn_get_socket_info()
2779 upcalls = connp->conn_upcalls; in conn_get_socket_info()
2780 upper_handle = connp->conn_upper_handle; in conn_get_socket_info()
2785 } else if (!IPCL_IS_NONSTR(connp) && connp->conn_rq != NULL) { in conn_get_socket_info()
2786 vn = STREAM(connp->conn_rq)->sd_pvnode; in conn_get_socket_info()
2792 mutex_exit(&connp->conn_lock); in conn_get_socket_info()