xref: /linux/include/uapi/linux/socket.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2607ca46eSDavid Howells #ifndef _UAPI_LINUX_SOCKET_H
3607ca46eSDavid Howells #define _UAPI_LINUX_SOCKET_H
4607ca46eSDavid Howells 
5607ca46eSDavid Howells /*
6607ca46eSDavid Howells  * Desired design of maximum size and alignment (see RFC2553)
7607ca46eSDavid Howells  */
8607ca46eSDavid Howells #define _K_SS_MAXSIZE	128	/* Implementation specific max size */
9607ca46eSDavid Howells 
10607ca46eSDavid Howells typedef unsigned short __kernel_sa_family_t;
11607ca46eSDavid Howells 
125e5412c3SQian Cai /*
135e5412c3SQian Cai  * The definition uses anonymous union and struct in order to control the
145e5412c3SQian Cai  * default alignment.
155e5412c3SQian Cai  */
16607ca46eSDavid Howells struct __kernel_sockaddr_storage {
175e5412c3SQian Cai 	union {
185e5412c3SQian Cai 		struct {
19607ca46eSDavid Howells 			__kernel_sa_family_t	ss_family; /* address family */
20607ca46eSDavid Howells 			/* Following field(s) are implementation specific */
21607ca46eSDavid Howells 			char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
22607ca46eSDavid Howells 				/* space to achieve desired size, */
23607ca46eSDavid Howells 				/* _SS_MAXSIZE value minus size of ss_family */
245e5412c3SQian Cai 		};
255e5412c3SQian Cai 		void *__align; /* implementation specific desired alignment */
265e5412c3SQian Cai 	};
275e5412c3SQian Cai };
28607ca46eSDavid Howells 
2904190bf8SPavel Tikhomirov #define SOCK_SNDBUF_LOCK	1
3004190bf8SPavel Tikhomirov #define SOCK_RCVBUF_LOCK	2
3104190bf8SPavel Tikhomirov 
3204190bf8SPavel Tikhomirov #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
3304190bf8SPavel Tikhomirov 
34*8d3398baSTobias Klauser #define SOCK_TXREHASH_DEFAULT	255
35e187013aSAkhmat Karakotov #define SOCK_TXREHASH_DISABLED	0
36e187013aSAkhmat Karakotov #define SOCK_TXREHASH_ENABLED	1
37e187013aSAkhmat Karakotov 
38607ca46eSDavid Howells #endif /* _UAPI_LINUX_SOCKET_H */
39