Lines Matching refs:connp

143 static void	udp_icmp_error_ipv6(conn_t *connp, mblk_t *mp,
156 int udp_opt_set(conn_t *connp, uint_t optset_context,
160 int udp_opt_get(conn_t *connp, int level, int name,
162 static int udp_output_connected(conn_t *connp, mblk_t *mp, cred_t *cr,
164 static int udp_output_lastdst(conn_t *connp, mblk_t *mp, cred_t *cr,
166 static int udp_output_newdst(conn_t *connp, mblk_t *data_mp, sin_t *sin,
394 conn_t *connp = udp->udp_connp;
403 ASSERT(connp->conn_lport != 0);
405 lockp = &us->us_bind_fanout[UDP_BIND_HASH(connp->conn_lport,
427 conn_t *connp = udp->udp_connp;
447 if (V6_OR_V4_INADDR_ANY(connp->conn_bound_addr_v6) &&
485 conn_t *connp;
505 connp = Q_TO_CONN(q);
506 udp = connp->conn_udp;
539 if (connp->conn_family == AF_INET) {
547 ASSERT(connp->conn_family == AF_INET6);
564 if (connp->conn_family != AF_INET ||
578 if (connp->conn_family != AF_INET6 ||
592 error = udp_do_bind(connp, sa, tbr->ADDR_length, cr,
619 conn_t *connp = Q_TO_CONN(q);
676 error = proto_verify_ip_addr(connp->conn_family, sa, len);
682 error = udp_do_connect(connp, sa, len, cr, pid);
694 if (connp->conn_family == AF_INET) {
716 putnext(connp->conn_rq, mp);
717 putnext(connp->conn_rq, mp1);
724 conn_t *connp;
736 connp = Q_TO_CONN(q);
737 udp_do_close(connp);
744 udp_close_free(conn_t *connp)
746 udp_t *udp = connp->conn_udp;
758 ASSERT(udp->udp_connp == connp);
760 udp->udp_connp = connp;
764 udp_do_disconnect(conn_t *connp)
771 udp = connp->conn_udp;
773 mutex_enter(&connp->conn_lock);
775 mutex_exit(&connp->conn_lock);
778 udpf = &us->us_bind_fanout[UDP_BIND_HASH(connp->conn_lport,
781 if (connp->conn_mcbc_bind)
782 connp->conn_saddr_v6 = ipv6_all_zeros;
784 connp->conn_saddr_v6 = connp->conn_bound_addr_v6;
785 connp->conn_laddr_v6 = connp->conn_bound_addr_v6;
786 connp->conn_faddr_v6 = ipv6_all_zeros;
787 connp->conn_fport = 0;
792 if (connp->conn_family == AF_INET6)
793 connp->conn_ipversion = IPV6_VERSION;
795 connp->conn_v6lastdst = ipv6_all_zeros;
796 error = udp_build_hdr_template(connp, &connp->conn_saddr_v6,
797 &connp->conn_faddr_v6, connp->conn_fport, connp->conn_flowinfo);
798 mutex_exit(&connp->conn_lock);
806 return (ip_laddr_fanout_insert(connp));
812 conn_t *connp = Q_TO_CONN(q);
826 error = udp_do_disconnect(connp);
842 udp_disconnect(conn_t *connp)
846 connp->conn_dgram_errind = B_FALSE;
847 error = udp_do_disconnect(connp);
891 conn_t *connp = (conn_t *)arg1;
900 udp_t *udp = connp->conn_udp;
908 udp_icmp_error_ipv6(connp, mp, ira);
933 if (connp->conn_ipversion != IPV4_VERSION)
936 ixa = conn_get_ixa(connp, B_FALSE);
948 mutex_enter(&connp->conn_lock);
949 ipha = (ipha_t *)connp->conn_ht_iphc;
957 mutex_exit(&connp->conn_lock);
983 if (!connp->conn_dgram_errind) {
988 switch (connp->conn_family) {
994 if (IPCL_IS_NONSTR(connp)) {
995 mutex_enter(&connp->conn_lock);
997 if (sin.sin_port == connp->conn_fport &&
999 connp->conn_faddr_v4) {
1000 mutex_exit(&connp->conn_lock);
1001 (*connp->conn_upcalls->su_set_error)
1002 (connp->conn_upper_handle, error);
1009 mutex_exit(&connp->conn_lock);
1014 putnext(connp->conn_rq, mp1);
1022 if (IPCL_IS_NONSTR(connp)) {
1023 mutex_enter(&connp->conn_lock);
1025 if (sin6.sin6_port == connp->conn_fport &&
1027 &connp->conn_faddr_v6)) {
1028 mutex_exit(&connp->conn_lock);
1029 (*connp->conn_upcalls->su_set_error)
1030 (connp->conn_upper_handle, error);
1037 mutex_exit(&connp->conn_lock);
1042 putnext(connp->conn_rq, mp1);
1057 udp_icmp_error_ipv6(conn_t *connp, mblk_t *mp, ip_recv_attr_t *ira)
1067 udp_t *udp = connp->conn_udp;
1121 if (!connp->conn_ipv6_recvpathmtu)
1147 sin6->sin6_addr = connp->conn_faddr_v6;
1165 udp_ulp_recv(connp, newmp, msgdsize(newmp), ira);
1190 if (!connp->conn_dgram_errind) {
1201 if (IPCL_IS_NONSTR(connp)) {
1202 mutex_enter(&connp->conn_lock);
1204 if (sin6.sin6_port == connp->conn_fport &&
1206 &connp->conn_faddr_v6)) {
1207 mutex_exit(&connp->conn_lock);
1208 (*connp->conn_upcalls->su_set_error)
1209 (connp->conn_upper_handle, error);
1216 mutex_exit(&connp->conn_lock);
1221 putnext(connp->conn_rq, mp1);
1241 conn_t *connp = udp->udp_connp;
1259 if (connp->conn_family == AF_INET)
1264 mutex_enter(&connp->conn_lock);
1276 (void) conn_getsockname(connp, sa, &addrlen);
1287 (void) conn_getpeername(connp, sa, &addrlen);
1290 mutex_exit(&connp->conn_lock);
1298 conn_t *connp = udp->udp_connp;
1300 if (connp->conn_family == AF_INET) {
1389 conn_t *connp;
1427 connp = udp_do_open(credp, isv6, KM_SLEEP, &err);
1428 if (connp == NULL) {
1432 udp = connp->conn_udp;
1435 connp->conn_dev = conn_dev;
1436 connp->conn_minor_arena = minor_arena;
1441 q->q_ptr = connp;
1442 WR(q)->q_ptr = connp;
1443 connp->conn_rq = q;
1444 connp->conn_wq = WR(q);
1450 ASSERT(connp->conn_proto == IPPROTO_UDP);
1451 ASSERT(connp->conn_udp == udp);
1452 ASSERT(udp->udp_connp == connp);
1458 WR(q)->q_hiwat = connp->conn_sndbuf;
1459 WR(q)->q_lowat = connp->conn_sndlowat;
1464 (void) proto_set_tx_wroff(q, connp, connp->conn_wroff);
1465 (void) proto_set_rx_hiwat(q, connp,
1466 udp_set_rcv_hiwat(udp, connp->conn_rcvbuf));
1468 mutex_enter(&connp->conn_lock);
1469 connp->conn_state_flags &= ~CONN_INCIPIENT;
1470 mutex_exit(&connp->conn_lock);
1528 udp_opt_get(conn_t *connp, t_scalar_t level, t_scalar_t name,
1532 udp_t *udp = connp->conn_udp;
1537 coas.coa_connp = connp;
1538 coas.coa_ixa = connp->conn_ixa;
1539 coas.coa_ipp = &connp->conn_xmit_ipp;
1554 if (connp->conn_family != AF_INET)
1560 mutex_enter(&connp->conn_lock);
1563 mutex_exit(&connp->conn_lock);
1570 mutex_exit(&connp->conn_lock);
1577 mutex_enter(&connp->conn_lock);
1579 mutex_exit(&connp->conn_lock);
1582 mutex_enter(&connp->conn_lock);
1584 mutex_exit(&connp->conn_lock);
1588 mutex_enter(&connp->conn_lock);
1590 mutex_exit(&connp->conn_lock);
1601 conn_t *connp = Q_TO_CONN(q);
1604 err = udp_opt_get(connp, level, name, ptr);
1615 conn_t *connp = coa->coa_connp;
1617 udp_t *udp = connp->conn_udp;
1653 if (connp->conn_mlp_type == mlptSingle)
1703 if (connp->conn_family != AF_INET) {
1708 mutex_enter(&connp->conn_lock);
1710 mutex_exit(&connp->conn_lock);
1717 mutex_enter(&connp->conn_lock);
1719 mutex_exit(&connp->conn_lock);
1733 udp_opt_set(conn_t *connp, uint_t optset_context, int level,
1737 udp_t *udp = connp->conn_udp;
1791 ASSERT(coa->coa_connp == connp);
1797 coas.coa_connp = connp;
1799 coas.coa_ixa = conn_get_ixa(connp, B_TRUE);
1804 coas.coa_ipp = &connp->conn_xmit_ipp;
1848 mutex_enter(&connp->conn_lock);
1850 if (connp->conn_dhcpinit_ill != NULL) {
1856 ill_t *oill = connp->conn_dhcpinit_ill;
1860 ill_set_inputfn(connp->conn_dhcpinit_ill);
1861 connp->conn_dhcpinit_ill = NULL;
1865 connp->conn_dhcpinit_ill = ill;
1868 mutex_exit(&connp->conn_lock);
1872 mutex_exit(&connp->conn_lock);
1907 mutex_enter(&connp->conn_lock);
1908 connp->conn_v6lastdst = ipv6_all_zeros;
1911 &connp->conn_faddr_v6, &nexthop);
1912 saddr = connp->conn_saddr_v6;
1913 faddr = connp->conn_faddr_v6;
1914 fport = connp->conn_fport;
1915 mutex_exit(&connp->conn_lock);
1919 (void) ip_attr_connect(connp, coa->coa_ixa,
1933 mutex_enter(&connp->conn_lock);
1934 if (!IN6_IS_ADDR_UNSPECIFIED(&connp->conn_faddr_v6) &&
1935 !IN6_IS_ADDR_V4MAPPED_ANY(&connp->conn_faddr_v6)) {
1936 err = udp_build_hdr_template(connp,
1937 &connp->conn_saddr_v6, &connp->conn_faddr_v6,
1938 connp->conn_fport, connp->conn_flowinfo);
1940 mutex_exit(&connp->conn_lock);
1944 connp->conn_v6lastdst = ipv6_all_zeros;
1946 mutex_exit(&connp->conn_lock);
1949 (void) proto_set_rx_hiwat(connp->conn_rq, connp,
1950 connp->conn_rcvbuf);
1952 if ((coa->coa_changed & COA_SNDBUF_CHANGED) && !IPCL_IS_NONSTR(connp)) {
1953 connp->conn_wq->q_hiwat = connp->conn_sndbuf;
1959 mutex_enter(&connp->conn_lock);
1960 wroff = connp->conn_ht_iphc_allocated + us->us_wroff_extra;
1963 if (wroff > connp->conn_wroff) {
1964 connp->conn_wroff = wroff;
1965 mutex_exit(&connp->conn_lock);
1966 (void) proto_set_tx_wroff(connp->conn_rq, connp, wroff);
1968 mutex_exit(&connp->conn_lock);
1980 conn_t *connp = Q_TO_CONN(q);
1983 error = udp_opt_set(connp, optset_context, level, name, inlen, invalp,
1993 udp_prepend_hdr(conn_t *connp, ip_xmit_attr_t *ixa, const ip_pkt_t *ipp,
1999 udp_stack_t *us = connp->conn_netstack->netstack_udp;
2002 udp_t *udp = connp->conn_udp;
2022 udpha->uha_src_port = connp->conn_lport;
2075 udp_build_hdr_template(conn_t *connp, const in6_addr_t *v6src,
2081 ASSERT(MUTEX_HELD(&connp->conn_lock));
2086 connp->conn_v6lastdst = ipv6_all_zeros;
2088 error = conn_build_hdr_template(connp, UDPH_SIZE, 0, v6src, v6dst,
2097 udpha = (udpha_t *)connp->conn_ht_ulp;
2098 udpha->uha_src_port = connp->conn_lport;
2136 udp_ulp_recv(conn_t *connp, mblk_t *mp, uint_t len, ip_recv_attr_t *ira)
2138 if (IPCL_IS_NONSTR(connp)) {
2139 udp_t *udp = connp->conn_udp;
2143 if ((*connp->conn_upcalls->su_recv)
2144 (connp->conn_upper_handle, mp, len, 0, &error, NULL) < 0) {
2150 if ((*connp->conn_upcalls->su_recv)
2151 (connp->conn_upper_handle, NULL, 0, 0,
2155 connp->conn_flow_cntrld =
2165 putnext(connp->conn_rq, mp);
2179 putnext(connp->conn_rq, mp);
2192 conn_t *connp = (conn_t *)arg1;
2207 ASSERT(connp->conn_flags & IPCL_UDPCONN);
2209 udp = connp->conn_udp;
2223 mutex_enter(&connp->conn_lock);
2225 recv_ancillary = connp->conn_recv_ancillary;
2226 mutex_exit(&connp->conn_lock);
2249 connp->conn_family == AF_INET) {
2257 mutex_enter(&connp->conn_lock);
2262 mutex_exit(&connp->conn_lock);
2267 mutex_exit(&connp->conn_lock);
2290 ASSERT(connp->conn_family == AF_INET6);
2308 if (connp->conn_family == AF_INET) {
2319 udi_size += conn_recvancillary_size(connp,
2344 sin->sin_family = connp->conn_family;
2353 conn_recvancillary_add(connp, recv_ancillary, ira,
2369 udi_size += conn_recvancillary_size(connp,
2401 IPCL_ZONEID(connp), us->us_netstack);
2414 &ip6h->ip6_dst, IPCL_ZONEID(connp),
2418 sin6->sin6_family = connp->conn_family;
2421 conn_recvancillary_add(connp, recv_ancillary, ira,
2430 DTRACE_UDP5(receive, mblk_t *, NULL, ip_xmit_attr_t *, connp->conn_ixa,
2440 udp_ulp_recv(connp, mp1, pkt_len, ira);
2499 conn_t *connp = Q_TO_CONN(q);
2502 error = udp_do_unbind(connp);
2601 udp_output_ancillary(conn_t *connp, sin_t *sin, sin6_t *sin6, mblk_t *mp,
2604 udp_t *udp = connp->conn_udp;
2627 ixa = conn_get_ixa_exclusive(connp);
2649 ixa->ixa_cred = connp->conn_cred; /* Restore */
2650 ixa->ixa_cpid = connp->conn_cpid;
2656 mutex_enter(&connp->conn_lock);
2657 error = ip_pkt_copy(&connp->conn_xmit_ipp, ipp, KM_NOSLEEP);
2658 mutex_exit(&connp->conn_lock);
2672 coa->coa_connp = connp;
2679 error = process_auxiliary_options(connp, msg->msg_control,
2686 error = tpi_optcom_buf(connp->conn_wq, tudr_mp,
2701 mutex_enter(&connp->conn_lock);
2711 v6src = connp->conn_saddr_v6;
2737 if (!ip_srcid_find_id(srcid, &v6src, IPCL_ZONEID(connp),
2738 v4mapped, connp->conn_netstack)) {
2740 mutex_exit(&connp->conn_lock);
2747 v6dst = connp->conn_faddr_v6;
2748 dstport = connp->conn_fport;
2749 flowinfo = connp->conn_flowinfo;
2751 mutex_exit(&connp->conn_lock);
2765 error = ip_attr_connect(connp, ixa, &v6src, &v6dst, &v6nexthop, dstport,
2814 if (connp->conn_mlp_type != mlptSingle &&
2833 error = conn_update_label(connp, ixa, &v6dst, ipp);
2840 mp = udp_prepend_hdr(connp, ixa, ipp, &v6src, &v6dst, dstport,
2866 (void) ixa_check_drain_insert(connp, ixa);
2877 mutex_enter(&connp->conn_lock);
2882 if (connp->conn_mcbc_bind)
2883 connp->conn_saddr_v6 = ipv6_all_zeros;
2885 connp->conn_saddr_v6 = connp->conn_bound_addr_v6;
2886 connp->conn_v6lastdst = ipv6_all_zeros;
2887 mutex_exit(&connp->conn_lock);
2892 ixa->ixa_cred = connp->conn_cred; /* Restore */
2893 ixa->ixa_cpid = connp->conn_cpid;
2905 udp_output_connected(conn_t *connp, mblk_t *mp, cred_t *cr, pid_t pid)
2907 udp_t *udp = connp->conn_udp;
2916 ixa = conn_get_ixa(connp, B_FALSE);
2928 mutex_enter(&connp->conn_lock);
2929 mp = udp_prepend_header_template(connp, ixa, mp, &connp->conn_saddr_v6,
2930 connp->conn_fport, connp->conn_flowinfo, &error);
2934 mutex_exit(&connp->conn_lock);
2936 ixa->ixa_cred = connp->conn_cred; /* Restore */
2937 ixa->ixa_cpid = connp->conn_cpid;
2953 saddr = connp->conn_saddr_v6;
2954 faddr = connp->conn_faddr_v6;
2955 fport = connp->conn_fport;
2956 ip_attr_nexthop(&connp->conn_xmit_ipp, ixa, &faddr, &nexthop);
2957 mutex_exit(&connp->conn_lock);
2959 error = ip_attr_connect(connp, ixa, &saddr, &faddr, &nexthop,
2994 ixa->ixa_cred = connp->conn_cred; /* Restore */
2995 ixa->ixa_cpid = connp->conn_cpid;
3003 mutex_exit(&connp->conn_lock);
3020 (void) ixa_check_drain_insert(connp, ixa);
3032 ixa->ixa_cred = connp->conn_cred; /* Restore */
3033 ixa->ixa_cpid = connp->conn_cpid;
3045 udp_output_lastdst(conn_t *connp, mblk_t *mp, cred_t *cr, pid_t pid,
3048 udp_t *udp = connp->conn_udp;
3052 ASSERT(MUTEX_HELD(&connp->conn_lock));
3060 mp = udp_prepend_header_template(connp, ixa, mp, &connp->conn_v6lastsrc,
3061 connp->conn_lastdstport, connp->conn_lastflowinfo, &error);
3065 mutex_exit(&connp->conn_lock);
3067 ixa->ixa_cred = connp->conn_cred; /* Restore */
3068 ixa->ixa_cpid = connp->conn_cpid;
3084 lastsrc = connp->conn_v6lastsrc;
3085 lastdst = connp->conn_v6lastdst;
3086 lastport = connp->conn_lastdstport;
3087 ip_attr_nexthop(&connp->conn_xmit_ipp, ixa, &lastdst, &nexthop);
3088 mutex_exit(&connp->conn_lock);
3090 error = ip_attr_connect(connp, ixa, &lastsrc, &lastdst,
3125 ixa->ixa_cred = connp->conn_cred; /* Restore */
3126 ixa->ixa_cpid = connp->conn_cpid;
3134 mutex_exit(&connp->conn_lock);
3150 (void) ixa_check_drain_insert(connp, ixa);
3161 mutex_enter(&connp->conn_lock);
3166 if (connp->conn_mcbc_bind)
3167 connp->conn_saddr_v6 = ipv6_all_zeros;
3169 connp->conn_saddr_v6 = connp->conn_bound_addr_v6;
3170 connp->conn_v6lastdst = ipv6_all_zeros;
3171 mutex_exit(&connp->conn_lock);
3175 ixa->ixa_cred = connp->conn_cred; /* Restore */
3176 ixa->ixa_cpid = connp->conn_cpid;
3191 udp_prepend_header_template(conn_t *connp, ip_xmit_attr_t *ixa, mblk_t *mp,
3194 udp_t *udp = connp->conn_udp;
3206 ASSERT(MUTEX_HELD(&connp->conn_lock));
3211 copylen = connp->conn_ht_iphc_len;
3238 bcopy(connp->conn_ht_iphc, iph, copylen);
3239 ip_hdr_length = (uint_t)(connp->conn_ht_ulp - connp->conn_ht_iphc);
3255 cksum += connp->conn_sum;
3259 ipp = &connp->conn_xmit_ipp;
3313 udp_ud_err_connected(conn_t *connp, t_scalar_t error)
3322 mutex_enter(&connp->conn_lock);
3324 if (connp->conn_family == AF_INET) {
3328 sin->sin_port = connp->conn_fport;
3329 sin->sin_addr.s_addr = connp->conn_faddr_v4;
3336 sin6->sin6_port = connp->conn_fport;
3337 sin6->sin6_flowinfo = connp->conn_flowinfo;
3338 sin6->sin6_addr = connp->conn_faddr_v6;
3339 if (IN6_IS_ADDR_LINKSCOPE(&connp->conn_faddr_v6) &&
3340 (connp->conn_ixa->ixa_flags & IXAF_SCOPEID_SET)) {
3341 sin6->sin6_scope_id = connp->conn_ixa->ixa_scopeid;
3349 mutex_exit(&connp->conn_lock);
3353 putnext(connp->conn_rq, mp1);
3373 conn_t *connp = Q_TO_CONN(q);
3374 udp_t *udp = connp->conn_udp;
3415 error = udp_output_connected(connp, mp, cr, pid);
3418 if (connp->conn_rq != NULL)
3419 udp_ud_err_connected(connp, (t_scalar_t)error);
3465 cr = connp->conn_cred;
3466 pid = connp->conn_cpid;
3482 switch (connp->conn_family) {
3505 if (IN6_IS_ADDR_V4MAPPED(&connp->conn_saddr_v6)) {
3516 if (connp->conn_ipv6_v6only) {
3528 if (!IN6_IS_ADDR_V4MAPPED(&connp->conn_saddr_v6) &&
3529 !IN6_IS_ADDR_UNSPECIFIED(&connp->conn_saddr_v6)) {
3548 !conn_same_as_last_v6(connp, sin6)) {
3553 error = udp_output_ancillary(connp, NULL, sin6,
3564 ixa = conn_get_ixa(connp, B_FALSE);
3569 mutex_enter(&connp->conn_lock);
3571 if (conn_same_as_last_v6(connp, sin6) &&
3572 connp->conn_lastsrcid == srcid &&
3576 error = udp_output_lastdst(connp, data_mp, cr,
3581 error = udp_output_newdst(connp, data_mp, NULL,
3584 ASSERT(MUTEX_NOT_HELD(&connp->conn_lock));
3611 !conn_same_as_last_v4(connp, sin)) {
3616 error = udp_output_ancillary(connp, sin, NULL,
3627 ixa = conn_get_ixa(connp, B_FALSE);
3632 mutex_enter(&connp->conn_lock);
3634 if (conn_same_as_last_v4(connp, sin) &&
3638 error = udp_output_lastdst(connp, data_mp, cr,
3643 error = udp_output_newdst(connp, data_mp, sin,
3646 ASSERT(MUTEX_NOT_HELD(&connp->conn_lock));
3676 udp_output_newdst(conn_t *connp, mblk_t *data_mp, sin_t *sin, sin6_t *sin6,
3681 udp_t *udp = connp->conn_udp;
3690 ASSERT(MUTEX_HELD(&connp->conn_lock));
3713 mutex_exit(&connp->conn_lock);
3730 v6src = connp->conn_saddr_v6;
3758 if (!ip_srcid_find_id(srcid, &v6src, IPCL_ZONEID(connp),
3759 v4mapped, connp->conn_netstack)) {
3761 mutex_exit(&connp->conn_lock);
3768 if (connp->conn_xmit_ipp.ipp_fields & IPPF_ADDR) {
3769 ip_pkt_t *ipp = &connp->conn_xmit_ipp;
3780 ip_attr_nexthop(&connp->conn_xmit_ipp, ixa, &v6dst, &v6nexthop);
3781 mutex_exit(&connp->conn_lock);
3783 error = ip_attr_connect(connp, ixa, &v6src, &v6dst, &v6nexthop, dstport,
3825 CL_INET_UDP_CONNECT(connp, B_TRUE, &v6dst, dstport, error);
3832 mutex_enter(&connp->conn_lock);
3840 mutex_exit(&connp->conn_lock);
3860 if (connp->conn_mlp_type != mlptSingle) {
3861 mutex_exit(&connp->conn_lock);
3877 error = conn_update_label(connp, ixa, &v6dst,
3878 &connp->conn_xmit_ipp);
3880 mutex_exit(&connp->conn_lock);
3884 error = udp_build_hdr_template(connp, &v6src, &v6dst, dstport,
3887 mutex_exit(&connp->conn_lock);
3890 } else if ((connp->conn_xmit_ipp.ipp_fields &
3892 ipversion != connp->conn_lastipversion ||
3893 IN6_IS_ADDR_UNSPECIFIED(&connp->conn_v6lastdst)) {
3895 error = udp_build_hdr_template(connp, &v6src, &v6dst, dstport,
3898 mutex_exit(&connp->conn_lock);
3904 ipha_t *ipha = (ipha_t *)connp->conn_ht_iphc;
3915 ip6_t *ip6h = (ip6_t *)connp->conn_ht_iphc;
3924 oldixa = conn_replace_ixa(connp, ixa);
3925 connp->conn_v6lastdst = v6dst;
3926 connp->conn_lastipversion = ipversion;
3927 connp->conn_lastdstport = dstport;
3928 connp->conn_lastflowinfo = flowinfo;
3929 connp->conn_lastscopeid = ixa->ixa_scopeid;
3930 connp->conn_lastsrcid = srcid;
3932 connp->conn_v6lastsrc = v6src;
3934 data_mp = udp_prepend_header_template(connp, ixa, data_mp, &v6src,
3938 mutex_exit(&connp->conn_lock);
3959 (void) ixa_check_drain_insert(connp, ixa);
3970 mutex_enter(&connp->conn_lock);
3975 if (connp->conn_mcbc_bind)
3976 connp->conn_saddr_v6 = ipv6_all_zeros;
3978 connp->conn_saddr_v6 = connp->conn_bound_addr_v6;
3979 connp->conn_v6lastdst = ipv6_all_zeros;
3980 mutex_exit(&connp->conn_lock);
3984 ixa->ixa_cred = connp->conn_cred; /* Restore */
3985 ixa->ixa_cpid = connp->conn_cpid;
3991 ixa->ixa_cred = connp->conn_cred; /* Restore */
3992 ixa->ixa_cpid = connp->conn_cpid;
4020 conn_t *connp = Q_TO_CONN(q);
4021 udp_t *udp = connp->conn_udp;
4031 mutex_enter(&connp->conn_lock);
4037 cmdp->cb_error = conn_getpeername(connp, data,
4041 cmdp->cb_error = conn_getsockname(connp, data, &cmdp->cb_len);
4047 mutex_exit(&connp->conn_lock);
4055 conn_t *connp = udp->udp_connp;
4057 mutex_enter(&connp->conn_lock);
4059 mutex_exit(&connp->conn_lock);
4068 conn_t *connp = Q_TO_CONN(q);
4069 udp_t *udp = connp->conn_udp;
4248 conn_t *connp = Q_TO_CONN(q);
4249 udp_t *udp = connp->conn_udp;
4297 if (connp->conn_family == AF_INET)
4324 (void) conn_getsockname(connp, (struct sockaddr *)mp1->b_wptr,
4328 (void) conn_getpeername(connp, (struct sockaddr *)mp1->b_wptr,
4538 conn_t *connp;
4565 connp = ipcl_conn_create(IPCL_UDPCONN, flags, ns);
4566 if (connp == NULL) {
4571 udp = connp->conn_udp;
4583 ASSERT(connp->conn_proto == IPPROTO_UDP);
4584 ASSERT(connp->conn_udp == udp);
4585 ASSERT(udp->udp_connp == connp);
4589 connp->conn_ixa->ixa_flags |= IXAF_VERIFY_SOURCE;
4591 connp->conn_family = AF_INET6;
4592 connp->conn_ipversion = IPV6_VERSION;
4593 connp->conn_ixa->ixa_flags &= ~IXAF_IS_IPV4;
4594 connp->conn_default_ttl = us->us_ipv6_hoplimit;
4597 connp->conn_family = AF_INET;
4598 connp->conn_ipversion = IPV4_VERSION;
4599 connp->conn_ixa->ixa_flags |= IXAF_IS_IPV4;
4600 connp->conn_default_ttl = us->us_ipv4_ttl;
4604 ASSERT(connp->conn_ixa->ixa_protocol == connp->conn_proto);
4605 connp->conn_xmit_ipp.ipp_unicast_hops = connp->conn_default_ttl;
4607 connp->conn_ixa->ixa_multicast_ttl = IP_DEFAULT_MULTICAST_TTL;
4608 connp->conn_ixa->ixa_flags |= IXAF_MULTICAST_LOOP | IXAF_SET_ULP_CKSUM;
4610 connp->conn_ixa->ixa_zoneid = zoneid;
4612 connp->conn_zoneid = zoneid;
4619 connp->conn_mac_mode = CONN_MAC_AWARE;
4621 connp->conn_zone_is_global = (crgetzoneid(credp) == GLOBAL_ZONEID);
4625 connp->conn_rcvbuf = us->us_recv_hiwat;
4626 connp->conn_sndbuf = us->us_xmit_hiwat;
4627 connp->conn_sndlowat = us->us_xmit_lowat;
4628 connp->conn_rcvlowat = udp_mod_info.mi_lowat;
4630 connp->conn_wroff = len + us->us_wroff_extra;
4631 connp->conn_so_type = SOCK_DGRAM;
4633 connp->conn_recv = udp_input;
4634 connp->conn_recvicmp = udp_icmp_input;
4636 connp->conn_cred = credp;
4637 connp->conn_cpid = curproc->p_pid;
4638 connp->conn_open_time = ddi_get_lbolt64();
4640 ASSERT(!(connp->conn_ixa->ixa_free_flags & IXA_FREE_CRED));
4641 connp->conn_ixa->ixa_cred = connp->conn_cred;
4642 connp->conn_ixa->ixa_cpid = connp->conn_cpid;
4644 connp->conn_ixa->ixa_tsl = crgetlabel(connp->conn_cred);
4649 connp->conn_ixa->ixa_flags |= IXAF_PMTU_DISCOVERY;
4651 return (connp);
4660 conn_t *connp;
4674 connp = udp_do_open(credp, isv6, flags, errorp);
4675 if (connp == NULL)
4678 udp = connp->conn_udp;
4684 connp->conn_flags |= IPCL_NONSTR;
4691 (void) udp_set_rcv_hiwat(udp, connp->conn_rcvbuf);
4692 udp->udp_rcv_disply_hiwat = connp->conn_rcvbuf;
4694 connp->conn_flow_cntrld = B_FALSE;
4696 mutex_enter(&connp->conn_lock);
4697 connp->conn_state_flags &= ~CONN_INCIPIENT;
4698 mutex_exit(&connp->conn_lock);
4703 return ((sock_lower_handle_t)connp);
4711 conn_t *connp = (conn_t *)proto_handle;
4717 connp->conn_upcalls = sock_upcalls;
4718 connp->conn_upper_handle = sock_handle;
4722 sopp.sopp_wroff = connp->conn_wroff;
4724 sopp.sopp_rxhiwat = connp->conn_rcvbuf;
4725 sopp.sopp_rxlowat = connp->conn_rcvlowat;
4728 (connp->conn_family == AF_INET) ? UDP_MAXPACKET_IPV4 :
4733 (*connp->conn_upcalls->su_set_proto_props)(connp->conn_upper_handle,
4738 udp_do_close(conn_t *connp)
4742 ASSERT(connp != NULL && IPCL_IS_UDP(connp));
4743 udp = connp->conn_udp;
4749 if (connp->conn_ipversion == IPV4_VERSION) {
4751 connp->conn_netstack->netstack_stackid,
4753 (uint8_t *)(&V4_PART_OF_V6(connp->conn_laddr_v6)),
4754 (in_port_t)connp->conn_lport, NULL);
4757 connp->conn_netstack->netstack_stackid,
4759 (uint8_t *)&(connp->conn_laddr_v6),
4760 (in_port_t)connp->conn_lport, NULL);
4766 ip_quiesce_conn(connp);
4768 if (!IPCL_IS_NONSTR(connp)) {
4769 ASSERT(connp->conn_wq != NULL);
4770 ASSERT(connp->conn_rq != NULL);
4771 qprocsoff(connp->conn_rq);
4774 udp_close_free(connp);
4778 * delete the things hanging off the connp, and finally the connp.
4779 * We removed this connp from the fanout list, it cannot be
4786 ASSERT(connp->conn_ref == 1);
4788 if (!IPCL_IS_NONSTR(connp)) {
4789 inet_minor_free(connp->conn_minor_arena, connp->conn_dev);
4791 ip_free_helper_stream(connp);
4794 connp->conn_ref--;
4795 ipcl_conn_destroy(connp);
4802 conn_t *connp = (conn_t *)proto_handle;
4807 udp_do_close(connp);
4812 udp_do_bind(conn_t *connp, struct sockaddr *sa, socklen_t len, cred_t *cr,
4817 udp_t *udp = connp->conn_udp;
4829 zoneid_t zoneid = IPCL_ZONEID(connp);
4830 ip_stack_t *ipst = connp->conn_netstack->netstack_ip;
4842 if (connp->conn_family != AF_INET ||
4861 if (connp->conn_family != AF_INET6 ||
4867 if (connp->conn_ipv6_v6only)
4909 if (connp->conn_anon_priv_bind) {
4948 mutex_enter(&connp->conn_lock);
4950 mutex_exit(&connp->conn_lock);
4962 if (connp->conn_family == AF_INET) {
4964 ASSERT(connp->conn_ixa->ixa_flags & IXAF_IS_IPV4);
4971 connp->conn_ipversion = IPV4_VERSION;
4972 connp->conn_ixa->ixa_flags |= IXAF_IS_IPV4;
4974 connp->conn_ipversion = IPV6_VERSION;
4975 connp->conn_ixa->ixa_flags &= ~IXAF_IS_IPV4;
5002 if (connp->conn_anon_priv_bind) {
5041 if (!IPCL_BIND_ZONE_MATCH(connp1, connp))
5063 if (connp1->conn_exclbind || connp->conn_exclbind ||
5064 IPCL_CONNS_MAC(udp1->udp_connp, connp)) {
5081 if (connp->conn_ipversion != connp1->conn_ipversion) {
5118 (connp->conn_reuseaddr && requested_port != 0)) {
5141 mutex_exit(&connp->conn_lock);
5145 if (connp->conn_anon_priv_bind) {
5170 mutex_exit(&connp->conn_lock);
5183 connp->conn_bound_addr_v6 = v6src;
5184 connp->conn_laddr_v6 = v6src;
5186 connp->conn_ixa->ixa_flags |= IXAF_SCOPEID_SET;
5187 connp->conn_ixa->ixa_scopeid = scopeid;
5188 connp->conn_incoming_ifindex = scopeid;
5190 connp->conn_ixa->ixa_flags &= ~IXAF_SCOPEID_SET;
5191 connp->conn_incoming_ifindex = connp->conn_bound_if;
5197 connp->conn_saddr_v6 = v6src;
5198 connp->conn_mcbc_bind = B_FALSE;
5203 connp->conn_saddr_v6 = ipv6_all_zeros;
5204 connp->conn_mcbc_bind = B_TRUE;
5209 connp->conn_lport = lport;
5215 if ((requested_port == 0) && (!connp->conn_anon_priv_bind)) {
5220 if (connp->conn_family == AF_INET) {
5221 sin->sin_port = connp->conn_lport;
5223 sin6->sin6_port = connp->conn_lport;
5228 mutex_exit(&connp->conn_lock);
5234 if (connp->conn_ipversion == IPV4_VERSION) {
5235 (*cl_inet_bind)(connp->conn_netstack->netstack_stackid,
5237 (in_port_t)connp->conn_lport, NULL);
5239 (*cl_inet_bind)(connp->conn_netstack->netstack_stackid,
5241 (in_port_t)connp->conn_lport, NULL);
5245 mutex_enter(&connp->conn_lock);
5246 connp->conn_anon_port = (is_system_labeled() && requested_port == 0);
5247 if (is_system_labeled() && (!connp->conn_anon_port ||
5248 connp->conn_anon_mlp)) {
5253 connp->conn_mlp_type =
5254 connp->conn_recv_ancillary.crb_recvucred ? mlptBoth :
5257 connp->conn_allzones ? ALL_ZONES : zone->zone_id,
5261 mutex_exit(&connp->conn_lock);
5264 mlpport = connp->conn_anon_port ? PMAPPORT : port;
5273 connp->conn_mlp_type == mlptSingle) {
5275 mutex_exit(&connp->conn_lock);
5285 if (connp->conn_debug) {
5292 mutex_exit(&connp->conn_lock);
5310 if (connp->conn_zoneid != mlpzone) {
5311 if (connp->conn_debug) {
5317 mlpport, connp->conn_zoneid,
5321 mutex_exit(&connp->conn_lock);
5325 if (connp->conn_anon_port) {
5326 error = tsol_mlp_anon(zone, mlptype, connp->conn_proto,
5329 if (connp->conn_debug) {
5336 mutex_exit(&connp->conn_lock);
5340 connp->conn_mlp_type = mlptype;
5350 error = udp_build_hdr_template(connp, &connp->conn_saddr_v6,
5351 &connp->conn_faddr_v6, connp->conn_fport, connp->conn_flowinfo);
5353 mutex_exit(&connp->conn_lock);
5357 connp->conn_faddr_v6 = ipv6_all_zeros;
5358 connp->conn_fport = 0;
5359 connp->conn_v6lastdst = ipv6_all_zeros;
5360 mutex_exit(&connp->conn_lock);
5362 error = ip_laddr_fanout_insert(connp);
5371 mutex_enter(&connp->conn_lock);
5373 UDP_BIND_HASH(connp->conn_lport,
5376 connp->conn_saddr_v6 = ipv6_all_zeros;
5377 connp->conn_bound_addr_v6 = ipv6_all_zeros;
5378 connp->conn_laddr_v6 = ipv6_all_zeros;
5380 connp->conn_ixa->ixa_flags &= ~IXAF_SCOPEID_SET;
5381 connp->conn_incoming_ifindex = connp->conn_bound_if;
5385 connp->conn_lport = 0;
5387 connp->conn_anon_port = B_FALSE;
5388 connp->conn_mlp_type = mlptSingle;
5390 connp->conn_v6lastdst = ipv6_all_zeros;
5393 (void) udp_build_hdr_template(connp, &connp->conn_saddr_v6,
5394 &connp->conn_faddr_v6, connp->conn_fport, connp->conn_flowinfo);
5395 mutex_exit(&connp->conn_lock);
5404 conn_t *connp;
5409 connp = (conn_t *)proto_handle;
5412 error = udp_do_unbind(connp);
5414 error = udp_do_bind(connp, sa, len, cr, B_TRUE);
5427 udp_implicit_bind(conn_t *connp, cred_t *cr)
5438 if (connp->conn_family == AF_INET) {
5445 ASSERT(connp->conn_family == AF_INET6);
5453 error = udp_do_bind(connp, (struct sockaddr *)&sin6addr, len,
5463 udp_do_unbind(conn_t *connp)
5465 udp_t *udp = connp->conn_udp;
5473 if (connp->conn_ipversion == IPV4_VERSION) {
5475 connp->conn_netstack->netstack_stackid,
5477 (uint8_t *)(&V4_PART_OF_V6(connp->conn_laddr_v6)),
5478 (in_port_t)connp->conn_lport, NULL);
5481 connp->conn_netstack->netstack_stackid,
5483 (uint8_t *)&(connp->conn_laddr_v6),
5484 (in_port_t)connp->conn_lport, NULL);
5488 mutex_enter(&connp->conn_lock);
5491 mutex_exit(&connp->conn_lock);
5494 udpf = &us->us_bind_fanout[UDP_BIND_HASH(connp->conn_lport,
5498 connp->conn_saddr_v6 = ipv6_all_zeros;
5499 connp->conn_bound_addr_v6 = ipv6_all_zeros;
5500 connp->conn_laddr_v6 = ipv6_all_zeros;
5501 connp->conn_mcbc_bind = B_FALSE;
5502 connp->conn_lport = 0;
5504 connp->conn_faddr_v6 = ipv6_all_zeros;
5505 connp->conn_fport = 0;
5508 connp->conn_v6lastdst = ipv6_all_zeros;
5511 (void) udp_build_hdr_template(connp, &connp->conn_saddr_v6,
5512 &connp->conn_faddr_v6, connp->conn_fport, connp->conn_flowinfo);
5513 mutex_exit(&connp->conn_lock);
5515 ip_unbind(connp);
5524 udp_do_connect(conn_t *connp, const struct sockaddr *sa, socklen_t len,
5543 in6_addr_t v6src = connp->conn_saddr_v6;
5546 udp = connp->conn_udp;
5564 ASSERT(connp->conn_ipversion == IPV4_VERSION);
5575 if (!ip_srcid_find_id(srcid, &v6src, IPCL_ZONEID(connp),
5576 v4mapped, connp->conn_netstack)) {
5582 if (connp->conn_ipv6_v6only)
5591 &connp->conn_bound_addr_v6) &&
5592 !IN6_IS_ADDR_V4MAPPED(&connp->conn_bound_addr_v6)) {
5619 ixa = conn_get_ixa(connp, B_FALSE);
5623 mutex_enter(&connp->conn_lock);
5630 mutex_exit(&connp->conn_lock);
5636 ASSERT(connp->conn_lport != 0 && udp->udp_ptpbhn != NULL);
5638 udpf = &us->us_bind_fanout[UDP_BIND_HASH(connp->conn_lport,
5644 if (connp->conn_mcbc_bind)
5645 connp->conn_saddr_v6 = ipv6_all_zeros;
5647 connp->conn_saddr_v6 = connp->conn_bound_addr_v6;
5648 connp->conn_laddr_v6 = connp->conn_bound_addr_v6;
5649 connp->conn_faddr_v6 = ipv6_all_zeros;
5650 connp->conn_fport = 0;
5654 connp->conn_fport = dstport;
5655 connp->conn_ipversion = ipversion;
5665 if (connp->conn_family == AF_INET) {
5671 connp->conn_faddr_v6 = v6dst;
5672 connp->conn_flowinfo = 0;
5674 ASSERT(connp->conn_ipversion == IPV6_VERSION);
5684 connp->conn_faddr_v6 = v6dst;
5685 connp->conn_flowinfo = flowinfo;
5692 if (connp->conn_cred != cr) {
5694 crfree(connp->conn_cred);
5695 connp->conn_cred = cr;
5697 connp->conn_cpid = pid;
5709 connp->conn_incoming_ifindex = scopeid;
5712 connp->conn_incoming_ifindex = connp->conn_bound_if;
5720 connp->conn_v6lastdst = ipv6_all_zeros;
5723 error = conn_connect(connp, NULL, IPDF_ALLOW_MCBC);
5724 mutex_exit(&connp->conn_lock);
5732 error = ipcl_conn_insert(connp);
5736 mutex_enter(&connp->conn_lock);
5737 error = udp_build_hdr_template(connp, &connp->conn_saddr_v6,
5738 &connp->conn_faddr_v6, connp->conn_fport, connp->conn_flowinfo);
5740 mutex_exit(&connp->conn_lock);
5746 connp->conn_v6lastdst = connp->conn_faddr_v6;
5747 connp->conn_lastipversion = connp->conn_ipversion;
5748 connp->conn_lastdstport = connp->conn_fport;
5749 connp->conn_lastflowinfo = connp->conn_flowinfo;
5750 connp->conn_lastscopeid = scopeid;
5751 connp->conn_lastsrcid = srcid;
5753 connp->conn_v6lastsrc = v6src;
5755 oldixa = conn_replace_ixa(connp, ixa);
5756 mutex_exit(&connp->conn_lock);
5773 if (connp->conn_lport != connp1->conn_lport ||
5774 connp->conn_ipversion != connp1->conn_ipversion ||
5776 !IN6_ARE_ADDR_EQUAL(&connp->conn_laddr_v6,
5779 !(IPCL_ZONE_MATCH(connp, connp1->conn_zoneid) ||
5780 IPCL_ZONE_MATCH(connp1, connp->conn_zoneid)))
5787 CL_INET_UDP_CONNECT(connp, B_TRUE, &v6dst, dstport, error);
5802 mutex_enter(&connp->conn_lock);
5805 connp->conn_faddr_v6 = ipv6_all_zeros;
5806 connp->conn_fport = 0;
5808 if (connp->conn_mcbc_bind)
5809 connp->conn_saddr_v6 = ipv6_all_zeros;
5811 connp->conn_saddr_v6 = connp->conn_bound_addr_v6;
5812 connp->conn_laddr_v6 = connp->conn_bound_addr_v6;
5815 connp->conn_v6lastdst = ipv6_all_zeros;
5816 connp->conn_flowinfo = 0;
5818 (void) udp_build_hdr_template(connp, &connp->conn_saddr_v6,
5819 &connp->conn_faddr_v6, connp->conn_fport, connp->conn_flowinfo);
5820 mutex_exit(&connp->conn_lock);
5828 conn_t *connp = (conn_t *)proto_handle;
5829 udp_t *udp = connp->conn_udp;
5845 error = udp_disconnect(connp);
5849 error = proto_verify_ip_addr(connp->conn_family, sa, len);
5855 error = udp_implicit_bind(connp, cr);
5868 connp->conn_dgram_errind = B_TRUE;
5870 error = udp_do_connect(connp, sa, len, cr, pid);
5875 unbind_err = udp_do_unbind(connp);
5881 (*connp->conn_upcalls->su_connected)
5882 (connp->conn_upper_handle, 0, NULL, -1);
5906 conn_t *connp = (conn_t *)proto_handle;
5907 udp_t *udp = connp->conn_udp;
5921 error = udp_implicit_bind(connp, cr);
5940 error = udp_output_ancillary(connp, NULL, NULL, mp,
5943 error = udp_output_connected(connp, mp, cr, pid);
5954 error = proto_verify_ip_addr(connp->conn_family,
5960 switch (connp->conn_family) {
5979 if (IN6_IS_ADDR_V4MAPPED(&connp->conn_saddr_v6)) {
5987 if (connp->conn_ipv6_v6only) {
5999 if (!IN6_IS_ADDR_V4MAPPED(&connp->conn_saddr_v6) &&
6000 !IN6_IS_ADDR_UNSPECIFIED(&connp->conn_saddr_v6)) {
6019 ixa = conn_get_ixa(connp, B_FALSE);
6027 mutex_enter(&connp->conn_lock);
6040 mutex_exit(&connp->conn_lock);
6049 mutex_exit(&connp->conn_lock);
6051 error = udp_output_ancillary(connp, NULL, sin6, mp,
6053 } else if (conn_same_as_last_v6(connp, sin6) &&
6054 connp->conn_lastsrcid == srcid &&
6057 error = udp_output_lastdst(connp, mp, cr, pid, ixa);
6060 error = udp_output_newdst(connp, mp, NULL, sin6,
6063 ASSERT(MUTEX_NOT_HELD(&connp->conn_lock));
6082 ixa = conn_get_ixa(connp, B_FALSE);
6090 mutex_enter(&connp->conn_lock);
6101 mutex_exit(&connp->conn_lock);
6109 mutex_exit(&connp->conn_lock);
6111 error = udp_output_ancillary(connp, sin, NULL, mp,
6113 } else if (conn_same_as_last_v4(connp, sin) &&
6116 error = udp_output_lastdst(connp, mp, cr, pid, ixa);
6119 error = udp_output_newdst(connp, mp, sin, NULL,
6122 ASSERT(MUTEX_NOT_HELD(&connp->conn_lock));
6137 conn_t *connp = (conn_t *)proto_handle;
6147 udp = connp->conn_udp;
6154 connp->conn_dev = (dev_t)RD(q)->q_ptr;
6155 connp->conn_minor_arena = WR(q)->q_ptr;
6157 RD(q)->q_ptr = WR(q)->q_ptr = connp;
6161 connp->conn_rq = RD(q);
6162 connp->conn_wq = WR(q);
6169 stropt->so_wroff = connp->conn_wroff;
6176 ip_free_helper_stream(connp);
6187 (void) udp_getsockname((sock_lower_handle_t)connp,
6189 error = udp_getpeername((sock_lower_handle_t)connp,
6195 if (connp->conn_dgram_errind)
6197 if (connp->conn_ixa->ixa_flags & IXAF_DONTROUTE)
6200 mp = (*quiesced_cb)(connp->conn_upper_handle, arg, &tca,
6226 mutex_enter(&connp->conn_lock);
6227 connp->conn_flags &= ~IPCL_NONSTR;
6228 mutex_exit(&connp->conn_lock);
6232 ASSERT(connp->conn_ref >= 1);
6242 conn_t *connp = (conn_t *)proto_handle;
6243 udp_t *udp = connp->conn_udp;
6249 mutex_enter(&connp->conn_lock);
6253 error = conn_getpeername(connp, sa, salenp);
6254 mutex_exit(&connp->conn_lock);
6263 conn_t *connp = (conn_t *)proto_handle;
6269 mutex_enter(&connp->conn_lock);
6270 error = conn_getsockname(connp, sa, salenp);
6271 mutex_exit(&connp->conn_lock);
6279 conn_t *connp = (conn_t *)proto_handle;
6299 len = udp_opt_get(connp, level, option_name, optvalp_buf);
6321 conn_t *connp = (conn_t *)proto_handle;
6338 error = udp_opt_set(connp, SETFN_OPTCOM_NEGOTIATE, level, option_name,
6350 conn_t *connp = (conn_t *)proto_handle;
6351 udp_t *udp = connp->conn_udp;
6354 connp->conn_flow_cntrld = B_FALSE;
6362 conn_t *connp = (conn_t *)proto_handle;
6369 (*connp->conn_upcalls->su_opctl)(connp->conn_upper_handle,
6373 (*connp->conn_upcalls->su_opctl)(connp->conn_upper_handle,
6382 conn_t *connp = (conn_t *)proto_handle;
6393 if (connp->conn_helper_info == NULL) {
6394 udp_stack_t *us = connp->conn_udp->udp_us;
6401 error = ip_create_helper_stream(connp, us->us_ldi_ident);
6421 error = ldi_ioctl(connp->conn_helper_info->iphs_handle,