1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #ifndef __BITS_SOCKET_H
21: #define __BITS_SOCKET_H 1
22:
23: #if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
24: # error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
25: #endif
26:
27: #include <limits.h>
28: #include <bits/types.h>
29:
30: #define __need_size_t
31: #include <stddef.h>
32:
33:
34: #ifndef __socklen_t_defined
35: typedef __socklen_t socklen_t;
36: # define __socklen_t_defined
37: #endif
38:
39:
40:
41: enum __socket_type
42: {
43: SOCK_STREAM = 1,
44:
45: #define SOCK_STREAM SOCK_STREAM
46: SOCK_DGRAM = 2,
47:
48: #define SOCK_DGRAM SOCK_DGRAM
49: SOCK_RAW = 3,
50: #define SOCK_RAW SOCK_RAW
51: SOCK_RDM = 4,
52: #define SOCK_RDM SOCK_RDM
53: SOCK_SEQPACKET = 5
54:
55: #define SOCK_SEQPACKET SOCK_SEQPACKET
56: };
57:
58:
59: #define PF_UNSPEC 0
60: #define PF_LOCAL 1
61: #define PF_UNIX PF_LOCAL
62: #define PF_FILE PF_LOCAL
63: #define PF_INET 2
64: #define PF_IMPLINK 3
65: #define PF_PUP 4
66: #define PF_CHAOS 5
67: #define PF_NS 6
68: #define PF_ISO 7
69: #define PF_OSI PF_ISO
70: #define PF_ECMA 8
71: #define PF_DATAKIT 9
72: #define PF_CCITT 10
73: #define PF_SNA 11
74: #define PF_DECnet 12
75: #define PF_DLI 13
76: #define PF_LAT 14
77: #define PF_HYLINK 15
78: #define PF_APPLETALK 16
79: #define PF_ROUTE 17
80: #define PF_LINK 18
81: #define PF_XTP 19
82: #define PF_COIP 20
83: #define PF_CNT 21
84: #define PF_RTIP 22
85: #define PF_IPX 23
86: #define PF_SIP 24
87: #define PF_PIP 25
88: #define PF_INET6 26
89: #define PF_MAX 27
90:
91:
92: #define AF_UNSPEC PF_UNSPEC
93: #define AF_LOCAL PF_LOCAL
94: #define AF_UNIX PF_UNIX
95: #define AF_FILE PF_FILE
96: #define AF_INET PF_INET
97: #define AF_IMPLINK PF_IMPLINK
98: #define AF_PUP PF_PUP
99: #define AF_CHAOS PF_CHAOS
100: #define AF_NS PF_NS
101: #define AF_ISO PF_ISO
102: #define AF_OSI PF_OSI
103: #define AF_ECMA PF_ECMA
104: #define AF_DATAKIT PF_DATAKIT
105: #define AF_CCITT PF_CCITT
106: #define AF_SNA PF_SNA
107: #define AF_DECnet PF_DECnet
108: #define AF_DLI PF_DLI
109: #define AF_LAT PF_LAT
110: #define AF_HYLINK PF_HYLINK
111: #define AF_APPLETALK PF_APPLETALK
112: #define AF_ROUTE PF_ROUTE
113: #define AF_LINK PF_LINK
114: #define pseudo_AF_XTP PF_XTP
115: #define AF_COIP PF_COIP
116: #define AF_CNT PF_CNT
117: #define pseudo_AF_RTIP PF_RTIP
118: #define AF_IPX PF_IPX
119: #define AF_SIP PF_SIP
120: #define pseudo_AF_PIP PF_PIP
121: #define AF_INET6 PF_INET6
122: #define AF_MAX PF_MAX
123:
124:
125:
126: #include <bits/sockaddr.h>
127:
128:
129: struct sockaddr
130: {
131: __SOCKADDR_COMMON (sa_);
132: char sa_data[14];
133: };
134:
135:
136:
137:
138: #if ULONG_MAX > 0xffffffff
139: # define __ss_aligntype __uint64_t
140: #else
141: # define __ss_aligntype __uint32_t
142: #endif
143: #define _SS_SIZE 128
144: #define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
145:
146: struct sockaddr_storage
147: {
148: __SOCKADDR_COMMON (ss_);
149: __ss_aligntype __ss_align;
150: char __ss_padding[_SS_PADSIZE];
151: };
152:
153:
154:
155: enum
156: {
157: MSG_OOB = 0x01,
158: #define MSG_OOB MSG_OOB
159: MSG_PEEK = 0x02,
160: #define MSG_PEEK MSG_PEEK
161: MSG_DONTROUTE = 0x04,
162: #define MSG_DONTROUTE MSG_DONTROUTE
163: MSG_EOR = 0x08,
164: #define MSG_EOR MSG_EOR
165: MSG_TRUNC = 0x10,
166: #define MSG_TRUNC MSG_TRUNC
167: MSG_CTRUNC = 0x20,
168: #define MSG_CTRUNC MSG_CTRUNC
169: MSG_WAITALL = 0x40,
170: #define MSG_WAITALL MSG_WAITALL
171: MSG_DONTWAIT = 0x80
172: #define MSG_DONTWAIT MSG_DONTWAIT
173: };
174:
175:
176:
177:
178: struct msghdr
179: {
180: __ptr_t msg_name;
181: socklen_t msg_namelen;
182:
183: struct iovec *msg_iov;
184: int msg_iovlen;
185:
186: __ptr_t msg_accrights;
187: socklen_t msg_accrightslen;
188:
189: int msg_flags;
190: };
191:
192:
193:
194:
195: #define SOL_SOCKET 0xffff
196:
197:
198: enum
199: {
200: SO_DEBUG = 0x0001,
201: #define SO_DEBUG SO_DEBUG
202: SO_ACCEPTCONN = 0x0002,
203: #define SO_ACCEPTCONN SO_ACCEPTCONN
204: SO_REUSEADDR = 0x0004,
205: #define SO_REUSEADDR SO_REUSEADDR
206: SO_KEEPALIVE = 0x0008,
207:
208: #define SO_KEEPALIVE SO_KEEPALIVE
209: SO_DONTROUTE = 0x0010,
210: #define SO_DONTROUTE SO_DONTROUTE
211: SO_BROADCAST = 0x0020,
212:
213: #define SO_BROADCAST SO_BROADCAST
214: SO_USELOOPBACK = 0x0040,
215:
216: #define SO_USELOOPBACK SO_USELOOPBACK
217: SO_LINGER = 0x0080,
218:
219: #define SO_LINGER SO_LINGER
220: SO_OOBINLINE = 0x0100,
221: #define SO_OOBINLINE SO_OOBINLINE
222: SO_REUSEPORT = 0x0200,
223: #define SO_REUSEPORT SO_REUSEPORT
224: SO_SNDBUF = 0x1001,
225: #define SO_SNDBUF SO_SNDBUF
226: SO_RCVBUF = 0x1002,
227: #define SO_RCVBUF SO_RCVBUF
228: SO_SNDLOWAT = 0x1003,
229: #define SO_SNDLOWAT SO_SNDLOWAT
230: SO_RCVLOWAT = 0x1004,
231: #define SO_RCVLOWAT SO_RCVLOWAT
232: SO_SNDTIMEO = 0x1005,
233: #define SO_SNDTIMEO SO_SNDTIMEO
234: SO_RCVTIMEO = 0x1006,
235: #define SO_RCVTIMEO SO_RCVTIMEO
236: SO_ERROR = 0x1007,
237: #define SO_ERROR SO_ERROR
238: SO_STYLE = 0x1008,
239: #define SO_STYLE SO_STYLE
240: SO_TYPE = SO_STYLE
241: #define SO_TYPE SO_TYPE
242: };
243:
244:
245: struct linger
246: {
247: int l_onoff;
248: int l_linger;
249: };
250:
251: #endif