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