struct sda6 { union { struct in6_addr addr; u_int8_t addr8[16]; // To be removed (I hope) u_int32_t addr32[4]; } _sda6; #define addr8 _sda6.addr8 #define addr32 _sda6.addr32 }; struct cidr { sa_family_t ai_family; union { u_int32_t addr4; struct sda6 addr6; } _addr; u_int8_t bits; }; struct bl { sa_family_t ai_family; union { u_int32_t addr4; struct sda6 addr6; } _addr; int8_t b; int8_t w; }; #define addr4 _addr.addr4 #define addr6 _addr.addr6