diff --git a/sys/compat/linux/linux_socket.h b/sys/compat/linux/linux_socket.h --- a/sys/compat/linux/linux_socket.h +++ b/sys/compat/linux/linux_socket.h @@ -199,6 +199,7 @@ #define LINUX_SO_SNDBUFFORCE 32 #define LINUX_SO_RCVBUFFORCE 33 #define LINUX_SO_PROTOCOL 38 +#define LINUX_SO_DOMAIN 39 #define LINUX_SO_PEERGROUPS 59 /* Socket options */ diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -553,6 +553,8 @@ return (SO_ACCEPTCONN); case LINUX_SO_PROTOCOL: return (SO_PROTOCOL); + case LINUX_SO_DOMAIN: + return (SO_DOMAIN); } return (-1); } @@ -2008,6 +2010,17 @@ newval = -bsd_to_linux_errno(newval); return (copyout(&newval, PTRIN(args->optval), len)); /* NOTREACHED */ + case SO_DOMAIN: + len = sizeof(newval); + error = kern_getsockopt(td, args->s, level, + name, &newval, UIO_SYSSPACE, &len); + if (error != 0) + return (error); + newval = bsd_to_linux_domain(newval); + if (newval == -1) + return (ENOPROTOOPT); + return (copyout(&newval, PTRIN(args->optval), len)); + /* NOTREACHED */ default: break; }