···2828#define SO_LINGER 0x0080 /* Block on close of a reliable2929 socket to transmit pending data. */3030#define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */3131-#if 03232-To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */3131+#define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */3332#endif34333534#define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */
···7474}7575#endif76767777+/* Pseudo random number generator from numerical recipes. */7878+static inline u32 next_pseudo_random32(u32 seed)7979+{8080+ return seed * 1664525 + 1013904223;8181+}8282+7783#endif /* _LINUX_RANDOM_H */
+4-1
include/net/sock.h
···140140 * @skc_family: network address family141141 * @skc_state: Connection state142142 * @skc_reuse: %SO_REUSEADDR setting143143+ * @skc_reuseport: %SO_REUSEPORT setting143144 * @skc_bound_dev_if: bound device index if != 0144145 * @skc_bind_node: bind hash linkage for various protocol lookup tables145146 * @skc_portaddr_node: second hash linkage for UDP/UDP-Lite protocol···180179181180 unsigned short skc_family;182181 volatile unsigned char skc_state;183183- unsigned char skc_reuse;182182+ unsigned char skc_reuse:4;183183+ unsigned char skc_reuseport:4;184184 int skc_bound_dev_if;185185 union {186186 struct hlist_node skc_bind_node;···299297#define sk_family __sk_common.skc_family300298#define sk_state __sk_common.skc_state301299#define sk_reuse __sk_common.skc_reuse300300+#define sk_reuseport __sk_common.skc_reuseport302301#define sk_bound_dev_if __sk_common.skc_bound_dev_if303302#define sk_bind_node __sk_common.skc_bind_node304303#define sk_prot __sk_common.skc_prot
+1-2
include/uapi/asm-generic/socket.h
···2222#define SO_PRIORITY 122323#define SO_LINGER 132424#define SO_BSDCOMPAT 142525-/* To add :#define SO_REUSEPORT 15 */2626-2525+#define SO_REUSEPORT 152726#ifndef SO_PASSCRED /* powerpc only differs in these */2827#define SO_PASSCRED 162928#define SO_PEERCRED 17
+7
net/core/sock.c
···665665 case SO_REUSEADDR:666666 sk->sk_reuse = (valbool ? SK_CAN_REUSE : SK_NO_REUSE);667667 break;668668+ case SO_REUSEPORT:669669+ sk->sk_reuseport = valbool;670670+ break;668671 case SO_TYPE:669672 case SO_PROTOCOL:670673 case SO_DOMAIN:···973970974971 case SO_REUSEADDR:975972 v.val = sk->sk_reuse;973973+ break;974974+975975+ case SO_REUSEPORT:976976+ v.val = sk->sk_reuseport;976977 break;977978978979 case SO_KEEPALIVE: