blob: 2713e0fa68ef7ad07f5d3db5bca125f42a4325a4 [file] [log] [blame]
Greg Kroah-Hartman6f52b162017-11-01 15:08:43 +01001/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
Arnd Bergmann6103ec52009-05-13 22:56:27 +00002#ifndef __ASM_GENERIC_SOCKET_H
3#define __ASM_GENERIC_SOCKET_H
4
5#include <asm/sockios.h>
Deepa Dinamani887feae2019-02-02 07:34:50 -08006#include <asm/bitsperlong.h>
Arnd Bergmann6103ec52009-05-13 22:56:27 +00007
8/* For setsockopt(2) */
9#define SOL_SOCKET 1
10
11#define SO_DEBUG 1
12#define SO_REUSEADDR 2
13#define SO_TYPE 3
14#define SO_ERROR 4
15#define SO_DONTROUTE 5
16#define SO_BROADCAST 6
17#define SO_SNDBUF 7
18#define SO_RCVBUF 8
19#define SO_SNDBUFFORCE 32
20#define SO_RCVBUFFORCE 33
21#define SO_KEEPALIVE 9
22#define SO_OOBINLINE 10
23#define SO_NO_CHECK 11
24#define SO_PRIORITY 12
25#define SO_LINGER 13
26#define SO_BSDCOMPAT 14
Tom Herbert055dc212013-01-22 09:49:50 +000027#define SO_REUSEPORT 15
Arnd Bergmann6103ec52009-05-13 22:56:27 +000028#ifndef SO_PASSCRED /* powerpc only differs in these */
29#define SO_PASSCRED 16
30#define SO_PEERCRED 17
31#define SO_RCVLOWAT 18
32#define SO_SNDLOWAT 19
33#define SO_RCVTIMEO 20
34#define SO_SNDTIMEO 21
35#endif
36
37/* Security levels - as per NRL IPv6 - don't actually do anything */
38#define SO_SECURITY_AUTHENTICATION 22
39#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
40#define SO_SECURITY_ENCRYPTION_NETWORK 24
41
42#define SO_BINDTODEVICE 25
43
44/* Socket filtering */
45#define SO_ATTACH_FILTER 26
46#define SO_DETACH_FILTER 27
Pavel Emelyanova8fc9272012-11-01 02:01:48 +000047#define SO_GET_FILTER SO_ATTACH_FILTER
Arnd Bergmann6103ec52009-05-13 22:56:27 +000048
49#define SO_PEERNAME 28
Arnd Bergmann6103ec52009-05-13 22:56:27 +000050
51#define SO_ACCEPTCONN 30
52
53#define SO_PEERSEC 31
54#define SO_PASSSEC 34
Arnd Bergmann6103ec52009-05-13 22:56:27 +000055
56#define SO_MARK 36
57
Jan Engelhardt49c794e2009-08-04 07:28:28 +000058#define SO_PROTOCOL 38
Jan Engelhardt0d6038e2009-08-04 07:28:29 +000059#define SO_DOMAIN 39
Jan Engelhardt49c794e2009-08-04 07:28:28 +000060
Neil Horman3b885782009-10-12 13:26:31 -070061#define SO_RXQ_OVFL 40
Johannes Berg6e3e9392011-11-09 10:15:42 +010062
63#define SO_WIFI_STATUS 41
64#define SCM_WIFI_STATUS SO_WIFI_STATUS
Pavel Emelyanovef64a542012-02-21 07:31:34 +000065#define SO_PEEK_OFF 42
Ben Greear3bdc0eb2012-02-11 15:39:30 +000066
67/* Instruct lower device to use last 4-bytes of skb data as FCS */
68#define SO_NOFCS 43
69
Vincent Bernatd59577b2013-01-16 22:55:49 +010070#define SO_LOCK_FILTER 44
71
Keller, Jacob E7d4c04f2013-03-28 11:19:25 +000072#define SO_SELECT_ERR_QUEUE 45
73
Eliezer Tamir64b0dc52013-07-10 17:13:36 +030074#define SO_BUSY_POLL 46
Eliezer Tamirdafcc432013-06-14 16:33:57 +030075
Eric Dumazet62748f32013-09-24 08:20:52 -070076#define SO_MAX_PACING_RATE 47
77
Michal Sekletarea02f942014-01-17 17:09:45 +010078#define SO_BPF_EXTENSIONS 48
79
Eric Dumazet2c8c56e2014-11-11 05:54:28 -080080#define SO_INCOMING_CPU 49
81
Alexei Starovoitov89aa0752014-12-01 15:06:35 -080082#define SO_ATTACH_BPF 50
83#define SO_DETACH_BPF SO_DETACH_FILTER
84
Craig Gallek538950a2016-01-04 17:41:47 -050085#define SO_ATTACH_REUSEPORT_CBPF 51
86#define SO_ATTACH_REUSEPORT_EBPF 52
87
Tom Herberta87cb3e2016-02-24 10:02:52 -080088#define SO_CNX_ADVICE 53
89
Francis Yan1c885802016-11-27 23:07:18 -080090#define SCM_TIMESTAMPING_OPT_STATS 54
91
Josh Hunta2d133b2017-03-20 15:22:03 -040092#define SO_MEMINFO 55
93
Sridhar Samudrala6d433902017-03-24 10:08:36 -070094#define SO_INCOMING_NAPI_ID 56
95
Chenbo Feng5daab9d2017-04-05 19:00:55 -070096#define SO_COOKIE 57
97
Miroslav Lichvaraad9c8c2017-05-19 17:52:38 +020098#define SCM_TIMESTAMPING_PKTINFO 58
99
David Herrmann28b5ba2a2017-06-21 10:47:15 +0200100#define SO_PEERGROUPS 59
101
Willem de Bruijn76851d12017-08-03 16:29:40 -0400102#define SO_ZEROCOPY 60
103
Richard Cochran80b14de2018-07-03 15:42:48 -0700104#define SO_TXTIME 61
105#define SCM_TXTIME SO_TXTIME
106
David Herrmannf5dd3d02019-01-15 14:42:14 +0100107#define SO_BINDTOIFINDEX 62
108
Deepa Dinamani7f1bc6e2019-02-02 07:34:46 -0800109#define SO_TIMESTAMP_OLD 29
110#define SO_TIMESTAMPNS_OLD 35
111#define SO_TIMESTAMPING_OLD 37
112
Deepa Dinamani887feae2019-02-02 07:34:50 -0800113#define SO_TIMESTAMP_NEW 63
114#define SO_TIMESTAMPNS_NEW 64
Deepa Dinamani97184752019-02-02 07:34:51 -0800115#define SO_TIMESTAMPING_NEW 65
Deepa Dinamani887feae2019-02-02 07:34:50 -0800116
Deepa Dinamani7f1bc6e2019-02-02 07:34:46 -0800117#if !defined(__KERNEL__)
118
Deepa Dinamani887feae2019-02-02 07:34:50 -0800119#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
120/* on 64-bit and x32, avoid the ?: operator */
121#define SO_TIMESTAMP SO_TIMESTAMP_OLD
122#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
Deepa Dinamani97184752019-02-02 07:34:51 -0800123#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
Deepa Dinamani887feae2019-02-02 07:34:50 -0800124#else
125#define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)
126#define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)
Deepa Dinamani97184752019-02-02 07:34:51 -0800127#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)
Deepa Dinamani887feae2019-02-02 07:34:50 -0800128#endif
129
Deepa Dinamani7f1bc6e2019-02-02 07:34:46 -0800130#define SCM_TIMESTAMP SO_TIMESTAMP
131#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
132#define SCM_TIMESTAMPING SO_TIMESTAMPING
133
134#endif
135
Arnd Bergmann6103ec52009-05-13 22:56:27 +0000136#endif /* __ASM_GENERIC_SOCKET_H */