diff --git a/src/core/ipv4/ip4_addr.c b/src/core/ipv4/ip4_addr.c index ae24849a..b69bf27e 100644 --- a/src/core/ipv4/ip4_addr.c +++ b/src/core/ipv4/ip4_addr.c @@ -44,24 +44,8 @@ #include "lwip/netif.h" /* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */ -const ip_addr_t ip_addr_any = { -#if LWIP_IPV6 - { -#endif - IPADDR_ANY -#if LWIP_IPV6 - }, IPADDR_TYPE_V4 -#endif - }; -const ip_addr_t ip_addr_broadcast = { -#if LWIP_IPV6 - { -#endif - IPADDR_BROADCAST -#if LWIP_IPV6 - }, IPADDR_TYPE_V4 -#endif - }; +const ip_addr_t ip_addr_any = IPADDR4_INIT(IPADDR_ANY); +const ip_addr_t ip_addr_broadcast = IPADDR4_INIT(IPADDR_BROADCAST); /** * Determine if an address is a broadcast address on a network interface diff --git a/src/core/ipv6/ip6_addr.c b/src/core/ipv6/ip6_addr.c index 182bfd4b..879b2474 100644 --- a/src/core/ipv6/ip6_addr.c +++ b/src/core/ipv6/ip6_addr.c @@ -48,13 +48,7 @@ #include "lwip/def.h" /* used by IP6_ADDR_ANY(6) in ip6_addr.h */ -const ip_addr_t ip6_addr_any = { -#if LWIP_IPV4 - { 0ul }, IPADDR_TYPE_V6 -#else - 0ul, 0ul, 0ul, 0ul -#endif -}; +const ip_addr_t ip6_addr_any = IPADDR6_INIT(0xaul, 0xbul, 0xcul, 0xdul); #ifndef isprint #define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) diff --git a/src/include/lwip/ip_addr.h b/src/include/lwip/ip_addr.h index 100af175..4f569e7c 100644 --- a/src/include/lwip/ip_addr.h +++ b/src/include/lwip/ip_addr.h @@ -48,8 +48,8 @@ extern "C" { */ typedef struct _ip_addr { union { - ip4_addr_t ip4; ip6_addr_t ip6; + ip4_addr_t ip4; } addr; u8_t type; } ip_addr_t; @@ -58,6 +58,9 @@ typedef struct _ip_addr { #define IPADDR_TYPE_V4 0U #define IPADDR_TYPE_V6 6U +#define IPADDR4_INIT(u32val) { { { u32val, 0ul, 0ul, 0ul } }, IPADDR_TYPE_V4 } +#define IPADDR6_INIT(a, b, c, d) { { { a, b, c, d } }, IPADDR_TYPE_V6 } + #define IP_IS_V6_L(ipaddr) ((ipaddr)->type == IPADDR_TYPE_V6) #define IP_IS_V6(ipaddr) (((ipaddr) != NULL) && IP_IS_V6_L(ipaddr)) #define IP_SET_TYPE_L(ipaddr, iptype) do { (ipaddr)->type = (iptype); }while(0) @@ -145,12 +148,13 @@ int ipaddr_aton(const char *cp, ip_addr_t *addr); #if LWIP_IPV4 typedef ip4_addr_t ip_addr_t; -#define IP_IS_V6_L(ipaddr) 0 -#define IP_IS_V6(ipaddr) 0 +#define IPADDR4_INIT(u32val) { u32val } +#define IP_IS_V6_L(ipaddr) 0 +#define IP_IS_V6(ipaddr) 0 #define IP_SET_TYPE_L(ipaddr, iptype) #define IP_SET_TYPE(ipaddr, iptype) -#define ip4_2_ip(ipaddr, unused) (ipaddr) -#define ip_2_ip4(ipaddr) (ipaddr) +#define ip4_2_ip(ipaddr, unused) (ipaddr) +#define ip_2_ip4(ipaddr) (ipaddr) #define ip_addr_copy(dest, src) ip4_addr_copy(dest, src) #define ip_addr_copy_from_ip4(dest, src) ip4_addr_copy(dest, src) @@ -177,12 +181,13 @@ typedef ip4_addr_t ip_addr_t; #else /* LWIP_IPV4 */ typedef ip6_addr_t ip_addr_t; -#define IP_IS_V6_L(ipaddr) 1 -#define IP_IS_V6(ipaddr) 1 +#define IPADDR6_INIT(a, b, c, d) { a, b, c, d } +#define IP_IS_V6_L(ipaddr) 1 +#define IP_IS_V6(ipaddr) 1 #define IP_SET_TYPE_L(ipaddr, iptype) #define IP_SET_TYPE(ipaddr, iptype) -#define ip6_2_ip(ipaddr, unused) (ipaddr) -#define ip_2_ip6(ipaddr) (ipaddr) +#define ip6_2_ip(ipaddr, unused) (ipaddr) +#define ip_2_ip6(ipaddr) (ipaddr) #define ip_addr_copy(dest, src) ip6_addr_copy(dest, src) #define ip_addr_copy_from_ip6(dest, src) ip6_addr_copy(dest, src)