On OS X, sys/socket.h has #define CMSG_LEN(l) (ALIGN(sizeof(struct cmsghdr)) + (l)) and #define CMSG_SPACE(l) (ALIGN(sizeof(struct cmsghdr)) + ALIGN(l)) where i386/param.h has #define ALIGNBYTES 3 #define ALIGN(p) (((unsigned int)(p) + ALIGNBYTES) &~ ALIGNBYTES) Should the Solaris 8 versions of CMSG_* also use some kind of ALIGN macro?