1#include <endian.h>
2
3struct msghdr {
4	void *msg_name;
5	socklen_t msg_namelen;
6	struct iovec *msg_iov;
7#if __BYTE_ORDER == __BIG_ENDIAN
8	int __pad1, msg_iovlen;
9#else
10	int msg_iovlen, __pad1;
11#endif
12	void *msg_control;
13#if __BYTE_ORDER == __BIG_ENDIAN
14	int __pad2;
15	socklen_t msg_controllen;
16#else
17	socklen_t msg_controllen;
18	int __pad2;
19#endif
20	int msg_flags;
21};
22
23struct cmsghdr {
24#if __BYTE_ORDER == __BIG_ENDIAN
25	int __pad1;
26	socklen_t cmsg_len;
27#else
28	socklen_t cmsg_len;
29	int __pad1;
30#endif
31	int cmsg_level;
32	int cmsg_type;
33};
34
35#define SOCK_STREAM    2
36#define SOCK_DGRAM     1
37#define SOL_SOCKET     65535
38#define SO_DEBUG       1
39
40#define SO_REUSEADDR    0x0004
41#define SO_KEEPALIVE    0x0008
42#define SO_DONTROUTE    0x0010
43#define SO_BROADCAST    0x0020
44#define SO_LINGER       0x0080
45#define SO_OOBINLINE    0x0100
46#define SO_REUSEPORT    0x0200
47#define SO_SNDBUF       0x1001
48#define SO_RCVBUF       0x1002
49#define SO_SNDLOWAT     0x1003
50#define SO_RCVLOWAT     0x1004
51#define SO_RCVTIMEO     0x1006
52#define SO_SNDTIMEO     0x1005
53#define SO_ERROR        0x1007
54#define SO_TYPE         0x1008
55#define SO_ACCEPTCONN   0x1009
56#define SO_PROTOCOL     0x1028
57#define SO_DOMAIN       0x1029
58
59#define SO_NO_CHECK     11
60#define SO_PRIORITY     12
61#define SO_BSDCOMPAT    14
62#define SO_PASSCRED     17
63#define SO_PEERCRED     18
64#define SO_SNDBUFFORCE  31
65#define SO_RCVBUFFORCE  33
66
67#define SOCK_NONBLOCK     0200
68#define SOCK_CLOEXEC  02000000
69