diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/inet/ip/ip6.c | 2 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_bind.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/inet/tcp/tcp.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/inet/udp/udp.c | 5 |
4 files changed, 12 insertions, 7 deletions
diff --git a/usr/src/uts/common/inet/ip/ip6.c b/usr/src/uts/common/inet/ip/ip6.c index f71b95bf68..c945ddf4cb 100644 --- a/usr/src/uts/common/inet/ip/ip6.c +++ b/usr/src/uts/common/inet/ip/ip6.c @@ -2234,7 +2234,7 @@ ip_bind_laddr_v6(conn_t *connp, mblk_t **mpp, uint8_t protocol, */ connp->conn_fully_bound = B_FALSE; - zoneid = connp->conn_zoneid; + zoneid = IPCL_ZONEID(connp); if (!IN6_IS_ADDR_UNSPECIFIED(v6src)) { src_ire = ire_route_lookup_v6(v6src, 0, 0, diff --git a/usr/src/uts/common/inet/sctp/sctp_bind.c b/usr/src/uts/common/inet/sctp/sctp_bind.c index dfb70fc202..053bde990a 100644 --- a/usr/src/uts/common/inet/sctp/sctp_bind.c +++ b/usr/src/uts/common/inet/sctp/sctp_bind.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -574,7 +574,9 @@ sctp_bindi(sctp_t *sctp, in_port_t port, boolean_t bind_to_req_port_only, * and that the user's requested binding * is permitted. */ - addrtype = tsol_mlp_addr_type(zone->zone_id, + addrtype = tsol_mlp_addr_type( + connp->conn_allzones ? ALL_ZONES : + zone->zone_id, sctp->sctp_ipversion, sctp->sctp_ipversion == IPV4_VERSION ? (void *)&sctp->sctp_ipha->ipha_src : diff --git a/usr/src/uts/common/inet/tcp/tcp.c b/usr/src/uts/common/inet/tcp/tcp.c index f53d0de39f..540809dce5 100644 --- a/usr/src/uts/common/inet/tcp/tcp.c +++ b/usr/src/uts/common/inet/tcp/tcp.c @@ -25932,7 +25932,8 @@ tcp_bind_select_lport(tcp_t *tcp, in_port_t *requested_port_ptr, connp = tcp->tcp_connp; if (connp->conn_anon_mlp && is_system_labeled()) { zone = crgetzone(cr); - addrtype = tsol_mlp_addr_type(zone->zone_id, + addrtype = tsol_mlp_addr_type( + connp->conn_allzones ? ALL_ZONES : zone->zone_id, IPV6_VERSION, &v6addr, tcps->tcps_netstack->netstack_ip); if (addrtype == mlptSingle) { @@ -25983,7 +25984,8 @@ tcp_bind_select_lport(tcp_t *tcp, in_port_t *requested_port_ptr, connp = tcp->tcp_connp; if (is_system_labeled()) { zone = crgetzone(cr); - addrtype = tsol_mlp_addr_type(zone->zone_id, + addrtype = tsol_mlp_addr_type( + connp->conn_allzones ? ALL_ZONES : zone->zone_id, IPV6_VERSION, &v6addr, tcps->tcps_netstack->netstack_ip); if (addrtype == mlptSingle) { diff --git a/usr/src/uts/common/inet/udp/udp.c b/usr/src/uts/common/inet/udp/udp.c index b95b8e0838..c6c9a34fd8 100644 --- a/usr/src/uts/common/inet/udp/udp.c +++ b/usr/src/uts/common/inet/udp/udp.c @@ -8095,8 +8095,9 @@ udp_do_bind(conn_t *connp, struct sockaddr *sa, socklen_t len, cred_t *cr, zone = crgetzone(cr); connp->conn_mlp_type = udp->udp_recvucred ? mlptBoth : mlptSingle; - addrtype = tsol_mlp_addr_type(zone->zone_id, IPV6_VERSION, - &v6src, us->us_netstack->netstack_ip); + addrtype = tsol_mlp_addr_type( + connp->conn_allzones ? ALL_ZONES : zone->zone_id, + IPV6_VERSION, &v6src, us->us_netstack->netstack_ip); if (addrtype == mlptSingle) { rw_enter(&udp->udp_rwlock, RW_WRITER); udp->udp_pending_op = -1; |