1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * This file is subject to the terms and conditions of the GNU General Public 4*4882a593Smuzhiyun * License. See the file "COPYING" in the main directory of this archive 5*4882a593Smuzhiyun * for more details. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Copyright (C) 1997, 1999, 2000, 2001 Ralf Baechle 8*4882a593Smuzhiyun * Copyright (C) 2000, 2001 Silicon Graphics, Inc. 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun #ifndef _UAPI_ASM_SOCKET_H 11*4882a593Smuzhiyun #define _UAPI_ASM_SOCKET_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/posix_types.h> 14*4882a593Smuzhiyun #include <asm/sockios.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* 17*4882a593Smuzhiyun * For setsockopt(2) 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * This defines are ABI conformant as far as Linux supports these ... 20*4882a593Smuzhiyun */ 21*4882a593Smuzhiyun #define SOL_SOCKET 0xffff 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define SO_DEBUG 0x0001 /* Record debugging information. */ 24*4882a593Smuzhiyun #define SO_REUSEADDR 0x0004 /* Allow reuse of local addresses. */ 25*4882a593Smuzhiyun #define SO_KEEPALIVE 0x0008 /* Keep connections alive and send 26*4882a593Smuzhiyun SIGPIPE when they die. */ 27*4882a593Smuzhiyun #define SO_DONTROUTE 0x0010 /* Don't do local routing. */ 28*4882a593Smuzhiyun #define SO_BROADCAST 0x0020 /* Allow transmission of 29*4882a593Smuzhiyun broadcast messages. */ 30*4882a593Smuzhiyun #define SO_LINGER 0x0080 /* Block on close of a reliable 31*4882a593Smuzhiyun socket to transmit pending data. */ 32*4882a593Smuzhiyun #define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */ 33*4882a593Smuzhiyun #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */ 36*4882a593Smuzhiyun #define SO_STYLE SO_TYPE /* Synonym */ 37*4882a593Smuzhiyun #define SO_ERROR 0x1007 /* get error status and clear */ 38*4882a593Smuzhiyun #define SO_SNDBUF 0x1001 /* Send buffer size. */ 39*4882a593Smuzhiyun #define SO_RCVBUF 0x1002 /* Receive buffer. */ 40*4882a593Smuzhiyun #define SO_SNDLOWAT 0x1003 /* send low-water mark */ 41*4882a593Smuzhiyun #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ 42*4882a593Smuzhiyun #define SO_SNDTIMEO_OLD 0x1005 /* send timeout */ 43*4882a593Smuzhiyun #define SO_RCVTIMEO_OLD 0x1006 /* receive timeout */ 44*4882a593Smuzhiyun #define SO_ACCEPTCONN 0x1009 45*4882a593Smuzhiyun #define SO_PROTOCOL 0x1028 /* protocol type */ 46*4882a593Smuzhiyun #define SO_DOMAIN 0x1029 /* domain/socket family */ 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* linux-specific, might as well be the same as on i386 */ 49*4882a593Smuzhiyun #define SO_NO_CHECK 11 50*4882a593Smuzhiyun #define SO_PRIORITY 12 51*4882a593Smuzhiyun #define SO_BSDCOMPAT 14 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #define SO_PASSCRED 17 54*4882a593Smuzhiyun #define SO_PEERCRED 18 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* Security levels - as per NRL IPv6 - don't actually do anything */ 57*4882a593Smuzhiyun #define SO_SECURITY_AUTHENTICATION 22 58*4882a593Smuzhiyun #define SO_SECURITY_ENCRYPTION_TRANSPORT 23 59*4882a593Smuzhiyun #define SO_SECURITY_ENCRYPTION_NETWORK 24 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #define SO_BINDTODEVICE 25 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /* Socket filtering */ 64*4882a593Smuzhiyun #define SO_ATTACH_FILTER 26 65*4882a593Smuzhiyun #define SO_DETACH_FILTER 27 66*4882a593Smuzhiyun #define SO_GET_FILTER SO_ATTACH_FILTER 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define SO_PEERNAME 28 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #define SO_PEERSEC 30 71*4882a593Smuzhiyun #define SO_SNDBUFFORCE 31 72*4882a593Smuzhiyun #define SO_RCVBUFFORCE 33 73*4882a593Smuzhiyun #define SO_PASSSEC 34 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define SO_MARK 36 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define SO_RXQ_OVFL 40 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define SO_WIFI_STATUS 41 80*4882a593Smuzhiyun #define SCM_WIFI_STATUS SO_WIFI_STATUS 81*4882a593Smuzhiyun #define SO_PEEK_OFF 42 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* Instruct lower device to use last 4-bytes of skb data as FCS */ 84*4882a593Smuzhiyun #define SO_NOFCS 43 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun #define SO_LOCK_FILTER 44 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #define SO_SELECT_ERR_QUEUE 45 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun #define SO_BUSY_POLL 46 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #define SO_MAX_PACING_RATE 47 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun #define SO_BPF_EXTENSIONS 48 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #define SO_INCOMING_CPU 49 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define SO_ATTACH_BPF 50 99*4882a593Smuzhiyun #define SO_DETACH_BPF SO_DETACH_FILTER 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #define SO_ATTACH_REUSEPORT_CBPF 51 102*4882a593Smuzhiyun #define SO_ATTACH_REUSEPORT_EBPF 52 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun #define SO_CNX_ADVICE 53 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #define SCM_TIMESTAMPING_OPT_STATS 54 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define SO_MEMINFO 55 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define SO_INCOMING_NAPI_ID 56 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #define SO_COOKIE 57 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define SCM_TIMESTAMPING_PKTINFO 58 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun #define SO_PEERGROUPS 59 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun #define SO_ZEROCOPY 60 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun #define SO_TXTIME 61 121*4882a593Smuzhiyun #define SCM_TXTIME SO_TXTIME 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun #define SO_BINDTOIFINDEX 62 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun #define SO_TIMESTAMP_OLD 29 126*4882a593Smuzhiyun #define SO_TIMESTAMPNS_OLD 35 127*4882a593Smuzhiyun #define SO_TIMESTAMPING_OLD 37 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #define SO_TIMESTAMP_NEW 63 130*4882a593Smuzhiyun #define SO_TIMESTAMPNS_NEW 64 131*4882a593Smuzhiyun #define SO_TIMESTAMPING_NEW 65 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun #define SO_RCVTIMEO_NEW 66 134*4882a593Smuzhiyun #define SO_SNDTIMEO_NEW 67 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define SO_DETACH_REUSEPORT_BPF 68 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun #if !defined(__KERNEL__) 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun #if __BITS_PER_LONG == 64 141*4882a593Smuzhiyun #define SO_TIMESTAMP SO_TIMESTAMP_OLD 142*4882a593Smuzhiyun #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD 143*4882a593Smuzhiyun #define SO_TIMESTAMPING SO_TIMESTAMPING_OLD 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun #define SO_RCVTIMEO SO_RCVTIMEO_OLD 146*4882a593Smuzhiyun #define SO_SNDTIMEO SO_SNDTIMEO_OLD 147*4882a593Smuzhiyun #else 148*4882a593Smuzhiyun #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) 149*4882a593Smuzhiyun #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) 150*4882a593Smuzhiyun #define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW) 153*4882a593Smuzhiyun #define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW) 154*4882a593Smuzhiyun #endif 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define SCM_TIMESTAMP SO_TIMESTAMP 157*4882a593Smuzhiyun #define SCM_TIMESTAMPNS SO_TIMESTAMPNS 158*4882a593Smuzhiyun #define SCM_TIMESTAMPING SO_TIMESTAMPING 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #endif 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun #endif /* _UAPI_ASM_SOCKET_H */ 163