1#include <netinet/in.h> 2#define T(t) (t*)0; 3#define F(t,n) {t *y = &x.n;} 4#define C(n) switch(n){case n:;} 5#define I(t,e) {t x[sizeof(t)==sizeof(e)] = {e};} 6static void f() 7{ 8T(in_port_t) 9T(in_addr_t) 10T(sa_family_t) 11T(uint8_t) 12T(uint32_t) 13{ 14struct in_addr x; 15F(in_addr_t, s_addr) 16} 17{ 18struct sockaddr_in x; 19F(sa_family_t, sin_family) 20F(in_port_t, sin_port) 21F(struct in_addr, sin_addr) 22} 23{ 24struct in6_addr x; 25F(uint8_t, s6_addr[16]) 26} 27{ 28struct sockaddr_in6 x; 29F(sa_family_t, sin6_family) 30F(in_port_t, sin6_port) 31F(uint32_t, sin6_flowinfo) 32F(struct in6_addr, sin6_addr) 33F(uint32_t, sin6_scope_id) 34} 35{const struct in6_addr *x = &in6addr_any;} 36{const struct in6_addr *x = &in6addr_loopback;} 37{struct in6_addr x = IN6ADDR_ANY_INIT;} 38{struct in6_addr x = IN6ADDR_LOOPBACK_INIT;} 39{ 40struct ipv6_mreq x; 41F(struct in6_addr, ipv6mr_multiaddr) 42F(unsigned, ipv6mr_interface) 43} 44C(IPPROTO_IP) 45C(IPPROTO_IPV6) 46C(IPPROTO_ICMP) 47C(IPPROTO_RAW) 48C(IPPROTO_TCP) 49C(IPPROTO_UDP) 50C(INADDR_ANY) 51C(INADDR_BROADCAST) 52C(INET_ADDRSTRLEN) 53I(uint32_t,htonl(0LL)) 54I(uint16_t,htons(0LL)) 55I(uint32_t,ntohl(0LL)) 56I(uint16_t,ntohs(0LL)) 57C(INET6_ADDRSTRLEN) 58C(IPV6_JOIN_GROUP) 59C(IPV6_LEAVE_GROUP) 60C(IPV6_MULTICAST_HOPS) 61C(IPV6_MULTICAST_IF) 62C(IPV6_MULTICAST_LOOP) 63C(IPV6_UNICAST_HOPS) 64C(IPV6_V6ONLY) 65I(int,IN6_IS_ADDR_UNSPECIFIED(&in6addr_any)) 66I(int,IN6_IS_ADDR_LOOPBACK(&in6addr_any)) 67I(int,IN6_IS_ADDR_MULTICAST(&in6addr_any)) 68I(int,IN6_IS_ADDR_LINKLOCAL(&in6addr_any)) 69I(int,IN6_IS_ADDR_SITELOCAL(&in6addr_any)) 70I(int,IN6_IS_ADDR_V4MAPPED(&in6addr_any)) 71I(int,IN6_IS_ADDR_V4COMPAT(&in6addr_any)) 72I(int,IN6_IS_ADDR_MC_NODELOCAL(&in6addr_any)) 73I(int,IN6_IS_ADDR_MC_LINKLOCAL(&in6addr_any)) 74I(int,IN6_IS_ADDR_MC_SITELOCAL(&in6addr_any)) 75I(int,IN6_IS_ADDR_MC_ORGLOCAL(&in6addr_any)) 76I(int,IN6_IS_ADDR_MC_GLOBAL(&in6addr_any)) 77} 78