Fixed constant initializer problem in ip_addr_t by having ip6 first

This commit is contained in:
goldsimon 2015-04-10 07:41:40 +02:00
parent ffd45a2261
commit d31dbc6798
3 changed files with 17 additions and 34 deletions

View File

@ -44,24 +44,8 @@
#include "lwip/netif.h" #include "lwip/netif.h"
/* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */ /* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */
const ip_addr_t ip_addr_any = { const ip_addr_t ip_addr_any = IPADDR4_INIT(IPADDR_ANY);
#if LWIP_IPV6 const ip_addr_t ip_addr_broadcast = IPADDR4_INIT(IPADDR_BROADCAST);
{
#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
};
/** /**
* Determine if an address is a broadcast address on a network interface * Determine if an address is a broadcast address on a network interface

View File

@ -48,13 +48,7 @@
#include "lwip/def.h" #include "lwip/def.h"
/* used by IP6_ADDR_ANY(6) in ip6_addr.h */ /* used by IP6_ADDR_ANY(6) in ip6_addr.h */
const ip_addr_t ip6_addr_any = { const ip_addr_t ip6_addr_any = IPADDR6_INIT(0xaul, 0xbul, 0xcul, 0xdul);
#if LWIP_IPV4
{ 0ul }, IPADDR_TYPE_V6
#else
0ul, 0ul, 0ul, 0ul
#endif
};
#ifndef isprint #ifndef isprint
#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) #define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up)

View File

@ -48,8 +48,8 @@ extern "C" {
*/ */
typedef struct _ip_addr { typedef struct _ip_addr {
union { union {
ip4_addr_t ip4;
ip6_addr_t ip6; ip6_addr_t ip6;
ip4_addr_t ip4;
} addr; } addr;
u8_t type; u8_t type;
} ip_addr_t; } ip_addr_t;
@ -58,6 +58,9 @@ typedef struct _ip_addr {
#define IPADDR_TYPE_V4 0U #define IPADDR_TYPE_V4 0U
#define IPADDR_TYPE_V6 6U #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_L(ipaddr) ((ipaddr)->type == IPADDR_TYPE_V6)
#define IP_IS_V6(ipaddr) (((ipaddr) != NULL) && IP_IS_V6_L(ipaddr)) #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) #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 #if LWIP_IPV4
typedef ip4_addr_t ip_addr_t; typedef ip4_addr_t ip_addr_t;
#define IP_IS_V6_L(ipaddr) 0 #define IPADDR4_INIT(u32val) { u32val }
#define IP_IS_V6(ipaddr) 0 #define IP_IS_V6_L(ipaddr) 0
#define IP_IS_V6(ipaddr) 0
#define IP_SET_TYPE_L(ipaddr, iptype) #define IP_SET_TYPE_L(ipaddr, iptype)
#define IP_SET_TYPE(ipaddr, iptype) #define IP_SET_TYPE(ipaddr, iptype)
#define ip4_2_ip(ipaddr, unused) (ipaddr) #define ip4_2_ip(ipaddr, unused) (ipaddr)
#define ip_2_ip4(ipaddr) (ipaddr) #define ip_2_ip4(ipaddr) (ipaddr)
#define ip_addr_copy(dest, src) ip4_addr_copy(dest, src) #define ip_addr_copy(dest, src) ip4_addr_copy(dest, src)
#define ip_addr_copy_from_ip4(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 */ #else /* LWIP_IPV4 */
typedef ip6_addr_t ip_addr_t; typedef ip6_addr_t ip_addr_t;
#define IP_IS_V6_L(ipaddr) 1 #define IPADDR6_INIT(a, b, c, d) { a, b, c, d }
#define IP_IS_V6(ipaddr) 1 #define IP_IS_V6_L(ipaddr) 1
#define IP_IS_V6(ipaddr) 1
#define IP_SET_TYPE_L(ipaddr, iptype) #define IP_SET_TYPE_L(ipaddr, iptype)
#define IP_SET_TYPE(ipaddr, iptype) #define IP_SET_TYPE(ipaddr, iptype)
#define ip6_2_ip(ipaddr, unused) (ipaddr) #define ip6_2_ip(ipaddr, unused) (ipaddr)
#define ip_2_ip6(ipaddr) (ipaddr) #define ip_2_ip6(ipaddr) (ipaddr)
#define ip_addr_copy(dest, src) ip6_addr_copy(dest, src) #define ip_addr_copy(dest, src) ip6_addr_copy(dest, src)
#define ip_addr_copy_from_ip6(dest, src) ip6_addr_copy(dest, src) #define ip_addr_copy_from_ip6(dest, src) ip6_addr_copy(dest, src)