Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soreuseport: infrastructure

Definitions and macros for implementing soreusport.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Tom Herbert and committed by
David S. Miller
055dc21a 4a633a60

+32 -18
+1 -1
arch/alpha/include/uapi/asm/socket.h
··· 19 19 #define SO_BROADCAST 0x0020 20 20 #define SO_LINGER 0x0080 21 21 #define SO_OOBINLINE 0x0100 22 - /* To add :#define SO_REUSEPORT 0x0200 */ 22 + #define SO_REUSEPORT 0x0200 23 23 24 24 #define SO_TYPE 0x1008 25 25 #define SO_ERROR 0x1007
+1 -1
arch/avr32/include/uapi/asm/socket.h
··· 22 22 #define SO_PRIORITY 12 23 23 #define SO_LINGER 13 24 24 #define SO_BSDCOMPAT 14 25 - /* To add :#define SO_REUSEPORT 15 */ 25 + #define SO_REUSEPORT 15 26 26 #define SO_PASSCRED 16 27 27 #define SO_PEERCRED 17 28 28 #define SO_RCVLOWAT 18
+1 -1
arch/cris/include/uapi/asm/socket.h
··· 24 24 #define SO_PRIORITY 12 25 25 #define SO_LINGER 13 26 26 #define SO_BSDCOMPAT 14 27 - /* To add :#define SO_REUSEPORT 15 */ 27 + #define SO_REUSEPORT 15 28 28 #define SO_PASSCRED 16 29 29 #define SO_PEERCRED 17 30 30 #define SO_RCVLOWAT 18
+1 -1
arch/frv/include/uapi/asm/socket.h
··· 22 22 #define SO_PRIORITY 12 23 23 #define SO_LINGER 13 24 24 #define SO_BSDCOMPAT 14 25 - /* To add :#define SO_REUSEPORT 15 */ 25 + #define SO_REUSEPORT 15 26 26 #define SO_PASSCRED 16 27 27 #define SO_PEERCRED 17 28 28 #define SO_RCVLOWAT 18
+1 -1
arch/h8300/include/uapi/asm/socket.h
··· 22 22 #define SO_PRIORITY 12 23 23 #define SO_LINGER 13 24 24 #define SO_BSDCOMPAT 14 25 - /* To add :#define SO_REUSEPORT 15 */ 25 + #define SO_REUSEPORT 15 26 26 #define SO_PASSCRED 16 27 27 #define SO_PEERCRED 17 28 28 #define SO_RCVLOWAT 18
+1 -1
arch/ia64/include/uapi/asm/socket.h
··· 31 31 #define SO_PRIORITY 12 32 32 #define SO_LINGER 13 33 33 #define SO_BSDCOMPAT 14 34 - /* To add :#define SO_REUSEPORT 15 */ 34 + #define SO_REUSEPORT 15 35 35 #define SO_PASSCRED 16 36 36 #define SO_PEERCRED 17 37 37 #define SO_RCVLOWAT 18
+1 -1
arch/m32r/include/uapi/asm/socket.h
··· 22 22 #define SO_PRIORITY 12 23 23 #define SO_LINGER 13 24 24 #define SO_BSDCOMPAT 14 25 - /* To add :#define SO_REUSEPORT 15 */ 25 + #define SO_REUSEPORT 15 26 26 #define SO_PASSCRED 16 27 27 #define SO_PEERCRED 17 28 28 #define SO_RCVLOWAT 18
+1 -2
arch/mips/include/uapi/asm/socket.h
··· 28 28 #define SO_LINGER 0x0080 /* Block on close of a reliable 29 29 socket to transmit pending data. */ 30 30 #define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */ 31 - #if 0 32 - To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ 31 + #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ 33 32 #endif 34 33 35 34 #define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */
+1 -1
arch/mn10300/include/uapi/asm/socket.h
··· 22 22 #define SO_PRIORITY 12 23 23 #define SO_LINGER 13 24 24 #define SO_BSDCOMPAT 14 25 - /* To add :#define SO_REUSEPORT 15 */ 25 + #define SO_REUSEPORT 15 26 26 #define SO_PASSCRED 16 27 27 #define SO_PEERCRED 17 28 28 #define SO_RCVLOWAT 18
+1 -1
arch/parisc/include/uapi/asm/socket.h
··· 13 13 #define SO_BROADCAST 0x0020 14 14 #define SO_LINGER 0x0080 15 15 #define SO_OOBINLINE 0x0100 16 - /* To add :#define SO_REUSEPORT 0x0200 */ 16 + #define SO_REUSEPORT 0x0200 17 17 #define SO_SNDBUF 0x1001 18 18 #define SO_RCVBUF 0x1002 19 19 #define SO_SNDBUFFORCE 0x100a
+1 -1
arch/powerpc/include/uapi/asm/socket.h
··· 29 29 #define SO_PRIORITY 12 30 30 #define SO_LINGER 13 31 31 #define SO_BSDCOMPAT 14 32 - /* To add :#define SO_REUSEPORT 15 */ 32 + #define SO_REUSEPORT 15 33 33 #define SO_RCVLOWAT 16 34 34 #define SO_SNDLOWAT 17 35 35 #define SO_RCVTIMEO 18
+1 -1
arch/s390/include/uapi/asm/socket.h
··· 28 28 #define SO_PRIORITY 12 29 29 #define SO_LINGER 13 30 30 #define SO_BSDCOMPAT 14 31 - /* To add :#define SO_REUSEPORT 15 */ 31 + #define SO_REUSEPORT 15 32 32 #define SO_PASSCRED 16 33 33 #define SO_PEERCRED 17 34 34 #define SO_RCVLOWAT 18
+1 -1
arch/sparc/include/uapi/asm/socket.h
··· 15 15 #define SO_PEERCRED 0x0040 16 16 #define SO_LINGER 0x0080 17 17 #define SO_OOBINLINE 0x0100 18 - /* To add :#define SO_REUSEPORT 0x0200 */ 18 + #define SO_REUSEPORT 0x0200 19 19 #define SO_BSDCOMPAT 0x0400 20 20 #define SO_RCVLOWAT 0x0800 21 21 #define SO_SNDLOWAT 0x1000
+1 -1
arch/xtensa/include/uapi/asm/socket.h
··· 32 32 #define SO_PRIORITY 12 33 33 #define SO_LINGER 13 34 34 #define SO_BSDCOMPAT 14 35 - /* To add :#define SO_REUSEPORT 15 */ 35 + #define SO_REUSEPORT 15 36 36 #define SO_PASSCRED 16 37 37 #define SO_PEERCRED 17 38 38 #define SO_RCVLOWAT 18
+6
include/linux/random.h
··· 74 74 } 75 75 #endif 76 76 77 + /* Pseudo random number generator from numerical recipes. */ 78 + static inline u32 next_pseudo_random32(u32 seed) 79 + { 80 + return seed * 1664525 + 1013904223; 81 + } 82 + 77 83 #endif /* _LINUX_RANDOM_H */
+4 -1
include/net/sock.h
··· 140 140 * @skc_family: network address family 141 141 * @skc_state: Connection state 142 142 * @skc_reuse: %SO_REUSEADDR setting 143 + * @skc_reuseport: %SO_REUSEPORT setting 143 144 * @skc_bound_dev_if: bound device index if != 0 144 145 * @skc_bind_node: bind hash linkage for various protocol lookup tables 145 146 * @skc_portaddr_node: second hash linkage for UDP/UDP-Lite protocol ··· 180 179 181 180 unsigned short skc_family; 182 181 volatile unsigned char skc_state; 183 - unsigned char skc_reuse; 182 + unsigned char skc_reuse:4; 183 + unsigned char skc_reuseport:4; 184 184 int skc_bound_dev_if; 185 185 union { 186 186 struct hlist_node skc_bind_node; ··· 299 297 #define sk_family __sk_common.skc_family 300 298 #define sk_state __sk_common.skc_state 301 299 #define sk_reuse __sk_common.skc_reuse 300 + #define sk_reuseport __sk_common.skc_reuseport 302 301 #define sk_bound_dev_if __sk_common.skc_bound_dev_if 303 302 #define sk_bind_node __sk_common.skc_bind_node 304 303 #define sk_prot __sk_common.skc_prot
+1 -2
include/uapi/asm-generic/socket.h
··· 22 22 #define SO_PRIORITY 12 23 23 #define SO_LINGER 13 24 24 #define SO_BSDCOMPAT 14 25 - /* To add :#define SO_REUSEPORT 15 */ 26 - 25 + #define SO_REUSEPORT 15 27 26 #ifndef SO_PASSCRED /* powerpc only differs in these */ 28 27 #define SO_PASSCRED 16 29 28 #define SO_PEERCRED 17
+7
net/core/sock.c
··· 665 665 case SO_REUSEADDR: 666 666 sk->sk_reuse = (valbool ? SK_CAN_REUSE : SK_NO_REUSE); 667 667 break; 668 + case SO_REUSEPORT: 669 + sk->sk_reuseport = valbool; 670 + break; 668 671 case SO_TYPE: 669 672 case SO_PROTOCOL: 670 673 case SO_DOMAIN: ··· 973 970 974 971 case SO_REUSEADDR: 975 972 v.val = sk->sk_reuse; 973 + break; 974 + 975 + case SO_REUSEPORT: 976 + v.val = sk->sk_reuseport; 976 977 break; 977 978 978 979 case SO_KEEPALIVE: