From c0ab5b6ced6ec2480ae1dc6def90ae75c454dce7 Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Wed, 23 Jul 2014 20:27:53 +0000 Subject: OS-3234 npm manta install fails - unknown stream file type --- usr/src/lib/brand/lx/lx_brand/common/socket.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'usr/src') 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); } -- cgit v1.2.3