1 #include <netinet/in.h>
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};}
19 F(sa_family_t
, sin_family
)
20 F(in_port_t
, sin_port
)
21 F(struct in_addr
, sin_addr
)
25 F(uint8_t, s6_addr
[16])
28 struct sockaddr_in6 x
;
29 F(sa_family_t
, sin6_family
)
30 F(in_port_t
, sin6_port
)
31 F(uint32_t, sin6_flowinfo
)
32 F(struct in6_addr
, sin6_addr
)
33 F(uint32_t, sin6_scope_id
)
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
;}
41 F(struct in6_addr
, ipv6mr_multiaddr
)
42 F(unsigned, ipv6mr_interface
)
53 I(uint32_t,htonl(0LL))
54 I(uint16_t,htons(0LL))
55 I(uint32_t,ntohl(0LL))
56 I(uint16_t,ntohs(0LL))
60 C(IPV6_MULTICAST_HOPS
)
62 C(IPV6_MULTICAST_LOOP
)
65 I(int,IN6_IS_ADDR_UNSPECIFIED(&in6addr_any
))
66 I(int,IN6_IS_ADDR_LOOPBACK(&in6addr_any
))
67 I(int,IN6_IS_ADDR_MULTICAST(&in6addr_any
))
68 I(int,IN6_IS_ADDR_LINKLOCAL(&in6addr_any
))
69 I(int,IN6_IS_ADDR_SITELOCAL(&in6addr_any
))
70 I(int,IN6_IS_ADDR_V4MAPPED(&in6addr_any
))
71 I(int,IN6_IS_ADDR_V4COMPAT(&in6addr_any
))
72 I(int,IN6_IS_ADDR_MC_NODELOCAL(&in6addr_any
))
73 I(int,IN6_IS_ADDR_MC_LINKLOCAL(&in6addr_any
))
74 I(int,IN6_IS_ADDR_MC_SITELOCAL(&in6addr_any
))
75 I(int,IN6_IS_ADDR_MC_ORGLOCAL(&in6addr_any
))
76 I(int,IN6_IS_ADDR_MC_GLOBAL(&in6addr_any
))