#include <endian.h> struct msghdr { void* msg_name; socklen_t msg_namelen; struct iovec* msg_iov; #if __BYTE_ORDER == __BIG_ENDIAN int __pad1, msg_iovlen; #else int msg_iovlen, __pad1; #endif void* msg_control; #if __BYTE_ORDER == __BIG_ENDIAN int __pad2; socklen_t msg_controllen; #else socklen_t msg_controllen; int __pad2; #endif int msg_flags; }; struct cmsghdr { #if __BYTE_ORDER == __BIG_ENDIAN int __pad1; socklen_t cmsg_len; #else socklen_t cmsg_len; int __pad1; #endif int cmsg_level; int cmsg_type; };