1*384740dcSRalf Baechle /* 2*384740dcSRalf Baechle * This file is subject to the terms and conditions of the GNU General Public 3*384740dcSRalf Baechle * License. See the file "COPYING" in the main directory of this archive 4*384740dcSRalf Baechle * for more details. 5*384740dcSRalf Baechle * 6*384740dcSRalf Baechle * Copyright (C) 1997, 1999, 2000, 2001 Ralf Baechle 7*384740dcSRalf Baechle * Copyright (C) 2000, 2001 Silicon Graphics, Inc. 8*384740dcSRalf Baechle */ 9*384740dcSRalf Baechle #ifndef _ASM_SOCKET_H 10*384740dcSRalf Baechle #define _ASM_SOCKET_H 11*384740dcSRalf Baechle 12*384740dcSRalf Baechle #include <asm/sockios.h> 13*384740dcSRalf Baechle 14*384740dcSRalf Baechle /* 15*384740dcSRalf Baechle * For setsockopt(2) 16*384740dcSRalf Baechle * 17*384740dcSRalf Baechle * This defines are ABI conformant as far as Linux supports these ... 18*384740dcSRalf Baechle */ 19*384740dcSRalf Baechle #define SOL_SOCKET 0xffff 20*384740dcSRalf Baechle 21*384740dcSRalf Baechle #define SO_DEBUG 0x0001 /* Record debugging information. */ 22*384740dcSRalf Baechle #define SO_REUSEADDR 0x0004 /* Allow reuse of local addresses. */ 23*384740dcSRalf Baechle #define SO_KEEPALIVE 0x0008 /* Keep connections alive and send 24*384740dcSRalf Baechle SIGPIPE when they die. */ 25*384740dcSRalf Baechle #define SO_DONTROUTE 0x0010 /* Don't do local routing. */ 26*384740dcSRalf Baechle #define SO_BROADCAST 0x0020 /* Allow transmission of 27*384740dcSRalf Baechle broadcast messages. */ 28*384740dcSRalf Baechle #define SO_LINGER 0x0080 /* Block on close of a reliable 29*384740dcSRalf Baechle socket to transmit pending data. */ 30*384740dcSRalf Baechle #define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */ 31*384740dcSRalf Baechle #if 0 32*384740dcSRalf Baechle To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ 33*384740dcSRalf Baechle #endif 34*384740dcSRalf Baechle 35*384740dcSRalf Baechle #define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */ 36*384740dcSRalf Baechle #define SO_STYLE SO_TYPE /* Synonym */ 37*384740dcSRalf Baechle #define SO_ERROR 0x1007 /* get error status and clear */ 38*384740dcSRalf Baechle #define SO_SNDBUF 0x1001 /* Send buffer size. */ 39*384740dcSRalf Baechle #define SO_RCVBUF 0x1002 /* Receive buffer. */ 40*384740dcSRalf Baechle #define SO_SNDLOWAT 0x1003 /* send low-water mark */ 41*384740dcSRalf Baechle #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ 42*384740dcSRalf Baechle #define SO_SNDTIMEO 0x1005 /* send timeout */ 43*384740dcSRalf Baechle #define SO_RCVTIMEO 0x1006 /* receive timeout */ 44*384740dcSRalf Baechle #define SO_ACCEPTCONN 0x1009 45*384740dcSRalf Baechle 46*384740dcSRalf Baechle /* linux-specific, might as well be the same as on i386 */ 47*384740dcSRalf Baechle #define SO_NO_CHECK 11 48*384740dcSRalf Baechle #define SO_PRIORITY 12 49*384740dcSRalf Baechle #define SO_BSDCOMPAT 14 50*384740dcSRalf Baechle 51*384740dcSRalf Baechle #define SO_PASSCRED 17 52*384740dcSRalf Baechle #define SO_PEERCRED 18 53*384740dcSRalf Baechle 54*384740dcSRalf Baechle /* Security levels - as per NRL IPv6 - don't actually do anything */ 55*384740dcSRalf Baechle #define SO_SECURITY_AUTHENTICATION 22 56*384740dcSRalf Baechle #define SO_SECURITY_ENCRYPTION_TRANSPORT 23 57*384740dcSRalf Baechle #define SO_SECURITY_ENCRYPTION_NETWORK 24 58*384740dcSRalf Baechle 59*384740dcSRalf Baechle #define SO_BINDTODEVICE 25 60*384740dcSRalf Baechle 61*384740dcSRalf Baechle /* Socket filtering */ 62*384740dcSRalf Baechle #define SO_ATTACH_FILTER 26 63*384740dcSRalf Baechle #define SO_DETACH_FILTER 27 64*384740dcSRalf Baechle 65*384740dcSRalf Baechle #define SO_PEERNAME 28 66*384740dcSRalf Baechle #define SO_TIMESTAMP 29 67*384740dcSRalf Baechle #define SCM_TIMESTAMP SO_TIMESTAMP 68*384740dcSRalf Baechle 69*384740dcSRalf Baechle #define SO_PEERSEC 30 70*384740dcSRalf Baechle #define SO_SNDBUFFORCE 31 71*384740dcSRalf Baechle #define SO_RCVBUFFORCE 33 72*384740dcSRalf Baechle #define SO_PASSSEC 34 73*384740dcSRalf Baechle #define SO_TIMESTAMPNS 35 74*384740dcSRalf Baechle #define SCM_TIMESTAMPNS SO_TIMESTAMPNS 75*384740dcSRalf Baechle 76*384740dcSRalf Baechle #define SO_MARK 36 77*384740dcSRalf Baechle 78*384740dcSRalf Baechle #ifdef __KERNEL__ 79*384740dcSRalf Baechle 80*384740dcSRalf Baechle /** sock_type - Socket types 81*384740dcSRalf Baechle * 82*384740dcSRalf Baechle * Please notice that for binary compat reasons MIPS has to 83*384740dcSRalf Baechle * override the enum sock_type in include/linux/net.h, so 84*384740dcSRalf Baechle * we define ARCH_HAS_SOCKET_TYPES here. 85*384740dcSRalf Baechle * 86*384740dcSRalf Baechle * @SOCK_DGRAM - datagram (conn.less) socket 87*384740dcSRalf Baechle * @SOCK_STREAM - stream (connection) socket 88*384740dcSRalf Baechle * @SOCK_RAW - raw socket 89*384740dcSRalf Baechle * @SOCK_RDM - reliably-delivered message 90*384740dcSRalf Baechle * @SOCK_SEQPACKET - sequential packet socket 91*384740dcSRalf Baechle * @SOCK_PACKET - linux specific way of getting packets at the dev level. 92*384740dcSRalf Baechle * For writing rarp and other similar things on the user level. 93*384740dcSRalf Baechle */ 94*384740dcSRalf Baechle enum sock_type { 95*384740dcSRalf Baechle SOCK_DGRAM = 1, 96*384740dcSRalf Baechle SOCK_STREAM = 2, 97*384740dcSRalf Baechle SOCK_RAW = 3, 98*384740dcSRalf Baechle SOCK_RDM = 4, 99*384740dcSRalf Baechle SOCK_SEQPACKET = 5, 100*384740dcSRalf Baechle SOCK_DCCP = 6, 101*384740dcSRalf Baechle SOCK_PACKET = 10, 102*384740dcSRalf Baechle }; 103*384740dcSRalf Baechle 104*384740dcSRalf Baechle #define SOCK_MAX (SOCK_PACKET + 1) 105*384740dcSRalf Baechle /* Mask which covers at least up to SOCK_MASK-1. The 106*384740dcSRalf Baechle * * remaining bits are used as flags. */ 107*384740dcSRalf Baechle #define SOCK_TYPE_MASK 0xf 108*384740dcSRalf Baechle 109*384740dcSRalf Baechle /* Flags for socket, socketpair, paccept */ 110*384740dcSRalf Baechle #define SOCK_CLOEXEC O_CLOEXEC 111*384740dcSRalf Baechle #define SOCK_NONBLOCK O_NONBLOCK 112*384740dcSRalf Baechle 113*384740dcSRalf Baechle #define ARCH_HAS_SOCKET_TYPES 1 114*384740dcSRalf Baechle 115*384740dcSRalf Baechle #endif /* __KERNEL__ */ 116*384740dcSRalf Baechle 117*384740dcSRalf Baechle #endif /* _ASM_SOCKET_H */ 118