Module Name: src Committed By: christos Date: Tue Nov 3 22:08:44 UTC 2020
Modified Files: src/sys/compat/linux/common: linux_socket.c Log Message: PR/55780: Bernd Sieker: setsockopt in Linux emulation misses some options To generate a diff of this commit: cvs rdiff -u -r1.151 -r1.152 src/sys/compat/linux/common/linux_socket.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/linux/common/linux_socket.c diff -u src/sys/compat/linux/common/linux_socket.c:1.151 src/sys/compat/linux/common/linux_socket.c:1.152 --- src/sys/compat/linux/common/linux_socket.c:1.151 Sat Oct 24 05:01:56 2020 +++ src/sys/compat/linux/common/linux_socket.c Tue Nov 3 17:08:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_socket.c,v 1.151 2020/10/24 09:01:56 mgorny Exp $ */ +/* $NetBSD: linux_socket.c,v 1.152 2020/11/03 22:08:44 christos Exp $ */ /*- * Copyright (c) 1995, 1998, 2008 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.151 2020/10/24 09:01:56 mgorny Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.152 2020/11/03 22:08:44 christos Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -861,11 +861,11 @@ linux_to_bsd_so_sockopt(int lopt) return SO_DEBUG; case LINUX_SO_REUSEADDR: /* - * Linux does not implement SO_REUSEPORT, but allows reuse of a - * host:port pair through SO_REUSEADDR even if the address is not a - * multicast-address. Effectively, this means that we should use - * SO_REUSEPORT to allow Linux applications to not exit with - * EADDRINUSE + * Linux does not implement SO_REUSEPORT, but allows reuse of + * a host:port pair through SO_REUSEADDR even if the address + * is not a multicast-address. Effectively, this means that we + * should use SO_REUSEPORT to allow Linux applications to not + * exit with EADDRINUSE */ return SO_REUSEPORT; case LINUX_SO_TYPE: @@ -880,20 +880,51 @@ linux_to_bsd_so_sockopt(int lopt) return SO_SNDBUF; case LINUX_SO_RCVBUF: return SO_RCVBUF; - case LINUX_SO_SNDLOWAT: - return SO_SNDLOWAT; - case LINUX_SO_RCVLOWAT: - return SO_RCVLOWAT; case LINUX_SO_KEEPALIVE: return SO_KEEPALIVE; case LINUX_SO_OOBINLINE: return SO_OOBINLINE; + case LINUX_SO_NO_CHECK: + case LINUX_SO_PRIORITY: + return -1; case LINUX_SO_LINGER: return SO_LINGER; + case LINUX_SO_BSDCOMPAT: + case LINUX_SO_PASSCRED: + case LINUX_SO_PEERCRED: + return -1; + case LINUX_SO_RCVLOWAT: + return SO_RCVLOWAT; + case LINUX_SO_SNDLOWAT: + return SO_SNDLOWAT; + case LINUX_SO_RCVTIMEO: + return SO_RCVTIMEO; + case LINUX_SO_SNDTIMEO: + return SO_SNDTIMEO; + case LINUX_SO_SECURITY_AUTHENTICATION: + case LINUX_SO_SECURITY_ENCRYPTION_TRANSPORT: + case LINUX_SO_SECURITY_ENCRYPTION_NETWORK: + case LINUX_SO_BINDTODEVICE: + case LINUX_SO_ATTACH_FILTER: + case LINUX_SO_DETACH_FILTER: + case LINUX_SO_PEERNAME: + return -1; + case LINUX_SO_TIMESTAMP: + return SO_TIMESTAMP; case LINUX_SO_ACCEPTCONN: - return SO_ACCEPTCONN; - case LINUX_SO_PRIORITY: - case LINUX_SO_NO_CHECK: + case LINUX_SO_PEERSEC: + case LINUX_SO_SNDBUFFORCE: + case LINUX_SO_RCVBUFFORCE: + case LINUX_SO_PASSSEC: + case LINUX_SO_TIMESTAMPNS: + case LINUX_SO_MARK: + case LINUX_SO_TIMESTAMPING: + case LINUX_SO_PROTOCOL: + case LINUX_SO_DOMAIN: + case LINUX_SO_RXQ_OVFL: + case LINUX_SO_WIFI_STATUS: + case LINUX_SO_PEEK_OFF: + case LINUX_SO_NOFCS: default: return -1; }