Commit a6ed2b84 authored by Yang Tse's avatar Yang Tse
Browse files

BSD-style lwIP TCP/IP stack support:

Allow compilation of libcurl and curl using BSD-style lwIP on Win32.

In order to compile libcurl and curl with this support it is necessary
to edit files lib/config-win32.h and src/config-win32.h and uncomment
a line to make definition of preprocessor symbol USE_LWIPSOCK visible.

Afterwards you can compile as usual.

In order to use compiled library with BSD-style lwIP TCP/IP stack in
your program it is mandatory that you include lwIP header file <lwip/opt.h>
before including <curl/curl.h> or <curl/multi.h>

Compilation has been verified with lwIP 1.4.0 and contrib-1.4.0 from:

http://download.savannah.gnu.org/releases/lwip/lwip-1.4.0.zip
http://download.savannah.gnu.org/releases/lwip/contrib-1.4.0.zip

Have fun!
parent b56bbabe
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@
#include <time.h>

#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || defined(__LWIP_OPT_H__))
/* The check above prevents the winsock2 inclusion if winsock.h already was
   included, since they can't co-exist without problems */
#include <winsock2.h>
@@ -78,6 +78,10 @@
#include <sys/socket.h>
#endif

#if defined(__LWIP_OPT_H__)
#include <lwip/sockets.h>
#endif

#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
#include <sys/time.h>
#endif
+25 −0
Original line number Diff line number Diff line
@@ -388,6 +388,31 @@
/* Define this if you have struct timeval */
#define HAVE_STRUCT_TIMEVAL 1

/* ---------------------------------------------------------------- */
/*               BSD-style lwIP TCP/IP stack SPECIFIC               */
/* ---------------------------------------------------------------- */

/* Define this to use BSD-style lwIP TCP/IP stack  */
/* #define USE_LWIPSOCK 1 */

#ifdef USE_LWIPSOCK
#  undef USE_WINSOCK
#  undef HAVE_WINSOCK_H
#  undef HAVE_WINSOCK2_H
#  undef HAVE_WS2TCPIP_H
#  undef HAVE_ERRNO_H
#  undef HAVE_GETHOSTNAME
#  undef HAVE_GETNAMEINFO
#  undef LWIP_POSIX_SOCKETS_IO_NAMES
#  define HAVE_FREEADDRINFO
#  define HAVE_GETADDRINFO
#  define HAVE_GETHOSTBYNAME
#  define HAVE_GETHOSTBYNAME_R
#  define HAVE_GETHOSTBYNAME_R_6
#  define LWIP_POSIX_SOCKETS_IO_NAMES 0
#  define SOCKET int
#endif

/* ---------------------------------------------------------------- */
/*                        Watt-32 tcp/ip SPECIFIC                   */
/* ---------------------------------------------------------------- */
+5 −0
Original line number Diff line number Diff line
@@ -251,6 +251,11 @@
#  endif
#endif

#ifdef USE_LWIPSOCK
#  include <lwip/sockets.h>
#  include <lwip/netdb.h>
#endif

#ifdef HAVE_EXTRA_STRICMP_H
#  include <extra/stricmp.h>
#endif
+25 −0
Original line number Diff line number Diff line
@@ -262,6 +262,31 @@
/* Define this if struct sockaddr_in6 has the sin6_scope_id member */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* ---------------------------------------------------------------- */
/*               BSD-style lwIP TCP/IP stack SPECIFIC               */
/* ---------------------------------------------------------------- */

/* Define this to use BSD-style lwIP TCP/IP stack  */
/* #define USE_LWIPSOCK 1 */

#ifdef USE_LWIPSOCK
#  undef USE_WINSOCK
#  undef HAVE_WINSOCK_H
#  undef HAVE_WINSOCK2_H
#  undef HAVE_WS2TCPIP_H
#  undef HAVE_ERRNO_H
#  undef HAVE_GETHOSTNAME
#  undef HAVE_GETNAMEINFO
#  undef LWIP_POSIX_SOCKETS_IO_NAMES
#  define HAVE_FREEADDRINFO
#  define HAVE_GETADDRINFO
#  define HAVE_GETHOSTBYNAME
#  define HAVE_GETHOSTBYNAME_R
#  define HAVE_GETHOSTBYNAME_R_6
#  define LWIP_POSIX_SOCKETS_IO_NAMES 0
#  define SOCKET int
#endif

/* ---------------------------------------------------------------- */
/*                        Watt-32 tcp/ip SPECIFIC                   */
/* ---------------------------------------------------------------- */
+5 −0
Original line number Diff line number Diff line
@@ -135,6 +135,11 @@
#  endif
#endif

#ifdef USE_LWIPSOCK
#  include <lwip/sockets.h>
#  include <lwip/netdb.h>
#endif

#ifdef TPF
#  include <sys/socket.h>
   /* change which select is used for the curl command line tool */