1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun #ifndef _UAPI_ASM_SOCKET_H 3*4882a593Smuzhiyun #define _UAPI_ASM_SOCKET_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/posix_types.h> 6*4882a593Smuzhiyun #include <asm/sockios.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* For setsockopt(2) */ 9*4882a593Smuzhiyun /* 10*4882a593Smuzhiyun * Note: we only bother about making the SOL_SOCKET options 11*4882a593Smuzhiyun * same as OSF/1, as that's all that "normal" programs are 12*4882a593Smuzhiyun * likely to set. We don't necessarily want to be binary 13*4882a593Smuzhiyun * compatible with _everything_. 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun #define SOL_SOCKET 0xffff 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define SO_DEBUG 0x0001 18*4882a593Smuzhiyun #define SO_REUSEADDR 0x0004 19*4882a593Smuzhiyun #define SO_KEEPALIVE 0x0008 20*4882a593Smuzhiyun #define SO_DONTROUTE 0x0010 21*4882a593Smuzhiyun #define SO_BROADCAST 0x0020 22*4882a593Smuzhiyun #define SO_LINGER 0x0080 23*4882a593Smuzhiyun #define SO_OOBINLINE 0x0100 24*4882a593Smuzhiyun #define SO_REUSEPORT 0x0200 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #define SO_TYPE 0x1008 27*4882a593Smuzhiyun #define SO_ERROR 0x1007 28*4882a593Smuzhiyun #define SO_SNDBUF 0x1001 29*4882a593Smuzhiyun #define SO_RCVBUF 0x1002 30*4882a593Smuzhiyun #define SO_SNDBUFFORCE 0x100a 31*4882a593Smuzhiyun #define SO_RCVBUFFORCE 0x100b 32*4882a593Smuzhiyun #define SO_RCVLOWAT 0x1010 33*4882a593Smuzhiyun #define SO_SNDLOWAT 0x1011 34*4882a593Smuzhiyun #define SO_RCVTIMEO_OLD 0x1012 35*4882a593Smuzhiyun #define SO_SNDTIMEO_OLD 0x1013 36*4882a593Smuzhiyun #define SO_ACCEPTCONN 0x1014 37*4882a593Smuzhiyun #define SO_PROTOCOL 0x1028 38*4882a593Smuzhiyun #define SO_DOMAIN 0x1029 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun /* linux-specific, might as well be the same as on i386 */ 41*4882a593Smuzhiyun #define SO_NO_CHECK 11 42*4882a593Smuzhiyun #define SO_PRIORITY 12 43*4882a593Smuzhiyun #define SO_BSDCOMPAT 14 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define SO_PASSCRED 17 46*4882a593Smuzhiyun #define SO_PEERCRED 18 47*4882a593Smuzhiyun #define SO_BINDTODEVICE 25 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun /* Socket filtering */ 50*4882a593Smuzhiyun #define SO_ATTACH_FILTER 26 51*4882a593Smuzhiyun #define SO_DETACH_FILTER 27 52*4882a593Smuzhiyun #define SO_GET_FILTER SO_ATTACH_FILTER 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define SO_PEERNAME 28 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #define SO_PEERSEC 30 57*4882a593Smuzhiyun #define SO_PASSSEC 34 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun /* Security levels - as per NRL IPv6 - don't actually do anything */ 60*4882a593Smuzhiyun #define SO_SECURITY_AUTHENTICATION 19 61*4882a593Smuzhiyun #define SO_SECURITY_ENCRYPTION_TRANSPORT 20 62*4882a593Smuzhiyun #define SO_SECURITY_ENCRYPTION_NETWORK 21 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define SO_MARK 36 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun #define SO_RXQ_OVFL 40 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define SO_WIFI_STATUS 41 69*4882a593Smuzhiyun #define SCM_WIFI_STATUS SO_WIFI_STATUS 70*4882a593Smuzhiyun #define SO_PEEK_OFF 42 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /* Instruct lower device to use last 4-bytes of skb data as FCS */ 73*4882a593Smuzhiyun #define SO_NOFCS 43 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define SO_LOCK_FILTER 44 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define SO_SELECT_ERR_QUEUE 45 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define SO_BUSY_POLL 46 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun #define SO_MAX_PACING_RATE 47 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define SO_BPF_EXTENSIONS 48 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #define SO_INCOMING_CPU 49 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun #define SO_ATTACH_BPF 50 88*4882a593Smuzhiyun #define SO_DETACH_BPF SO_DETACH_FILTER 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun #define SO_ATTACH_REUSEPORT_CBPF 51 91*4882a593Smuzhiyun #define SO_ATTACH_REUSEPORT_EBPF 52 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun #define SO_CNX_ADVICE 53 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #define SCM_TIMESTAMPING_OPT_STATS 54 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #define SO_MEMINFO 55 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun #define SO_INCOMING_NAPI_ID 56 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #define SO_COOKIE 57 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun #define SCM_TIMESTAMPING_PKTINFO 58 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #define SO_PEERGROUPS 59 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun #define SO_ZEROCOPY 60 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun #define SO_TXTIME 61 110*4882a593Smuzhiyun #define SCM_TXTIME SO_TXTIME 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #define SO_BINDTOIFINDEX 62 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define SO_TIMESTAMP_OLD 29 115*4882a593Smuzhiyun #define SO_TIMESTAMPNS_OLD 35 116*4882a593Smuzhiyun #define SO_TIMESTAMPING_OLD 37 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun #define SO_TIMESTAMP_NEW 63 119*4882a593Smuzhiyun #define SO_TIMESTAMPNS_NEW 64 120*4882a593Smuzhiyun #define SO_TIMESTAMPING_NEW 65 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define SO_RCVTIMEO_NEW 66 123*4882a593Smuzhiyun #define SO_SNDTIMEO_NEW 67 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun #define SO_DETACH_REUSEPORT_BPF 68 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #if !defined(__KERNEL__) 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #if __BITS_PER_LONG == 64 130*4882a593Smuzhiyun #define SO_TIMESTAMP SO_TIMESTAMP_OLD 131*4882a593Smuzhiyun #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD 132*4882a593Smuzhiyun #define SO_TIMESTAMPING SO_TIMESTAMPING_OLD 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun #define SO_RCVTIMEO SO_RCVTIMEO_OLD 135*4882a593Smuzhiyun #define SO_SNDTIMEO SO_SNDTIMEO_OLD 136*4882a593Smuzhiyun #else 137*4882a593Smuzhiyun #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) 138*4882a593Smuzhiyun #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) 139*4882a593Smuzhiyun #define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW) 142*4882a593Smuzhiyun #define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW) 143*4882a593Smuzhiyun #endif 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun #define SCM_TIMESTAMP SO_TIMESTAMP 146*4882a593Smuzhiyun #define SCM_TIMESTAMPNS SO_TIMESTAMPNS 147*4882a593Smuzhiyun #define SCM_TIMESTAMPING SO_TIMESTAMPING 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #endif 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun #endif /* _UAPI_ASM_SOCKET_H */ 152