summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2014-07-23 20:27:53 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2014-07-23 20:27:53 +0000
commitc0ab5b6ced6ec2480ae1dc6def90ae75c454dce7 (patch)
tree9516f25a6a127ea15e61ecdea645f36bf12ed219 /usr/src
parent166683d1d7b0589cdf4164ff060a3f68869544ed (diff)
downloadillumos-joyent-c0ab5b6ced6ec2480ae1dc6def90ae75c454dce7.tar.gz
OS-3234 npm manta install fails - unknown stream file type20140724release-20140724
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/lib/brand/lx/lx_brand/common/socket.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/usr/src/lib/brand/lx/lx_brand/common/socket.c b/usr/src/lib/brand/lx/lx_brand/common/socket.c
index 4dcc174adb..08a7fbc932 100644
--- a/usr/src/lib/brand/lx/lx_brand/common/socket.c
+++ b/usr/src/lib/brand/lx/lx_brand/common/socket.c
@@ -149,6 +149,11 @@ static const int ltos_socktype[LX_SOCK_PACKET + 1] = {
#define LTOS_SOCKTYPE(t) \
((t) <= LX_SOCK_PACKET ? ltos_socktype[(t)] : SOCK_INVAL)
+static const int stol_socktype[SOCK_SEQPACKET + 1] = {
+ SOCK_NOTSUPPORTED, LX_SOCK_DGRAM, LX_SOCK_STREAM, SOCK_NOTSUPPORTED,
+ LX_SOCK_RAW, LX_SOCK_RDM, LX_SOCK_SEQPACKET
+};
+
/*
* Linux socket option type definitions
*
@@ -1644,6 +1649,11 @@ lx_getsockopt(ulong_t *args)
r = getsockopt(sockfd, level, optname, optval, optlenp);
+ if (r == 0 && level == SOL_SOCKET && optname == SO_TYPE) {
+ /* translate our type back to Linux */
+ *(int *)optval = stol_socktype[(*(int *)optval)];
+ }
+
return ((r < 0) ? -errno : r);
}