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>
This commit is contained in:
parent
4a633a602c
commit
055dc21a1d
18 changed files with 32 additions and 18 deletions
|
@ -19,7 +19,7 @@
|
|||
#define SO_BROADCAST 0x0020
|
||||
#define SO_LINGER 0x0080
|
||||
#define SO_OOBINLINE 0x0100
|
||||
/* To add :#define SO_REUSEPORT 0x0200 */
|
||||
#define SO_REUSEPORT 0x0200
|
||||
|
||||
#define SO_TYPE 0x1008
|
||||
#define SO_ERROR 0x1007
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
#define SO_LINGER 0x0080 /* Block on close of a reliable
|
||||
socket to transmit pending data. */
|
||||
#define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */
|
||||
#if 0
|
||||
To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */
|
||||
#define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */
|
||||
#endif
|
||||
|
||||
#define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#define SO_BROADCAST 0x0020
|
||||
#define SO_LINGER 0x0080
|
||||
#define SO_OOBINLINE 0x0100
|
||||
/* To add :#define SO_REUSEPORT 0x0200 */
|
||||
#define SO_REUSEPORT 0x0200
|
||||
#define SO_SNDBUF 0x1001
|
||||
#define SO_RCVBUF 0x1002
|
||||
#define SO_SNDBUFFORCE 0x100a
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_RCVLOWAT 16
|
||||
#define SO_SNDLOWAT 17
|
||||
#define SO_RCVTIMEO 18
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#define SO_PEERCRED 0x0040
|
||||
#define SO_LINGER 0x0080
|
||||
#define SO_OOBINLINE 0x0100
|
||||
/* To add :#define SO_REUSEPORT 0x0200 */
|
||||
#define SO_REUSEPORT 0x0200
|
||||
#define SO_BSDCOMPAT 0x0400
|
||||
#define SO_RCVLOWAT 0x0800
|
||||
#define SO_SNDLOWAT 0x1000
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
#define SO_REUSEPORT 15
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
#define SO_RCVLOWAT 18
|
||||
|
|
|
@ -74,4 +74,10 @@ static inline int arch_get_random_int(unsigned int *v)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Pseudo random number generator from numerical recipes. */
|
||||
static inline u32 next_pseudo_random32(u32 seed)
|
||||
{
|
||||
return seed * 1664525 + 1013904223;
|
||||
}
|
||||
|
||||
#endif /* _LINUX_RANDOM_H */
|
||||
|
|
|
@ -140,6 +140,7 @@ typedef __u64 __bitwise __addrpair;
|
|||
* @skc_family: network address family
|
||||
* @skc_state: Connection state
|
||||
* @skc_reuse: %SO_REUSEADDR setting
|
||||
* @skc_reuseport: %SO_REUSEPORT setting
|
||||
* @skc_bound_dev_if: bound device index if != 0
|
||||
* @skc_bind_node: bind hash linkage for various protocol lookup tables
|
||||
* @skc_portaddr_node: second hash linkage for UDP/UDP-Lite protocol
|
||||
|
@ -179,7 +180,8 @@ struct sock_common {
|
|||
|
||||
unsigned short skc_family;
|
||||
volatile unsigned char skc_state;
|
||||
unsigned char skc_reuse;
|
||||
unsigned char skc_reuse:4;
|
||||
unsigned char skc_reuseport:4;
|
||||
int skc_bound_dev_if;
|
||||
union {
|
||||
struct hlist_node skc_bind_node;
|
||||
|
@ -297,6 +299,7 @@ struct sock {
|
|||
#define sk_family __sk_common.skc_family
|
||||
#define sk_state __sk_common.skc_state
|
||||
#define sk_reuse __sk_common.skc_reuse
|
||||
#define sk_reuseport __sk_common.skc_reuseport
|
||||
#define sk_bound_dev_if __sk_common.skc_bound_dev_if
|
||||
#define sk_bind_node __sk_common.skc_bind_node
|
||||
#define sk_prot __sk_common.skc_prot
|
||||
|
|
|
@ -22,8 +22,7 @@
|
|||
#define SO_PRIORITY 12
|
||||
#define SO_LINGER 13
|
||||
#define SO_BSDCOMPAT 14
|
||||
/* To add :#define SO_REUSEPORT 15 */
|
||||
|
||||
#define SO_REUSEPORT 15
|
||||
#ifndef SO_PASSCRED /* powerpc only differs in these */
|
||||
#define SO_PASSCRED 16
|
||||
#define SO_PEERCRED 17
|
||||
|
|
|
@ -665,6 +665,9 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
|
|||
case SO_REUSEADDR:
|
||||
sk->sk_reuse = (valbool ? SK_CAN_REUSE : SK_NO_REUSE);
|
||||
break;
|
||||
case SO_REUSEPORT:
|
||||
sk->sk_reuseport = valbool;
|
||||
break;
|
||||
case SO_TYPE:
|
||||
case SO_PROTOCOL:
|
||||
case SO_DOMAIN:
|
||||
|
@ -972,6 +975,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
|
|||
v.val = sk->sk_reuse;
|
||||
break;
|
||||
|
||||
case SO_REUSEPORT:
|
||||
v.val = sk->sk_reuseport;
|
||||
break;
|
||||
|
||||
case SO_KEEPALIVE:
|
||||
v.val = sock_flag(sk, SOCK_KEEPOPEN);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue