diff --git a/src/sys/include/net/lwipopts.h b/src/sys/include/net/lwipopts.h index fc2ca5d..c697236 100644 --- a/src/sys/include/net/lwipopts.h +++ b/src/sys/include/net/lwipopts.h @@ -32,34 +32,670 @@ #ifndef LWIP_HDR_LWIPOPTS_H #define LWIP_HDR_LWIPOPTS_H -/* Prevent having to link sys_arch.c (we don't test the API layers in unit tests) */ -#define NO_SYS 1 -#define SYS_LIGHTWEIGHT_PROT 0 -#define LWIP_NETCONN 0 -#define LWIP_SOCKET 0 +#define NO_SYS 0 +#define LWIP_TIMERS 1 +#define LWIP_TIMERS_CUSTOM 0 +#define MEMCPY(dst, src, len) memcpy(dst,src,len) +#define SMEMCPY(dst, src, len) memcpy(dst,src,len) +#define LWIP_MPU_COMPATIBLE 0 +#define LWIP_TCPIP_CORE_LOCKING 1 +#define LWIP_TCPIP_CORE_LOCKING_INPUT 0 + +#define SYS_LIGHTWEIGHT_PROT 1 + +#define MEM_LIBC_MALLOC 0 + +#define MEMP_MEM_MALLOC 0 + +#define MEM_ALIGNMENT 1 + +#define MEM_SIZE 1600 + +#define MEMP_OVERFLOW_CHECK 0 + +#define MEMP_SANITY_CHECK 0 + +#define MEM_USE_POOLS 0 + +#define MEM_USE_POOLS_TRY_BIGGER_POOL 0 + +#define MEMP_USE_CUSTOM_POOLS 0 + +#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 + +#define MEMP_NUM_PBUF 16 + +#define MEMP_NUM_RAW_PCB 4 + +#define MEMP_NUM_UDP_PCB 4 + +#define MEMP_NUM_TCP_PCB 5 + +#define MEMP_NUM_TCP_PCB_LISTEN 8 + +#define MEMP_NUM_TCP_SEG 16 + +#define MEMP_NUM_REASSDATA 5 + +#define MEMP_NUM_FRAG_PBUF 15 + +#define MEMP_NUM_ARP_QUEUE 30 + +#define MEMP_NUM_IGMP_GROUP 8 + +#define MEMP_NUM_SYS_TIMEOUT (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0)) + +#define MEMP_NUM_NETBUF 2 + +#define MEMP_NUM_NETCONN 4 + +#define MEMP_NUM_TCPIP_MSG_API 8 + +#define MEMP_NUM_TCPIP_MSG_INPKT 8 + +#define MEMP_NUM_NETDB 1 + +#define MEMP_NUM_LOCALHOSTLIST 1 + +#define PBUF_POOL_SIZE 16 + +#define MEMP_NUM_API_MSG MEMP_NUM_TCPIP_MSG_API + +#define MEMP_NUM_DNS_API_MSG MEMP_NUM_TCPIP_MSG_API + +#define MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA MEMP_NUM_TCPIP_MSG_API + +#define MEMP_NUM_NETIFAPI_MSG MEMP_NUM_TCPIP_MSG_API + +#define LWIP_ARP 1 + +#define ARP_TABLE_SIZE 10 + +#define ARP_MAXAGE 300 + +#define ARP_QUEUEING 0 + +#define ARP_QUEUE_LEN 3 + +#define ETHARP_SUPPORT_VLAN 0 + +#define LWIP_ETHERNET LWIP_ARP + +#define ETH_PAD_SIZE 0 + +#define ETHARP_SUPPORT_STATIC_ENTRIES 0 + +#define ETHARP_TABLE_MATCH_NETIF 0 + +#define LWIP_IPV4 1 + +#define IP_FORWARD 0 + +#define IP_REASSEMBLY 1 + +#define IP_FRAG 1 + +#define IP_OPTIONS_ALLOWED 1 + +#define IP_REASS_MAXAGE 3 + +#define IP_REASS_MAX_PBUFS 10 + +#define IP_DEFAULT_TTL 255 + +#define IP_SOF_BROADCAST 0 + +#define IP_SOF_BROADCAST_RECV 0 + +#define IP_FORWARD_ALLOW_TX_ON_RX_NETIF 0 + +#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 0 + +#define LWIP_ICMP 1 + +#define ICMP_TTL (IP_DEFAULT_TTL) + +#define LWIP_BROADCAST_PING 0 + +#define LWIP_MULTICAST_PING 0 + +#define LWIP_RAW 0 + +#define RAW_TTL (IP_DEFAULT_TTL) + +#define LWIP_DHCP 0 +#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) +#define LWIP_DHCP_BOOTP_FILE 0 +#define LWIP_DHCP_GET_NTP_SRV 0 +#define LWIP_DHCP_MAX_NTP_SERVERS 1 +#define LWIP_DHCP_MAX_DNS_SERVERS DNS_MAX_SERVERS +#define LWIP_AUTOIP 0 +#define LWIP_DHCP_AUTOIP_COOP 0 +#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 +#define LWIP_MIB2_CALLBACKS 0 +#define LWIP_IGMP 0 +#define LWIP_MULTICAST_TX_OPTIONS (LWIP_IGMP && LWIP_UDP) +#define LWIP_DNS 0 +#define DNS_TABLE_SIZE 4 +#define DNS_MAX_NAME_LENGTH 256 +#define DNS_MAX_SERVERS 2 +#define DNS_DOES_NAME_CHECK 1 +#define LWIP_DNS_SECURE (LWIP_DNS_SECURE_RAND_XID | LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT) +#define DNS_LOCAL_HOSTLIST 0 +#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 +#define LWIP_DNS_SUPPORT_MDNS_QUERIES 0 +#define LWIP_UDP 1 +#define LWIP_UDPLITE 0 +#define UDP_TTL (IP_DEFAULT_TTL) +#define LWIP_NETBUF_RECVINFO 0 +#define LWIP_TCP 1 +#define TCP_TTL (IP_DEFAULT_TTL) +#define TCP_WND (4 * TCP_MSS) + +#define TCP_MAXRTX 12 + +#define TCP_SYNMAXRTX 6 + +#define TCP_QUEUE_OOSEQ (LWIP_TCP) + +#define TCP_MSS 536 + +#define TCP_CALCULATE_EFF_SEND_MSS 1 + +#define TCP_SND_BUF (2 * TCP_MSS) + +#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) + +#define TCP_SNDLOWAT LWIP_MIN(LWIP_MAX(((TCP_SND_BUF)/2), (2 * TCP_MSS) + 1), (TCP_SND_BUF) - 1) + +#define TCP_SNDQUEUELOWAT LWIP_MAX(((TCP_SND_QUEUELEN)/2), 5) + +#define TCP_OOSEQ_MAX_BYTES 0 + +#define TCP_OOSEQ_MAX_PBUFS 0 + +#define TCP_LISTEN_BACKLOG 0 + +#define TCP_DEFAULT_LISTEN_BACKLOG 0xff + +#define TCP_OVERSIZE TCP_MSS + +#define LWIP_TCP_TIMESTAMPS 0 + +#define TCP_WND_UPDATE_THRESHOLD LWIP_MIN((TCP_WND / 4), (TCP_MSS * 4)) + +#define LWIP_EVENT_API 0 + +#define LWIP_WND_SCALE 0 + +#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) + +#define PBUF_LINK_ENCAPSULATION_HLEN 0u + +#define +PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN+PBUF_LINK_HLEN) + +#define +LWIP_NETIF_HOSTNAME 0 + +#define +LWIP_NETIF_API 0 + +#define +LWIP_NETIF_STATUS_CALLBACK 0 + +#define +LWIP_NETIF_LINK_CALLBACK 0 + +#define +LWIP_NETIF_REMOVE_CALLBACK 0 + +#define +LWIP_NETIF_HWADDRHINT 0 + +#define +LWIP_NETIF_TX_SINGLE_PBUF 0 + +#define +LWIP_NUM_NETIF_CLIENT_DATA 0 + +#define +LWIP_HAVE_LOOPIF LWIP_NETIF_LOOPBACK + +#define +LWIP_LOOPIF_MULTICAST 0 + +#define +LWIP_NETIF_LOOPBACK 0 + +#define +LWIP_LOOPBACK_MAX_PBUFS 0 + +#define +LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) + +#define +TCPIP_THREAD_NAME "tcpip_thread" + +#define +TCPIP_THREAD_STACKSIZE 0 + +#define +TCPIP_THREAD_PRIO 1 + +#define +TCPIP_MBOX_SIZE 0 + +#define +LWIP_TCPIP_THREAD_ALIVE() + +#define +SLIPIF_THREAD_NAME "slipif_loop" + +#define +SLIPIF_THREAD_STACKSIZE 0 + +#define +SLIPIF_THREAD_PRIO 1 + +#define +DEFAULT_THREAD_NAME "lwIP" + +#define +DEFAULT_THREAD_STACKSIZE 0 + +#define +DEFAULT_THREAD_PRIO 1 + +#define +DEFAULT_RAW_RECVMBOX_SIZE 0 + +#define +DEFAULT_UDP_RECVMBOX_SIZE 0 + +#define +DEFAULT_TCP_RECVMBOX_SIZE 0 + +#define +DEFAULT_ACCEPTMBOX_SIZE 0 + +#define +LWIP_NETCONN 1 + +#define +LWIP_TCPIP_TIMEOUT 0 + +#define +LWIP_NETCONN_SEM_PER_THREAD 0 + +#define +LWIP_NETCONN_FULLDUPLEX 0 + +#define +LWIP_SOCKET 1 + +#define +LWIP_COMPAT_SOCKETS 1 + +#define +LWIP_POSIX_SOCKETS_IO_NAMES 1 + +#define +LWIP_SOCKET_OFFSET 0 + +#define +LWIP_TCP_KEEPALIVE 0 + +#define +LWIP_SO_SNDTIMEO 0 + +#define +LWIP_SO_RCVTIMEO 0 + +#define +LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0 + +#define +LWIP_SO_RCVBUF 0 + +#define +LWIP_SO_LINGER 0 + +#define +RECV_BUFSIZE_DEFAULT INT_MAX + +#define +LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000 + +#define +SO_REUSE 0 + +#define +SO_REUSE_RXTOALL 0 + +#define +LWIP_FIONREAD_LINUXMODE 0 + +#define +LWIP_STATS 1 + +#define +LWIP_STATS_DISPLAY 0 + +#define +LINK_STATS 1 + +#define +ETHARP_STATS (LWIP_ARP) + +#define +IP_STATS 1 + +#define +IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) + +#define +ICMP_STATS 1 + +#define +IGMP_STATS (LWIP_IGMP) + +#define +UDP_STATS (LWIP_UDP) + +#define +TCP_STATS (LWIP_TCP) + +#define +MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) + +#define +MEMP_STATS (MEMP_MEM_MALLOC == 0) + +#define +SYS_STATS (NO_SYS == 0) + +#define +IP6_STATS (LWIP_IPV6) + +#define +ICMP6_STATS (LWIP_IPV6 && LWIP_ICMP6) + +#define +IP6_FRAG_STATS (LWIP_IPV6 && (LWIP_IPV6_FRAG || LWIP_IPV6_REASS)) + +#define +MLD6_STATS (LWIP_IPV6 && LWIP_IPV6_MLD) + +#define +ND6_STATS (LWIP_IPV6) + +#define +MIB2_STATS 0 + +#define +LWIP_CHECKSUM_CTRL_PER_NETIF 0 + +#define +CHECKSUM_GEN_IP 1 + +#define +CHECKSUM_GEN_UDP 1 + +#define +CHECKSUM_GEN_TCP 1 + +#define +CHECKSUM_GEN_ICMP 1 + +#define +CHECKSUM_GEN_ICMP6 1 + +#define +CHECKSUM_CHECK_IP 1 + +#define +CHECKSUM_CHECK_UDP 1 + +#define +CHECKSUM_CHECK_TCP 1 + +#define +CHECKSUM_CHECK_ICMP 1 + +#define +CHECKSUM_CHECK_ICMP6 1 + +#define +LWIP_CHECKSUM_ON_COPY 0 + +#define +LWIP_IPV6 0 + +#define +LWIP_IPV6_NUM_ADDRESSES 3 + +#define +LWIP_IPV6_FORWARD 0 + +#define +LWIP_IPV6_FRAG 0 + +#define +LWIP_IPV6_REASS (LWIP_IPV6) + +#define +LWIP_IPV6_SEND_ROUTER_SOLICIT 1 + +#define +LWIP_IPV6_AUTOCONFIG (LWIP_IPV6) + +#define +LWIP_IPV6_DUP_DETECT_ATTEMPTS 1 + +#define +LWIP_ICMP6 (LWIP_IPV6) + +#define +LWIP_ICMP6_DATASIZE 8 + +#define +LWIP_ICMP6_HL 255 + +#define +LWIP_IPV6_MLD (LWIP_IPV6) + +#define +MEMP_NUM_MLD6_GROUP 4 + +#define +LWIP_ND6_QUEUEING (LWIP_IPV6) + +#define +MEMP_NUM_ND6_QUEUE 20 + +#define +LWIP_ND6_NUM_NEIGHBORS 10 + +#define +LWIP_ND6_NUM_DESTINATIONS 10 + +#define +LWIP_ND6_NUM_PREFIXES 5 + +#define +LWIP_ND6_NUM_ROUTERS 3 + +#define +LWIP_ND6_MAX_MULTICAST_SOLICIT 3 + +#define +LWIP_ND6_MAX_UNICAST_SOLICIT 3 + +#define +LWIP_ND6_MAX_ANYCAST_DELAY_TIME 1000 + +#define +LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT 3 + +#define +LWIP_ND6_REACHABLE_TIME 30000 + +#define +LWIP_ND6_RETRANS_TIMER 1000 + +#define +LWIP_ND6_DELAY_FIRST_PROBE_TIME 5000 + +#define +LWIP_ND6_ALLOW_RA_UPDATES 1 + +#define +LWIP_ND6_TCP_REACHABILITY_HINTS 1 + +#define +LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0 + +#define +LWIP_IPV6_DHCP6 0 + +#define +LWIP_HOOK_FILENAME "path/to/my/lwip_hooks.h" + +#define +LWIP_HOOK_TCP_ISN(local_ip, local_port, remote_ip, remote_port) + +#define +LWIP_HOOK_IP4_INPUT(pbuf, input_netif) + +#define +LWIP_HOOK_IP4_ROUTE() + +#define +LWIP_HOOK_IP4_ROUTE_SRC(dest, src) + +#define +LWIP_HOOK_ETHARP_GET_GW(netif, dest) + +#define +LWIP_HOOK_IP6_INPUT(pbuf, input_netif) + +#define +LWIP_HOOK_IP6_ROUTE(src, dest) + +#define +LWIP_HOOK_ND6_GET_GW(netif, dest) + +#define +LWIP_HOOK_VLAN_CHECK(netif, eth_hdr, vlan_hdr) + +#define +LWIP_HOOK_VLAN_SET(netif, p, src, dst, eth_type) + +#define +LWIP_HOOK_MEMP_AVAILABLE(memp_t_type) + +#define +LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif) + +#define +LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL + +#define +LWIP_DBG_TYPES_ON LWIP_DBG_ON + +#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 +#define LWIP_PERF 0 -/* Enable DHCP to test it, disable UDP checksum to easier inject packets */ -#define LWIP_DHCP 1 - -/* Minimal changes to opt.h required for tcp unit tests: */ -#define MEM_SIZE 16000 -#define TCP_SND_QUEUELEN 40 -#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN -#define TCP_SND_BUF (12 * TCP_MSS) -#define TCP_WND (10 * TCP_MSS) -#define LWIP_WND_SCALE 1 -#define TCP_RCV_SCALE 0 -#define PBUF_POOL_SIZE 400 /* pbuf tests need ~200KByte */ - -/* Enable IGMP and MDNS for MDNS tests */ -#define LWIP_IGMP 1 -#define LWIP_MDNS_RESPONDER 1 -#define LWIP_NUM_NETIF_CLIENT_DATA (LWIP_MDNS_RESPONDER) - -/* Minimal changes to opt.h required for etharp unit tests: */ -#define ETHARP_SUPPORT_STATIC_ENTRIES 1 - -/* MIB2 stats are required to check IPv4 reassembly results */ -#define MIB2_STATS 1 - -#endif /* LWIP_HDR_LWIPOPTS_H */ +//#define LWIP_SOCKET 1 +//#define TCP_RCV_SCALE 0 +//#define PBUF_POOL_SIZE 400 /* pbuf tests need ~200KByte */ diff --git a/src/sys/include/net/sys.h b/src/sys/include/net/sys.h index 9ea164f..ca026b0 100644 --- a/src/sys/include/net/sys.h +++ b/src/sys/include/net/sys.h @@ -45,8 +45,7 @@ #if NO_SYS -/* For a totally minimal and standalone system, we provide null - definitions of the sys_ functions. */ +/* For a totally minimal and standalone system, we provide null definitions of the sys_ functions. */ typedef u8_t sys_sem_t; typedef u8_t sys_mutex_t; typedef u8_t sys_mbox_t; @@ -91,8 +90,8 @@ */ #define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT -#include "lwip/err.h" -#include "arch/sys_arch.h" +#include "net/err.h" +#include "net/arch/sys_arch.h" /** Function prototype for thread functions */ typedef void (*lwip_thread_fn)(void *arg); diff --git a/src/sys/net/net/init.c b/src/sys/net/net/init.c index bed37f5..4208b30 100644 --- a/src/sys/net/net/init.c +++ b/src/sys/net/net/init.c @@ -35,8 +35,10 @@ #include #include #include +#include #include +#include #include #include @@ -46,13 +48,21 @@ static void tcpip_init_done(void *arg); + + int net_init() { + ip_addr_t ipaddr, netmask, gw; + struct netif netif; + tcpip_init(NULL, NULL); IP4_ADDR(&gw, 10, 50, 0, 1); IP4_ADDR(&ipaddr, 10, 50, 0, 7); IP4_ADDR(&netmask, 255, 255, 0, 0); - netif_set_default(netif_add(&ipaddr, &netmask, &gw, ethernetif_init, tcpip_input)); + + netif_add(&netif, &ipaddr, &netmask, &gw, ethernetif_init, tcpip_input); + + //netif_set_default(netif_add(&ipaddr, &netmask, &gw, ethernetif_init, tcpip_input)); return(0x0); }