summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/inet/ip/ip6.c2
-rw-r--r--usr/src/uts/common/inet/sctp/sctp_bind.c6
-rw-r--r--usr/src/uts/common/inet/tcp/tcp.c6
-rw-r--r--usr/src/uts/common/inet/udp/udp.c5
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;