Browse Source

changed the semantics of LWIP_PREFIX_BYTEORDER_FUNCS to prevent "symbol already defined" i.e. when linking to winsock

STABLE-2_1_x
goldsimon 16 years ago
parent
commit
03e4eb4de8
  1. 4
      CHANGELOG
  2. 12
      src/core/def.c
  3. 46
      src/include/lwip/def.h

4
CHANGELOG

@ -211,6 +211,10 @@ HISTORY
++ Bugfixes:
2010-05-16: Simon Goldschmidt
* def.h/.c: changed the semantics of LWIP_PREFIX_BYTEORDER_FUNCS to prevent
"symbol already defined" i.e. when linking to winsock
2010-05-05: Simon Goldschmidt
* def.h, timers.c: Fixed bug #29769 (sys_check_timeouts: sys_now() may
overflow)

12
src/core/def.c

@ -61,7 +61,7 @@
* @return n in network byte order
*/
u16_t
htons(u16_t n)
lwip_htons(u16_t n)
{
return ((n & 0xff) << 8) | ((n & 0xff00) >> 8);
}
@ -73,9 +73,9 @@ htons(u16_t n)
* @return n in host byte order
*/
u16_t
ntohs(u16_t n)
lwip_ntohs(u16_t n)
{
return htons(n);
return lwip_htons(n);
}
/**
@ -85,7 +85,7 @@ ntohs(u16_t n)
* @return n in network byte order
*/
u32_t
htonl(u32_t n)
lwip_htonl(u32_t n)
{
return ((n & 0xff) << 24) |
((n & 0xff00) << 8) |
@ -100,9 +100,9 @@ htonl(u32_t n)
* @return n in host byte order
*/
u32_t
ntohl(u32_t n)
lwip_ntohl(u32_t n)
{
return htonl(n);
return lwip_htonl(n);
}
#endif /* (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) */

46
src/include/lwip/def.h

@ -58,6 +58,13 @@ extern "C" {
#define LWIP_MAKE_U16(a, b) ((b << 8) | a)
#endif
#ifndef LWIP_PLATFORM_BYTESWAP
#define LWIP_PLATFORM_BYTESWAP 0
#endif
#ifndef LWIP_PREFIX_BYTEORDER_FUNCS
/* workaround for naming collisions on some platforms */
#ifdef htons
#undef htons
#endif /* htons */
@ -71,33 +78,28 @@ extern "C" {
#undef ntohl
#endif /* ntohl */
#ifndef LWIP_PLATFORM_BYTESWAP
#define LWIP_PLATFORM_BYTESWAP 0
#endif
#define htons(x) lwip_htons(x)
#define ntohs(x) lwip_ntohs(x)
#define htonl(x) lwip_htonl(x)
#define ntohl(x) lwip_ntohl(x)
#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */
#if BYTE_ORDER == BIG_ENDIAN
#define htons(x) (x)
#define ntohs(x) (x)
#define htonl(x) (x)
#define ntohl(x) (x)
#define lwip_htons(x) (x)
#define lwip_ntohs(x) (x)
#define lwip_htonl(x) (x)
#define lwip_ntohl(x) (x)
#else /* BYTE_ORDER != BIG_ENDIAN */
#ifdef LWIP_PREFIX_BYTEORDER_FUNCS
/* workaround for naming collisions on some platforms */
#define htons lwip_htons
#define ntohs lwip_ntohs
#define htonl lwip_htonl
#define ntohl lwip_ntohl
#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */
#if LWIP_PLATFORM_BYTESWAP
#define htons(x) LWIP_PLATFORM_HTONS(x)
#define ntohs(x) LWIP_PLATFORM_HTONS(x)
#define htonl(x) LWIP_PLATFORM_HTONL(x)
#define ntohl(x) LWIP_PLATFORM_HTONL(x)
#define lwip_htons(x) LWIP_PLATFORM_HTONS(x)
#define lwip_ntohs(x) LWIP_PLATFORM_HTONS(x)
#define lwip_htonl(x) LWIP_PLATFORM_HTONL(x)
#define lwip_ntohl(x) LWIP_PLATFORM_HTONL(x)
#else /* LWIP_PLATFORM_BYTESWAP */
u16_t htons(u16_t x);
u16_t ntohs(u16_t x);
u32_t htonl(u32_t x);
u32_t ntohl(u32_t x);
u16_t lwip_htons(u16_t x);
u16_t lwip_ntohs(u16_t x);
u32_t lwip_htonl(u32_t x);
u32_t lwip_ntohl(u32_t x);
#endif /* LWIP_PLATFORM_BYTESWAP */
#endif /* BYTE_ORDER == BIG_ENDIAN */

Loading…
Cancel
Save