Trying to build a piece of code that uses CMSG_NXTHDR macro using CLANG (tested with CLANG 3.8) with all warnings enabled using -Weverything generates the following warnings: clang++ -Weverything ./nettest.cpp -c -o nettest.o ./nettest.cpp:5:12: warning: cast from 'unsigned char *' to 'struct cmsghdr *' increases required alignment from 1 to 4 [-Wcast-align] return CMSG_NXTHDR(mhdr, cmsg); ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/sys/socket.h:270:8: note: expanded from macro 'CMSG_NXTHDR' ? 0 : (struct cmsghdr *)__CMSG_NEXT(cmsg)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./nettest.cpp:5:12: warning: comparison of integers of different signs: 'unsigned long' and 'long' [-Wsign-compare] return CMSG_NXTHDR(mhdr, cmsg); ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/sys/socket.h:269:44: note: expanded from macro 'CMSG_NXTHDR' __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 warnings generated. The testing source is below: #include cmsghdr* GET_CMSG_NXTHDR(msghdr* mhdr, cmsghdr* cmsg); cmsghdr* GET_CMSG_NXTHDR(msghdr* mhdr, cmsghdr* cmsg) { return CMSG_NXTHDR(mhdr, cmsg); } Would it be possible to fix it so that no warnings are generated? We are building our application with -Weverything and currently we need to disable these two warnings around the CMSG_NXTHDR macro invocation. Thank you in advance for considering that! Jan