Alas illumos doesn't define s6_addr8, s6_addr16, and s6_addr32 outside the kernel. But netinet/in.h gives an idea how to provide the definitions. --- swipl-9.2.4/packages/clib/nonblockio.c.orig 2024-03-23 21:33:40.000000000 +0100 +++ swipl-9.2.4/packages/clib/nonblockio.c 2024-05-09 21:02:38.711713290 +0200 @@ -182,6 +182,8 @@ #define s6_addr16 s6_words #elif defined(__APPLE__) || defined(__FreeBSD__) #define s6_addr16 __u6_addr.__u6_addr16 +#elif defined(__illumos__) +#define s6_addr16 _S6_un._S6_u16 #endif #endif