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