sync with latest
[sdk/emulator/qemu.git] / linux-user / socket.h
1
2 #if defined(TARGET_MIPS)
3         // MIPS special values for constants
4
5         /*
6          * For setsockopt(2)
7          *
8          * This defines are ABI conformant as far as Linux supports these ...
9          */
10         #define TARGET_SOL_SOCKET      0xffff
11
12         #define TARGET_SO_DEBUG        0x0001  /* Record debugging information.  */
13         #define TARGET_SO_REUSEADDR    0x0004  /* Allow reuse of local addresses.  */
14         #define TARGET_SO_KEEPALIVE    0x0008  /* Keep connections alive and send
15                                           SIGPIPE when they die.  */
16         #define TARGET_SO_DONTROUTE    0x0010  /* Don't do local routing.  */
17         #define TARGET_SO_BROADCAST    0x0020  /* Allow transmission of
18                                           broadcast messages.  */
19         #define TARGET_SO_LINGER       0x0080  /* Block on close of a reliable
20                                           socket to transmit pending data.  */
21         #define TARGET_SO_OOBINLINE 0x0100     /* Receive out-of-band data in-band.  */
22         #if 0
23         To add: #define TARGET_SO_REUSEPORT 0x0200     /* Allow local address and port reuse.  */
24         #endif
25
26         #define TARGET_SO_TYPE         0x1008  /* Compatible name for SO_STYLE.  */
27         #define TARGET_SO_STYLE        SO_TYPE /* Synonym */
28         #define TARGET_SO_ERROR        0x1007  /* get error status and clear */
29         #define TARGET_SO_SNDBUF       0x1001  /* Send buffer size. */
30         #define TARGET_SO_RCVBUF       0x1002  /* Receive buffer. */
31         #define TARGET_SO_SNDLOWAT     0x1003  /* send low-water mark */
32         #define TARGET_SO_RCVLOWAT     0x1004  /* receive low-water mark */
33         #define TARGET_SO_SNDTIMEO     0x1005  /* send timeout */
34         #define TARGET_SO_RCVTIMEO     0x1006  /* receive timeout */
35         #define TARGET_SO_ACCEPTCONN   0x1009
36
37         /* linux-specific, might as well be the same as on i386 */
38         #define TARGET_SO_NO_CHECK     11
39         #define TARGET_SO_PRIORITY     12
40         #define TARGET_SO_BSDCOMPAT    14
41
42         #define TARGET_SO_PASSCRED     17
43         #define TARGET_SO_PEERCRED     18
44
45         /* Security levels - as per NRL IPv6 - don't actually do anything */
46         #define TARGET_SO_SECURITY_AUTHENTICATION              22
47         #define TARGET_SO_SECURITY_ENCRYPTION_TRANSPORT        23
48         #define TARGET_SO_SECURITY_ENCRYPTION_NETWORK          24
49
50         #define TARGET_SO_BINDTODEVICE         25
51
52         /* Socket filtering */
53         #define TARGET_SO_ATTACH_FILTER        26
54         #define TARGET_SO_DETACH_FILTER        27
55
56         #define TARGET_SO_PEERNAME             28
57         #define TARGET_SO_TIMESTAMP            29
58         #define SCM_TIMESTAMP          SO_TIMESTAMP
59
60         #define TARGET_SO_PEERSEC              30
61         #define TARGET_SO_SNDBUFFORCE          31
62         #define TARGET_SO_RCVBUFFORCE          33
63
64         /** sock_type - Socket types
65          *
66          * Please notice that for binary compat reasons MIPS has to
67          * override the enum sock_type in include/linux/net.h, so
68          * we define ARCH_HAS_SOCKET_TYPES here.
69          *
70          * @SOCK_DGRAM - datagram (conn.less) socket
71          * @SOCK_STREAM - stream (connection) socket
72          * @SOCK_RAW - raw socket
73          * @SOCK_RDM - reliably-delivered message
74          * @SOCK_SEQPACKET - sequential packet socket
75          * @SOCK_PACKET - linux specific way of getting packets at the dev level.
76          *               For writing rarp and other similar things on the user level.
77          */
78         enum sock_type {
79                TARGET_SOCK_DGRAM       = 1,
80                TARGET_SOCK_STREAM      = 2,
81                TARGET_SOCK_RAW = 3,
82                TARGET_SOCK_RDM = 4,
83                TARGET_SOCK_SEQPACKET   = 5,
84                TARGET_SOCK_DCCP        = 6,
85                TARGET_SOCK_PACKET      = 10,
86         };
87
88         #define TARGET_SOCK_MAX (SOCK_PACKET + 1)
89
90 #else
91
92         /* For setsockopt(2) */
93         #define TARGET_SOL_SOCKET      1
94
95         #define TARGET_SO_DEBUG        1
96         #define TARGET_SO_REUSEADDR    2
97         #define TARGET_SO_TYPE         3
98         #define TARGET_SO_ERROR        4
99         #define TARGET_SO_DONTROUTE    5
100         #define TARGET_SO_BROADCAST    6
101         #define TARGET_SO_SNDBUF       7
102         #define TARGET_SO_RCVBUF       8
103         #define TARGET_SO_SNDBUFFORCE  32
104         #define TARGET_SO_RCVBUFFORCE  33
105         #define TARGET_SO_KEEPALIVE    9
106         #define TARGET_SO_OOBINLINE    10
107         #define TARGET_SO_NO_CHECK     11
108         #define TARGET_SO_PRIORITY     12
109         #define TARGET_SO_LINGER       13
110         #define TARGET_SO_BSDCOMPAT    14
111         /* To add :#define TARGET_SO_REUSEPORT 15 */
112 #if defined(TARGET_PPC)
113         #define TARGET_SO_RCVLOWAT     16
114         #define TARGET_SO_SNDLOWAT     17
115         #define TARGET_SO_RCVTIMEO     18
116         #define TARGET_SO_SNDTIMEO     19
117         #define TARGET_SO_PASSCRED     20
118         #define TARGET_SO_PEERCRED     21
119 #else
120         #define TARGET_SO_PASSCRED     16
121         #define TARGET_SO_PEERCRED     17
122         #define TARGET_SO_RCVLOWAT     18
123         #define TARGET_SO_SNDLOWAT     19
124         #define TARGET_SO_RCVTIMEO     20
125         #define TARGET_SO_SNDTIMEO     21
126 #endif
127
128         /* Security levels - as per NRL IPv6 - don't actually do anything */
129         #define TARGET_SO_SECURITY_AUTHENTICATION              22
130         #define TARGET_SO_SECURITY_ENCRYPTION_TRANSPORT        23
131         #define TARGET_SO_SECURITY_ENCRYPTION_NETWORK          24
132
133         #define TARGET_SO_BINDTODEVICE 25
134
135         /* Socket filtering */
136         #define TARGET_SO_ATTACH_FILTER        26
137         #define TARGET_SO_DETACH_FILTER        27
138
139         #define TARGET_SO_PEERNAME             28
140         #define TARGET_SO_TIMESTAMP            29
141         #define TARGET_SCM_TIMESTAMP           TARGET_SO_TIMESTAMP
142
143         #define TARGET_SO_ACCEPTCONN           30
144
145         #define TARGET_SO_PEERSEC              31
146
147 #endif