^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __ASM_GENERIC_SOCKET_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __ASM_GENERIC_SOCKET_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/posix_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <asm/sockios.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) /* For setsockopt(2) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define SOL_SOCKET 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define SO_DEBUG 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define SO_REUSEADDR 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define SO_TYPE 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define SO_ERROR 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define SO_DONTROUTE 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define SO_BROADCAST 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define SO_SNDBUF 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define SO_RCVBUF 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define SO_SNDBUFFORCE 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define SO_RCVBUFFORCE 33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define SO_KEEPALIVE 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define SO_OOBINLINE 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define SO_NO_CHECK 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define SO_PRIORITY 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define SO_LINGER 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define SO_BSDCOMPAT 14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define SO_REUSEPORT 15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #ifndef SO_PASSCRED /* powerpc only differs in these */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define SO_PASSCRED 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define SO_PEERCRED 17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define SO_RCVLOWAT 18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define SO_SNDLOWAT 19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define SO_RCVTIMEO_OLD 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define SO_SNDTIMEO_OLD 21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) /* Security levels - as per NRL IPv6 - don't actually do anything */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define SO_SECURITY_AUTHENTICATION 22
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define SO_SECURITY_ENCRYPTION_NETWORK 24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define SO_BINDTODEVICE 25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) /* Socket filtering */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define SO_ATTACH_FILTER 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define SO_DETACH_FILTER 27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define SO_GET_FILTER SO_ATTACH_FILTER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define SO_PEERNAME 28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define SO_ACCEPTCONN 30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define SO_PEERSEC 31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define SO_PASSSEC 34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define SO_MARK 36
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define SO_PROTOCOL 38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define SO_DOMAIN 39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define SO_RXQ_OVFL 40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define SO_WIFI_STATUS 41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define SCM_WIFI_STATUS SO_WIFI_STATUS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define SO_PEEK_OFF 42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) /* Instruct lower device to use last 4-bytes of skb data as FCS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define SO_NOFCS 43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define SO_LOCK_FILTER 44
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define SO_SELECT_ERR_QUEUE 45
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define SO_BUSY_POLL 46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define SO_MAX_PACING_RATE 47
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define SO_BPF_EXTENSIONS 48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #define SO_INCOMING_CPU 49
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define SO_ATTACH_BPF 50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define SO_DETACH_BPF SO_DETACH_FILTER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define SO_ATTACH_REUSEPORT_CBPF 51
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define SO_ATTACH_REUSEPORT_EBPF 52
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #define SO_CNX_ADVICE 53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define SCM_TIMESTAMPING_OPT_STATS 54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #define SO_MEMINFO 55
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #define SO_INCOMING_NAPI_ID 56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define SO_COOKIE 57
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) #define SCM_TIMESTAMPING_PKTINFO 58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define SO_PEERGROUPS 59
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define SO_ZEROCOPY 60
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define SO_TXTIME 61
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define SCM_TXTIME SO_TXTIME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define SO_BINDTOIFINDEX 62
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define SO_TIMESTAMP_OLD 29
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define SO_TIMESTAMPNS_OLD 35
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define SO_TIMESTAMPING_OLD 37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define SO_TIMESTAMP_NEW 63
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define SO_TIMESTAMPNS_NEW 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define SO_TIMESTAMPING_NEW 65
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define SO_RCVTIMEO_NEW 66
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define SO_SNDTIMEO_NEW 67
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define SO_DETACH_REUSEPORT_BPF 68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #if !defined(__KERNEL__)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) /* on 64-bit and x32, avoid the ?: operator */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define SO_TIMESTAMP SO_TIMESTAMP_OLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define SO_RCVTIMEO SO_RCVTIMEO_OLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define SO_SNDTIMEO SO_SNDTIMEO_OLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define SCM_TIMESTAMP SO_TIMESTAMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define SCM_TIMESTAMPNS SO_TIMESTAMPNS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define SCM_TIMESTAMPING SO_TIMESTAMPING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #endif /* __ASM_GENERIC_SOCKET_H */