summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp/tcp.c
diff options
context:
space:
mode:
authorsommerfe <none@none>2006-09-29 14:33:05 -0700
committersommerfe <none@none>2006-09-29 14:33:05 -0700
commite78eaa4108d07decebe362a2a54acb49c00bd7a1 (patch)
treeb4efd1366685e814823873aa6f34d290004e2210 /usr/src/uts/common/inet/tcp/tcp.c
parenta255420765b0b2d93935f09709ebad35f6aa7ee3 (diff)
downloadillumos-joyent-e78eaa4108d07decebe362a2a54acb49c00bd7a1.tar.gz
6446620 SO_ALLZONES doesn't seem to work for IPv6
6461365 SO_ALLZONES doesn't get along with SO_DONTROUTE and IP_NEXTHOP
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp.c')
-rw-r--r--usr/src/uts/common/inet/tcp/tcp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp.c b/usr/src/uts/common/inet/tcp/tcp.c
index e382675cf9..533f69b5d7 100644
--- a/usr/src/uts/common/inet/tcp/tcp.c
+++ b/usr/src/uts/common/inet/tcp/tcp.c
@@ -2426,9 +2426,11 @@ tcp_accept_swap(tcp_t *listener, tcp_t *acceptor, tcp_t *eager)
if (eager->tcp_cred != NULL)
crfree(eager->tcp_cred);
eager->tcp_cred = econnp->conn_cred = aconnp->conn_cred;
- econnp->conn_zoneid = aconnp->conn_zoneid;
aconnp->conn_cred = NULL;
+ econnp->conn_zoneid = aconnp->conn_zoneid;
+ econnp->conn_allzones = aconnp->conn_allzones;
+
econnp->conn_mac_exempt = aconnp->conn_mac_exempt;
aconnp->conn_mac_exempt = B_FALSE;
@@ -5574,6 +5576,7 @@ tcp_conn_request(void *arg, mblk_t *mp, void *arg2)
* zone id before the accept is completed in tcp_wput_accept().
*/
econnp->conn_zoneid = connp->conn_zoneid;
+ econnp->conn_allzones = connp->conn_allzones;
/* Copy nexthop information from listener to eager */
if (connp->conn_nexthop_set) {
@@ -17726,7 +17729,9 @@ tcp_wput_accept(queue_t *q, mblk_t *mp)
q->q_qinfo = &tcp_winit;
listener = eager->tcp_listener;
eager->tcp_issocket = B_TRUE;
+
econnp->conn_zoneid = listener->tcp_connp->conn_zoneid;
+ econnp->conn_allzones = listener->tcp_connp->conn_allzones;
/* Put the ref for IP */
CONN_INC_REF(econnp);