Add more LWIP JSON configuration, including PPP

Add configuration to control Ethernet, PPP and TCP support.

Replaces LWIP_TRANSPORT_ETHERNET/PPP defines formerly used by targets.

Ethernet and PPP can be enabled simultaneously.

DHCPv4 is now only enabled if IPv4 and Ethernet are both enabled - we
assume PPP uses IPCP for configuration.

PPP configuration adjusted to cope with LWIP 2.0 changes, and
optimised for RAM a little.
pull/4119/head
Kevin Bracey 2017-02-16 12:48:44 +02:00 committed by Hasnain Virk
parent d0820d1ed3
commit f37f265ed5
2 changed files with 50 additions and 26 deletions

View File

@ -164,14 +164,21 @@
#define MEMP_NUM_NETCONN 4
#endif
#if MBED_CONF_LWIP_TCP_ENABLED
#define LWIP_TCP 1
#define TCP_QUEUE_OOSEQ 0
#define TCP_OVERSIZE 0
#define LWIP_TCP_KEEPALIVE 1
#else
#define LWIP_TCP 0
#endif
#define LWIP_DHCP LWIP_IPV4
#define LWIP_DNS 1
#define LWIP_SOCKET 0
#define SO_REUSE 1
#define IP_SOF_BROADCAST 1
#define IP_SOF_BROADCAST_RECV 1
// Support Multicast
#include "stdlib.h"
@ -181,7 +188,8 @@
#define LWIP_COMPAT_SOCKETS 0
#define LWIP_POSIX_SOCKETS_IO_NAMES 0
#define LWIP_SO_RCVTIMEO 1
#define LWIP_TCP_KEEPALIVE 1
#define LWIP_BROADCAST_PING 1
// Fragmentation on, as per IPv4 default
#define LWIP_IPV6_FRAG LWIP_IPV6
@ -241,14 +249,38 @@
#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 1
#if LWIP_TRANSPORT_ETHERNET
// Interface type configuration
#if MBED_CONF_LWIP_ETHERNET_ENABLED
#define LWIP_ARP 1
#define LWIP_ETHERNET 1
#define LWIP_CHECKSUM_ON_COPY 1
#define LWIP_DHCP LWIP_IPV4
#endif // MBED_CONF_LWIP_ETHERNET_ENABLED
#if MBED_CONF_LWIP_PPP_ENABLED
#define PPP_SUPPORT 1
#define CHAP_SUPPORT 1
#define PPP_INPROC_IRQ_SAFE 1
// Save RAM
#define PAP_SUPPORT 0
#define VJ_SUPPORT 0
//Hate the config hassle.
//#define LWIP_USE_EXTERNAL_MBEDTLS 1
// Broadcast
#define IP_SOF_BROADCAST 0
#define IP_SOF_BROADCAST_RECV 0
#define LWIP_BROADCAST_PING 1
#define MAXNAMELEN 64 /* max length of hostname or name for auth */
#define MAXSECRETLEN 64
#endif // MBED_CONF_LWIP_PPP_ENABLED
// Make sure we default these to off, so
// LWIP doesn't default to on
#ifndef LWIP_ARP
#define LWIP_ARP 0
#endif
// Checksum-on-copy disabled due to https://savannah.nongnu.org/bugs/?50914
#define LWIP_CHECKSUM_ON_COPY 0
@ -256,26 +288,6 @@
#define LWIP_NETIF_STATUS_CALLBACK 1
#define LWIP_NETIF_LINK_CALLBACK 1
#elif LWIP_TRANSPORT_PPP
#define TCP_SND_BUF (3 * 536)
#define TCP_WND (2 * 536)
#define LWIP_ARP 0
#define PPP_SUPPORT 1
#define CHAP_SUPPORT 1
#define PAP_SUPPORT 1
#define PPP_THREAD_STACKSIZE 4*192
#define PPP_THREAD_PRIO 0
#define MAXNAMELEN 64 /* max length of hostname or name for auth */
#define MAXSECRETLEN 64
#else
#error A transport mechanism (Ethernet or PPP) must be defined
#endif
#include <lwip/arch.h>
#include "lwip_random.h"
#include "lwip_tcp_isn.h"

View File

@ -10,17 +10,29 @@
"value": false
},
"ip-ver-pref": {
"help": "On dual stack system the preferred stack: 4 for IPv4 and 6 for IPv6",
"help": "On dual-stack system the preferred stack: 4 for IPv4 and 6 for IPv6",
"value": 4
},
"addr-timeout": {
"help": "On dual stack system how long to wait preferred stack's address in seconds",
"help": "On dual-stack system how long to wait preferred stack's address in seconds",
"value": 5
},
"ethernet-enabled": {
"help": "Enable support for Ethernet interfaces",
"value": true
},
"ppp-enabled": {
"help": "Enable support for PPP interfaces",
"value": false
},
"socket-max": {
"help": "Maximum number of open TCPServer, TCPSocket and UDPSocket instances allowed, including one used internally for DNS. Each requires 236 bytes of pre-allocated RAM",
"value": 4
},
"tcp-enabled": {
"help": "Enable TCP",
"value": true
},
"tcp-server-max": {
"help": "Maximum number of open TCPServer instances allowed. Each requires 72 bytes of pre-allocated RAM",
"value": 4