1 #include <endian.h>
2 
3 struct 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 
23 struct 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 SO_DEBUG        1
36 #define SO_REUSEADDR    2
37 #define SO_TYPE         3
38 #define SO_ERROR        4
39 #define SO_DONTROUTE    5
40 #define SO_BROADCAST    6
41 #define SO_SNDBUF       7
42 #define SO_RCVBUF       8
43 #define SO_KEEPALIVE    9
44 #define SO_OOBINLINE    10
45 #define SO_NO_CHECK     11
46 #define SO_PRIORITY     12
47 #define SO_LINGER       13
48 #define SO_BSDCOMPAT    14
49 #define SO_REUSEPORT    15
50 #define SO_RCVLOWAT     16
51 #define SO_SNDLOWAT     17
52 #define SO_RCVTIMEO     18
53 #define SO_SNDTIMEO     19
54 #define SO_PASSCRED     20
55 #define SO_PEERCRED     21
56 #define SO_ACCEPTCONN   30
57 #define SO_PEERSEC      31
58 #define SO_SNDBUFFORCE  32
59 #define SO_RCVBUFFORCE  33
60 #define SO_PROTOCOL     38
61 #define SO_DOMAIN       39
62