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