mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-11-04 14:29:39 +00:00
add posixlib
This commit is contained in:
parent
6a350a0278
commit
427b4f9b08
78
contrib/ports/unix/posixlib/CMakeLists.txt
Normal file
78
contrib/ports/unix/posixlib/CMakeLists.txt
Normal file
@ -0,0 +1,78 @@
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
project(liblwip
|
||||
VERSION 2.2.0
|
||||
DESCRIPTION "lwip library for linux"
|
||||
HOMEPAGE_URL "http://wiki.virtualsquare.org"
|
||||
LANGUAGES C)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CheckIncludeFile)
|
||||
|
||||
set (BUILD_SHARED_LIBS ON)
|
||||
|
||||
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
message(FATAL_ERROR "Lwip shared library is only working on Linux or the Hurd")
|
||||
endif()
|
||||
|
||||
set(LWIP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../..)
|
||||
|
||||
include(${LWIP_DIR}/contrib/ports/CMakeCommon.cmake)
|
||||
|
||||
set (LWIP_DEFINITIONS -DLWIP_DEBUG)
|
||||
set (LWIP_INCLUDE_DIRS
|
||||
"include"
|
||||
"${LWIP_DIR}/src/include"
|
||||
"${LWIP_CONTRIB_DIR}/"
|
||||
"${LWIP_CONTRIB_DIR}/ports/unix/port/include"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/"
|
||||
)
|
||||
|
||||
set (LWIP_EXCLUDE_SLIPIF TRUE)
|
||||
include(${LWIP_CONTRIB_DIR}/ports/unix/Filelists.cmake)
|
||||
include(${LWIP_DIR}/src/Filelists.cmake)
|
||||
|
||||
add_library(lwip ${lwipnoapps_SRCS} ${lwipcontribportunix_SRCS} ${lwipcontribportunixnetifs_SRCS})
|
||||
target_compile_options(lwip PRIVATE ${LWIP_COMPILER_FLAGS})
|
||||
target_compile_definitions(lwip PRIVATE ${LWIP_DEFINITIONS} ${LWIP_MBEDTLS_DEFINITIONS})
|
||||
target_include_directories(lwip PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
|
||||
target_link_libraries(lwip ${LWIP_SANITIZER_LIBS})
|
||||
|
||||
find_library(LIBPTHREAD pthread)
|
||||
target_link_libraries(lwip ${LIBPTHREAD})
|
||||
|
||||
install(TARGETS lwip
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
set_target_properties(lwip PROPERTIES VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR})
|
||||
|
||||
install(DIRECTORY "${LWIP_DIR}/src/include/lwip"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip"
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
install(DIRECTORY "${LWIP_DIR}/src/include/netif"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip"
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
install(FILES lwipopts.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip")
|
||||
|
||||
install(DIRECTORY "${LWIP_DIR}/contrib/ports/unix/port/include/arch"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip"
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
install(DIRECTORY "${LWIP_DIR}/contrib/ports/unix/port/include/netif"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip"
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
install(DIRECTORY "${LWIP_DIR}/contrib/ports/unix/linuxlib/include/posix"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip"
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
add_custom_target(uninstall
|
||||
"${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/Uninstall.cmake")
|
||||
|
22
contrib/ports/unix/posixlib/Uninstall.cmake
Normal file
22
contrib/ports/unix/posixlib/Uninstall.cmake
Normal file
@ -0,0 +1,22 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt")
|
||||
|
||||
if(NOT EXISTS ${MANIFEST})
|
||||
message(FATAL_ERROR "Cannot find install manifest: '${MANIFEST}'")
|
||||
endif()
|
||||
|
||||
file(STRINGS ${MANIFEST} files)
|
||||
foreach(file ${files})
|
||||
if(EXISTS ${file} OR IS_SYMLINK ${file})
|
||||
message(STATUS "Removing: ${file}")
|
||||
|
||||
execute_process(
|
||||
COMMAND rm -f ${file}
|
||||
RESULT_VARIABLE retcode
|
||||
)
|
||||
|
||||
if(NOT "${retcode}" STREQUAL "0")
|
||||
message(WARNING "Failed to remove: ${file}")
|
||||
endif()
|
||||
endif()
|
||||
endforeach(file)
|
76
contrib/ports/unix/posixlib/include/posix/inet.h
Normal file
76
contrib/ports/unix/posixlib/include/posix/inet.h
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Joan Lledó <jlledom@member.fsf.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef HURD_LWIP_POSIX_INET_H
|
||||
#define HURD_LWIP_POSIX_INET_H
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <netinet/udp.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <fcntl.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if LWIP_IPV4
|
||||
|
||||
#define inet_addr_from_ip4addr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr))
|
||||
#define inet_addr_to_ip4addr(target_ipaddr, source_inaddr) (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr))
|
||||
|
||||
#ifdef LWIP_UNIX_HURD
|
||||
#define IP_PKTINFO 8
|
||||
|
||||
struct in_pktinfo {
|
||||
unsigned int ipi_ifindex; /* Interface index */
|
||||
struct in_addr ipi_addr; /* Destination (from header) address */
|
||||
};
|
||||
#endif /* LWIP_UNIX_HURD */
|
||||
|
||||
#endif /* LWIP_IPV4 */
|
||||
|
||||
#if LWIP_IPV6
|
||||
#define inet6_addr_from_ip6addr(target_in6addr, source_ip6addr) {(target_in6addr)->s6_addr32[0] = (source_ip6addr)->addr[0]; \
|
||||
(target_in6addr)->s6_addr32[1] = (source_ip6addr)->addr[1]; \
|
||||
(target_in6addr)->s6_addr32[2] = (source_ip6addr)->addr[2]; \
|
||||
(target_in6addr)->s6_addr32[3] = (source_ip6addr)->addr[3];}
|
||||
#define inet6_addr_to_ip6addr(target_ip6addr, source_in6addr) {(target_ip6addr)->addr[0] = (source_in6addr)->s6_addr32[0]; \
|
||||
(target_ip6addr)->addr[1] = (source_in6addr)->s6_addr32[1]; \
|
||||
(target_ip6addr)->addr[2] = (source_in6addr)->s6_addr32[2]; \
|
||||
(target_ip6addr)->addr[3] = (source_in6addr)->s6_addr32[3]; \
|
||||
ip6_addr_clear_zone(target_ip6addr);}
|
||||
/* ATTENTION: the next define only works because both in6_addr and ip6_addr_t are an u32_t[4] effectively! */
|
||||
#define inet6_addr_to_ip6addr_p(target_ip6addr_p, source_in6addr) ((target_ip6addr_p) = (ip6_addr_t*)(source_in6addr))
|
||||
#endif /* LWIP_IPV6 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HURD_LWIP_POSIX_INET_H */
|
150
contrib/ports/unix/posixlib/include/posix/sockets.h
Normal file
150
contrib/ports/unix/posixlib/include/posix/sockets.h
Normal file
@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Joan Lledó <jlledom@member.fsf.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef HURD_LWIP_POSIX_SOCKET_H
|
||||
#define HURD_LWIP_POSIX_SOCKET_H
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <poll.h>
|
||||
#include <errno.h>
|
||||
#include LWIP_SOCKET_EXTERNAL_HEADER_INET_H
|
||||
typedef size_t msg_iovlen_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef _HAVE_SA_LEN
|
||||
#define HAVE_SA_LEN _HAVE_SA_LEN
|
||||
#else
|
||||
#define HAVE_SA_LEN 0
|
||||
#endif /* _HAVE_SA_LEN */
|
||||
|
||||
/* Address length safe read and write */
|
||||
#if HAVE_SA_LEN
|
||||
#define IP4ADDR_SOCKADDR_SET_LEN(sin) \
|
||||
(sin)->sin_len = sizeof(struct sockaddr_in)
|
||||
#define IP6ADDR_SOCKADDR_SET_LEN(sin6) \
|
||||
(sin6)->sin6_len = sizeof(struct sockaddr_in6)
|
||||
#define IPADDR_SOCKADDR_GET_LEN(addr) \
|
||||
(addr)->sa.sa_len
|
||||
#else
|
||||
#define IP4ADDR_SOCKADDR_SET_LEN(addr)
|
||||
#define IP6ADDR_SOCKADDR_SET_LEN(addr)
|
||||
#define IPADDR_SOCKADDR_GET_LEN(addr) \
|
||||
((addr)->sa.sa_family == AF_INET ? sizeof(struct sockaddr_in) \
|
||||
: ((addr)->sa.sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : 0))
|
||||
#endif /* HAVE_SA_LEN */
|
||||
|
||||
#define SIN_ZERO_LEN sizeof (struct sockaddr) - \
|
||||
__SOCKADDR_COMMON_SIZE - \
|
||||
sizeof (in_port_t) - \
|
||||
sizeof (struct in_addr)
|
||||
|
||||
#if !defined IOV_MAX
|
||||
#define IOV_MAX 0xFFFF
|
||||
#elif IOV_MAX > 0xFFFF
|
||||
#error "IOV_MAX larger than supported by LwIP"
|
||||
#endif /* IOV_MAX */
|
||||
|
||||
#define LWIP_SELECT_MAXNFDS (FD_SETSIZE + LWIP_SOCKET_OFFSET)
|
||||
|
||||
#if LWIP_UDP && LWIP_UDPLITE
|
||||
/*
|
||||
* Options for level IPPROTO_UDPLITE
|
||||
*/
|
||||
#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */
|
||||
#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */
|
||||
#endif /* LWIP_UDP && LWIP_UDPLITE*/
|
||||
|
||||
#if 0
|
||||
void lwip_socket_thread_init(void); /* LWIP_NETCONN_SEM_PER_THREAD==1: initialize thread-local semaphore */
|
||||
void lwip_socket_thread_cleanup(void); /* LWIP_NETCONN_SEM_PER_THREAD==1: destroy thread-local semaphore */
|
||||
|
||||
int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
|
||||
int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen);
|
||||
int lwip_shutdown(int s, int how);
|
||||
int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);
|
||||
int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);
|
||||
int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
|
||||
int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
|
||||
int lwip_close(int s);
|
||||
int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen);
|
||||
int lwip_listen(int s, int backlog);
|
||||
ssize_t lwip_recv(int s, void *mem, size_t len, int flags);
|
||||
ssize_t lwip_read(int s, void *mem, size_t len);
|
||||
ssize_t lwip_readv(int s, const struct iovec *iov, int iovcnt);
|
||||
ssize_t lwip_recvfrom(int s, void *mem, size_t len, int flags,
|
||||
struct sockaddr *from, socklen_t *fromlen);
|
||||
ssize_t lwip_recvmsg(int s, struct msghdr *message, int flags);
|
||||
ssize_t lwip_send(int s, const void *dataptr, size_t size, int flags);
|
||||
ssize_t lwip_sendmsg(int s, const struct msghdr *message, int flags);
|
||||
ssize_t lwip_sendto(int s, const void *dataptr, size_t size, int flags,
|
||||
const struct sockaddr *to, socklen_t tolen);
|
||||
int lwip_socket(int domain, int type, int protocol);
|
||||
ssize_t lwip_write(int s, const void *dataptr, size_t size);
|
||||
ssize_t lwip_writev(int s, const struct iovec *iov, int iovcnt);
|
||||
#if LWIP_SOCKET_SELECT
|
||||
int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
|
||||
struct timeval *timeout);
|
||||
#endif
|
||||
#if LWIP_SOCKET_POLL
|
||||
int lwip_poll(struct pollfd *fds, nfds_t nfds, int timeout);
|
||||
#endif
|
||||
int lwip_ioctl(int s, long cmd, void *argp);
|
||||
int lwip_fcntl(int s, int cmd, int val);
|
||||
const char *lwip_inet_ntop(int af, const void *src, char *dst, socklen_t size);
|
||||
int lwip_inet_pton(int af, const char *src, void *dst);
|
||||
#endif
|
||||
|
||||
/* Unsuported indetifiers */
|
||||
#ifndef SO_NO_CHECK
|
||||
#define SO_NO_CHECK 0xFF
|
||||
#endif
|
||||
#ifndef SO_BINDTODEVICE
|
||||
#define SO_BINDTODEVICE 0xFE
|
||||
#endif
|
||||
#ifndef MSG_MORE
|
||||
#define MSG_MORE 0x0
|
||||
#endif
|
||||
#ifndef TCP_KEEPALIVE
|
||||
#define TCP_KEEPALIVE 0xFF
|
||||
#endif
|
||||
#ifndef TCP_KEEPIDLE
|
||||
#define TCP_KEEPIDLE 0xFE
|
||||
#endif
|
||||
#ifndef TCP_KEEPINTVL
|
||||
#define TCP_KEEPINTVL 0xFD
|
||||
#endif
|
||||
#ifndef TCP_KEEPCNT
|
||||
#define TCP_KEEPCNT 0xFC
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HURD_LWIP_POSIX_SOCKET_H */
|
180
contrib/ports/unix/posixlib/lwipopts.h
Normal file
180
contrib/ports/unix/posixlib/lwipopts.h
Normal file
@ -0,0 +1,180 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Joan Lledó <jlledom@member.fsf.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef UNIX_LWIP_LWIPOPTS_H
|
||||
#define UNIX_LWIP_LWIPOPTS_H
|
||||
|
||||
/* An OS is present */
|
||||
#define NO_SYS 0
|
||||
|
||||
/* Sockets API config */
|
||||
#define LWIP_COMPAT_SOCKETS 0
|
||||
#define LWIP_SOCKET_OFFSET 1
|
||||
#define LWIP_POLL 1
|
||||
|
||||
/* User posix socket headers */
|
||||
#define LWIP_SOCKET_EXTERNAL_HEADERS 1
|
||||
#define LWIP_SOCKET_EXTERNAL_HEADER_SOCKETS_H "posix/sockets.h"
|
||||
#define LWIP_SOCKET_EXTERNAL_HEADER_INET_H "posix/inet.h"
|
||||
#define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS 1
|
||||
|
||||
/* Use Glibc malloc()/free() */
|
||||
#define MEM_LIBC_MALLOC 1
|
||||
#define MEMP_MEM_MALLOC 1
|
||||
#define MEM_USE_POOLS 0
|
||||
|
||||
/* Only send complete packets to the device */
|
||||
#define LWIP_NETIF_TX_SINGLE_PBUF 1
|
||||
|
||||
/* Randomize local ports */
|
||||
#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 1
|
||||
|
||||
/* Glibc sends more than one packet in a row during an ARP resolution */
|
||||
#define ARP_QUEUEING 1
|
||||
#define ARP_QUEUE_LEN 10
|
||||
|
||||
/*
|
||||
* Activate loopback, but don't use lwip's default loopback interface,
|
||||
* we provide our own.
|
||||
*/
|
||||
#define LWIP_NETIF_LOOPBACK 1
|
||||
#define LWIP_HAVE_LOOPIF 0
|
||||
|
||||
/* IPv4 stuff */
|
||||
#define IP_FORWARD 1
|
||||
|
||||
/* SLAAC support and other IPv6 stuff */
|
||||
#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1
|
||||
#define LWIP_IPV6_SEND_ROUTER_SOLICIT 1
|
||||
#define LWIP_IPV6_AUTOCONFIG 1
|
||||
#define LWIP_IPV6_FORWARD 1
|
||||
#define MEMP_NUM_MLD6_GROUP 16
|
||||
#define LWIP_IPV6_NUM_ADDRESSES 6
|
||||
#define IPV6_FRAG_COPYHEADER 1
|
||||
|
||||
/* TCP tuning */
|
||||
#define TCP_MSS 1460
|
||||
#define TCP_WND 0xFFFF
|
||||
#define LWIP_WND_SCALE 1
|
||||
#define TCP_RCV_SCALE 0x1
|
||||
#define TCP_SND_BUF TCP_WND
|
||||
|
||||
/* Throughput settings */
|
||||
#define LWIP_CHECKSUM_ON_COPY 1
|
||||
|
||||
/* Disable stats */
|
||||
#define LWIP_STATS 0
|
||||
#define LWIP_STATS_DISPLAY 0
|
||||
|
||||
/* Enable all socket operations */
|
||||
#define LWIP_TCP_KEEPALIVE 1
|
||||
#define LWIP_SO_SNDTIMEO 1
|
||||
#define LWIP_SO_RCVTIMEO 1
|
||||
#define LWIP_SO_RCVBUF 1
|
||||
#define LWIP_SO_LINGER 1
|
||||
#define SO_REUSE 1
|
||||
#define LWIP_MULTICAST_TX_OPTIONS 1
|
||||
|
||||
/* Enable modules */
|
||||
#define LWIP_ARP 1
|
||||
#define LWIP_ETHERNET 1
|
||||
#define LWIP_IPV4 1
|
||||
#define LWIP_ICMP 1
|
||||
#define LWIP_IGMP 1
|
||||
#define LWIP_RAW 1
|
||||
#define LWIP_UDP 1
|
||||
#define LWIP_UDPLITE 1
|
||||
#define LWIP_TCP 1
|
||||
#define LWIP_IPV6 1
|
||||
#define LWIP_ICMP6 1
|
||||
#define LWIP_IPV6_MLD 1
|
||||
|
||||
/* Don't abort the whole stack when an error is detected */
|
||||
#define LWIP_NOASSERT_ON_ERROR 1
|
||||
|
||||
/* Threading options */
|
||||
#define LWIP_TCPIP_CORE_LOCKING 1
|
||||
|
||||
/* If the system is 64 bit */
|
||||
#if defined __LP64__
|
||||
#define MEM_ALIGNMENT 8
|
||||
#else
|
||||
#define MEM_ALIGNMENT 4
|
||||
#endif
|
||||
|
||||
#if !NO_SYS
|
||||
void sys_check_core_locking(void);
|
||||
#define LWIP_ASSERT_CORE_LOCKED() sys_check_core_locking()
|
||||
#if 0
|
||||
void sys_mark_tcpip_thread(void);
|
||||
#define LWIP_MARK_TCPIP_THREAD() sys_mark_tcpip_thread()
|
||||
|
||||
#if LWIP_TCPIP_CORE_LOCKING
|
||||
void sys_lock_tcpip_core(void);
|
||||
#define LOCK_TCPIP_CORE() sys_lock_tcpip_core()
|
||||
void sys_unlock_tcpip_core(void);
|
||||
#define UNLOCK_TCPIP_CORE() sys_unlock_tcpip_core()
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Debug mode */
|
||||
#ifdef LWIP_DEBUG
|
||||
#define ETHARP_DEBUG LWIP_DBG_OFF
|
||||
#define NETIF_DEBUG LWIP_DBG_OFF
|
||||
#define PBUF_DEBUG LWIP_DBG_OFF
|
||||
#define API_LIB_DEBUG LWIP_DBG_OFF
|
||||
#define API_MSG_DEBUG LWIP_DBG_OFF
|
||||
#define SOCKETS_DEBUG LWIP_DBG_OFF
|
||||
#define ICMP_DEBUG LWIP_DBG_OFF
|
||||
#define IGMP_DEBUG LWIP_DBG_OFF
|
||||
#define INET_DEBUG LWIP_DBG_OFF
|
||||
#define IP_DEBUG LWIP_DBG_OFF
|
||||
#define IP_REASS_DEBUG LWIP_DBG_OFF
|
||||
#define RAW_DEBUG LWIP_DBG_OFF
|
||||
#define MEM_DEBUG LWIP_DBG_OFF
|
||||
#define MEMP_DEBUG LWIP_DBG_OFF
|
||||
#define SYS_DEBUG LWIP_DBG_OFF
|
||||
#define TIMERS_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_INPUT_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_FR_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_RTO_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_CWND_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_WND_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_RST_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_QLEN_DEBUG LWIP_DBG_OFF
|
||||
#define UDP_DEBUG LWIP_DBG_OFF
|
||||
#define TCPIP_DEBUG LWIP_DBG_OFF
|
||||
#define SLIP_DEBUG LWIP_DBG_OFF
|
||||
#define DHCP_DEBUG LWIP_DBG_OFF
|
||||
#define AUTOIP_DEBUG LWIP_DBG_OFF
|
||||
#define DNS_DEBUG LWIP_DBG_OFF
|
||||
#define IP6_DEBUG LWIP_DBG_OFF
|
||||
#endif
|
||||
|
||||
#endif /* UNIX_LWIP_LWIPOPTS_H */
|
Loading…
Reference in New Issue
Block a user