Merge pull request #10059 from miri64/pkg/enh/lwIP-2.1

lwip: Bump version to v2.1.0
This commit is contained in:
Koen Zandberg 2018-10-16 17:10:26 +02:00 committed by GitHub
commit 9f390f19c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 125 additions and 197 deletions

View File

@ -445,10 +445,6 @@ ifneq (,$(filter lwip_sock_udp,$(USEMODULE)))
endif
ifneq (,$(filter lwip_%,$(USEMODULE)))
USEMODULE += lwip
endif
ifneq (,$(filter lwip,$(USEMODULE)))
USEPKG += lwip
USEMODULE += core_mbox
USEMODULE += lwip_api

View File

@ -36,19 +36,6 @@ PSEUDOMODULES += lis2dh12_spi
PSEUDOMODULES += log
PSEUDOMODULES += log_printfnoformat
PSEUDOMODULES += lora
PSEUDOMODULES += lwip_arp
PSEUDOMODULES += lwip_autoip
PSEUDOMODULES += lwip_dhcp
PSEUDOMODULES += lwip_ethernet
PSEUDOMODULES += lwip_igmp
PSEUDOMODULES += lwip_ipv6_autoconfig
PSEUDOMODULES += lwip_ipv6_mld
PSEUDOMODULES += lwip_raw
PSEUDOMODULES += lwip_sixlowpan
PSEUDOMODULES += lwip_stats
PSEUDOMODULES += lwip_tcp
PSEUDOMODULES += lwip_udp
PSEUDOMODULES += lwip_udplite
PSEUDOMODULES += mpu_stack_guard
PSEUDOMODULES += nanocoap_%
PSEUDOMODULES += netdev_default

View File

@ -1,11 +1,44 @@
PKG_NAME=lwip
PKG_URL=git://git.savannah.nongnu.org/lwip.git
PKG_VERSION=STABLE-2_0_3_RELEASE
# lwIP v2.1.0
PKG_VERSION=e6a8415df332ee34d7af02255b2aa1e8ee74348f
PKG_LICENSE=BSD-3-Clause
.PHONY: all
LWIP_MODULES = lwip_api lwip_core lwip_ipv4 lwip_ipv6 \
lwip_netif lwip_netif_ppp lwip_polarssl
LWIP_USEMODULE = $(filter $(LWIP_MODULES),$(USEMODULE))
LWIP_MODULE_MAKEFILE = $(RIOTBASE)/Makefile.base
all: git-download
"$(MAKE)" -C $(PKG_BUILDDIR)
.PHONY: all $(LWIP_MODULES)
CFLAGS += -Wno-address
make_module = "$(MAKE)" -f $(LWIP_MODULE_MAKEFILE) MODULE=$(1) -C $(2)
all: git-download lwip
lwip: $(LWIP_USEMODULE)
$(call make_module,$@,$(PKG_BUILDDIR))
lwip_api:
$(call make_module,$@,$(PKG_BUILDDIR)/src/api)
lwip_core:
$(call make_module,$@,$(PKG_BUILDDIR)/src/core)
lwip_ipv4:
$(call make_module,$@,$(PKG_BUILDDIR)/src/core/ipv4)
lwip_ipv6:
$(call make_module,$@,$(PKG_BUILDDIR)/src/core/ipv6)
lwip_netif:
$(call make_module,$@,$(PKG_BUILDDIR)/src/netif)
lwip_netif_ppp:
$(call make_module,$@,$(PKG_BUILDDIR)/src/netif/ppp)
lwip_polarssl:
$(call make_module,$@,$(PKG_BUILDDIR)/src/netif/ppp/polarssl)
include $(RIOTBASE)/pkg/pkg.mk

View File

@ -1,6 +1,20 @@
INCLUDES += -I$(RIOTBASE)/pkg/lwip/include \
-I$(PKGDIRBASE)/lwip/src/include
PSEUDOMODULES += lwip_arp
PSEUDOMODULES += lwip_autoip
PSEUDOMODULES += lwip_dhcp
PSEUDOMODULES += lwip_ethernet
PSEUDOMODULES += lwip_igmp
PSEUDOMODULES += lwip_ipv6_autoconfig
PSEUDOMODULES += lwip_ipv6_mld
PSEUDOMODULES += lwip_raw
PSEUDOMODULES += lwip_sixlowpan
PSEUDOMODULES += lwip_stats
PSEUDOMODULES += lwip_tcp
PSEUDOMODULES += lwip_udp
PSEUDOMODULES += lwip_udplite
ifneq (,$(filter lwip_contrib,$(USEMODULE)))
DIRS += $(RIOTBASE)/pkg/lwip/contrib
endif

View File

@ -131,7 +131,7 @@ err_t lwip_netdev_init(struct netif *netif)
case NETDEV_TYPE_IEEE802154:
{
u16_t val;
ipv6_addr_t *addr;
ip6_addr_t *addr;
if (netdev->driver->get(netdev, NETOPT_NID, &val,
sizeof(val)) < 0) {
return ERR_IF;
@ -154,11 +154,13 @@ err_t lwip_netdev_init(struct netif *netif)
}
/* netif_create_ip6_linklocal_address() does weird byte-swapping
* with full IIDs, so let's do it ourselves */
addr = (ipv6_addr_t *)&(netif->ip6_addr[0]);
if (netdev->driver->get(netdev, NETOPT_IPV6_IID, &addr->u8[8], sizeof(eui64_t)) < 0) {
addr = &(netif->ip6_addr[0]);
/* addr->addr is a uint32_t array */
if (netdev->driver->get(netdev, NETOPT_IPV6_IID, &addr->addr[2], sizeof(eui64_t)) < 0) {
return ERR_IF;
}
ipv6_addr_set_link_local_prefix(addr);
ipv6_addr_set_link_local_prefix((ipv6_addr_t *)&addr->addr[0]);
ip6_addr_assign_zone(addr, IP6_UNICAST, netif);
/* Set address state. */
#if LWIP_IPV6_DUP_DETECT_ATTEMPTS
/* Will perform duplicate address detection (DAD). */

View File

@ -92,7 +92,7 @@ static uint16_t _ip6_addr_to_netif(const ip6_addr_p_t *_addr)
ip6_addr_t addr;
assert(_addr != NULL);
ip6_addr_copy(addr, *_addr);
ip6_addr_copy_from_packed(addr, *_addr);
if (!ip6_addr_isany_val(addr)) {
for (struct netif *netif = netif_list; netif != NULL; netif = netif->next) {
if (netif_get_ip6_addr_match(netif, &addr) >= 0) {

View File

@ -151,6 +151,23 @@ static bool _addr_on_netif(int family, int netif_num, const ip_addr_t *addr)
p = (ep)->port;
#endif
static void _convert_ip_addr(ip_addr_t *lwip_addr, int family,
const void *sock_addr, size_t sock_addr_size)
{
memcpy(lwip_addr, sock_addr, sock_addr_size);
#if LWIP_IPV6 && LWIP_IPV4
if (family == AF_INET6) {
ip6_addr_clear_zone(&lwip_addr->u_addr.ip6);
}
lwip_addr->type = lwip_af_to_ip_addr_type(family);
#elif LWIP_IPV6
(void)family;
ip6_addr_clear_zone(lwip_addr);
#else
(void)family;
#endif
}
static int _sock_ep_to_netconn_pars(const struct _sock_tl_ep *local,
const struct _sock_tl_ep *remote,
ip_addr_t *local_addr, u16_t *local_port,
@ -193,10 +210,8 @@ static int _sock_ep_to_netconn_pars(const struct _sock_tl_ep *local,
netif = remote->netif;
}
family = remote->family;
memcpy(remote_addr, &remote->addr, sizeof(remote->addr));
#if LWIP_IPV6 && LWIP_IPV4
remote_addr->type = lwip_af_to_ip_addr_type(family);
#endif
_convert_ip_addr(remote_addr, family, &remote->addr,
sizeof(remote->addr));
if (ip_addr_isany(remote_addr)) {
return -EINVAL;
}
@ -224,7 +239,8 @@ static int _sock_ep_to_netconn_pars(const struct _sock_tl_ep *local,
/* case (local == NULL) is included in _ep_isany() */
/* cast to ip_addr_t alright, since type field is never used */
else if (_addr_on_netif(family, netif, (ip_addr_t *)&local->addr)) {
memcpy(local_addr, &local->addr, sizeof(local->addr));
_convert_ip_addr(local_addr, family, &local->addr,
sizeof(local->addr));
res = 1;
}
else {
@ -232,14 +248,9 @@ static int _sock_ep_to_netconn_pars(const struct _sock_tl_ep *local,
}
}
else if (local != NULL) {
memcpy(local_addr, &local->addr, sizeof(local->addr));
_convert_ip_addr(local_addr, family, &local->addr, sizeof(local->addr));
res = 1;
}
#if LWIP_IPV6 && LWIP_IPV4
if (local_addr != NULL) {
local_addr->type = lwip_af_to_ip_addr_type(family);
}
#endif
return res;
}

View File

@ -1,39 +0,0 @@
From f732fca2cd91553aa6f14ed851f84572d374aaa6 Mon Sep 17 00:00:00 2001
From: Martine Lenders <mail@martine-lenders.eu>
Date: Thu, 12 Nov 2015 16:36:00 +0100
Subject: [PATCH 1/2] Fix warnings
---
src/core/ipv6/nd6.c | 2 +-
src/core/netif.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/core/ipv6/nd6.c b/src/core/ipv6/nd6.c
index 0b36718..b63a9b5 100644
--- a/src/core/ipv6/nd6.c
+++ b/src/core/ipv6/nd6.c
@@ -635,7 +635,7 @@ nd6_input(struct pbuf *p, struct netif *inp)
if (i >= 0) {
neighbor_cache[i].netif = inp;
MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
- ip6_addr_set(&(neighbor_cache[i].next_hop_address), &tmp);
+ ip6_addr_copy(neighbor_cache[i].next_hop_address, tmp);
/* Receiving a message does not prove reachability: only in one direction.
* Delay probe in case we get confirmation of reachability from upper layer (TCP). */
diff --git a/src/core/netif.c b/src/core/netif.c
index 428b148..f7c18e9 100644
--- a/src/core/netif.c
+++ b/src/core/netif.c
@@ -1042,7 +1042,7 @@ netif_ip6_addr_set_parts(struct netif *netif, s8_t addr_idx, u32_t i0, u32_t i1,
LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_ip6_addr_set: netif address being changed\n"));
if (netif_ip6_addr_state(netif, addr_idx) & IP6_ADDR_VALID) {
-#if LWIP_TCP || LWIP_UDP
+#if LWIP_TCP || LWIP_UDP || LWIP_RAW
ip_addr_t new_ipaddr;
IP_ADDR6(&new_ipaddr, i0, i1, i2, i3);
#endif /* LWIP_TCP || LWIP_UDP */
--
2.7.4

View File

@ -0,0 +1,38 @@
From ae1128a138dbf7b14886853bd149757b03859cdb Mon Sep 17 00:00:00 2001
From: Martine Lenders <m.lenders@fu-berlin.de>
Date: Thu, 27 Sep 2018 21:21:18 +0200
Subject: [PATCH] lowpan6.c: Fix IEEE 802.15.4 address setting
Reverts a regression introduced in
3a8af612b3b818a89de5846cc9b046756af184cc:
Use hardware address fetched from neighbor cache *not* the hardware
address of the interface as destination address.
---
src/netif/lowpan6.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/netif/lowpan6.c b/src/netif/lowpan6.c
index 5769522..7f0d276 100644
--- a/src/netif/lowpan6.c
+++ b/src/netif/lowpan6.c
@@ -630,11 +630,11 @@ lowpan6_output(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr)
}
/* Send out the packet using the returned hardware address. */
- result = lowpan6_hwaddr_to_addr(netif, &dest);
- if (result != ERR_OK) {
- MIB2_STATS_NETIF_INC(netif, ifoutdiscards);
- return result;
- }
+ dest.addr_len = netif->hwaddr_len;
+ /* XXX: Inferring the length of the source address from the destination address
+ * is not correct for IEEE 802.15.4, but currently we don't get this information
+ * from the neighbor cache */
+ SMEMCPY(dest.addr, hwaddr, netif->hwaddr_len);
MIB2_STATS_NETIF_INC(netif, ifoutucastpkts);
return lowpan6_frag(netif, q, &src, &dest);
}
--
2.7.4

View File

@ -1,119 +0,0 @@
From 1111daabb54619247649a5d065ce031edd3a968f Mon Sep 17 00:00:00 2001
From: Martine Lenders <mail@martine-lenders.eu>
Date: Thu, 12 Nov 2015 15:43:31 +0100
Subject: [PATCH 2/2] Add RIOT Makefiles
---
Makefile | 23 +++++++++++++++++++++++
src/api/Makefile | 3 +++
src/core/Makefile | 3 +++
src/core/ipv4/Makefile | 3 +++
src/core/ipv6/Makefile | 3 +++
src/netif/Makefile | 3 +++
src/netif/ppp/Makefile | 3 +++
src/netif/ppp/polarssl/Makefile | 3 +++
8 files changed, 44 insertions(+)
create mode 100644 Makefile
create mode 100644 src/api/Makefile
create mode 100644 src/core/Makefile
create mode 100644 src/core/ipv4/Makefile
create mode 100644 src/core/ipv6/Makefile
create mode 100644 src/netif/Makefile
create mode 100644 src/netif/ppp/Makefile
create mode 100644 src/netif/ppp/polarssl/Makefile
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..dbfb087
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,23 @@
+ifneq (,$(filter lwip_api,$(USEMODULE)))
+ DIRS += src/api
+endif
+ifneq (,$(filter lwip_core,$(USEMODULE)))
+ DIRS += src/core
+endif
+ifneq (,$(filter lwip_ipv4,$(USEMODULE)))
+ DIRS += src/core/ipv4
+endif
+ifneq (,$(filter lwip_ipv6,$(USEMODULE)))
+ DIRS += src/core/ipv6
+endif
+ifneq (,$(filter lwip_netif,$(USEMODULE)))
+ DIRS += src/netif
+endif
+ifneq (,$(filter lwip_netif_ppp,$(USEMODULE)))
+ DIRS += src/netif/ppp
+endif
+ifneq (,$(filter lwip_polarssl,$(USEMODULE)))
+ DIRS += src/netif/ppp/polarssl
+endif
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/api/Makefile b/src/api/Makefile
new file mode 100644
index 0000000..84b4323
--- /dev/null
+++ b/src/api/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_api
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/core/Makefile b/src/core/Makefile
new file mode 100644
index 0000000..2943234
--- /dev/null
+++ b/src/core/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_core
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/core/ipv4/Makefile b/src/core/ipv4/Makefile
new file mode 100644
index 0000000..b3a7a5e
--- /dev/null
+++ b/src/core/ipv4/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_ipv4
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/core/ipv6/Makefile b/src/core/ipv6/Makefile
new file mode 100644
index 0000000..e26e51f
--- /dev/null
+++ b/src/core/ipv6/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_ipv6
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/netif/Makefile b/src/netif/Makefile
new file mode 100644
index 0000000..bb86d8f
--- /dev/null
+++ b/src/netif/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_netif
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/netif/ppp/Makefile b/src/netif/ppp/Makefile
new file mode 100644
index 0000000..bd21288
--- /dev/null
+++ b/src/netif/ppp/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_netif_ppp
+
+include $(RIOTBASE)/Makefile.base
diff --git a/src/netif/ppp/polarssl/Makefile b/src/netif/ppp/polarssl/Makefile
new file mode 100644
index 0000000..6030171
--- /dev/null
+++ b/src/netif/ppp/polarssl/Makefile
@@ -0,0 +1,3 @@
+MODULE := lwip_polarssl
+
+include $(RIOTBASE)/Makefile.base
--
2.7.4

View File

@ -235,6 +235,8 @@ void _prepare_send_checks(void)
if (nc->state == ND6_NO_ENTRY) {
nc->state = ND6_REACHABLE;
memcpy(&nc->next_hop_address, remote6, sizeof(ip6_addr_t));
ip6_addr_assign_zone(&nc->next_hop_address,
IP6_UNICAST, &netif);
memcpy(&nc->lladdr, mac, 6);
nc->netif = &netif;
nc->counter.reachable_time = UINT32_MAX;

View File

@ -5,7 +5,8 @@ include ../Makefile.tests_common
BOARD_BLACKLIST := arduino-uno arduino-duemilanove arduino-mega2560 chronos \
msb-430 msb-430h telosb waspmote-pro wsn430-v1_3b \
wsn430-v1_4 z1 jiminy-mega256rfr2 mega-xplained
BOARD_INSUFFICIENT_MEMORY = nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \
BOARD_INSUFFICIENT_MEMORY = blackpill bluepill nucleo-f031k6 nucleo-f042k6 \
nucleo-l031k6 nucleo-f030r8 nucleo-f302r8 \
nucleo-f303k8 nucleo-f334r8 nucleo-l053r8 \
stm32f0discovery

View File

@ -39,7 +39,7 @@
#include "constants.h"
#include "stack.h"
#define _MSG_QUEUE_SIZE (1)
#define _MSG_QUEUE_SIZE (4)
#define _SEND_DONE (0x92d7)
#define _NETDEV_BUFFER_SIZE (128)
@ -237,6 +237,8 @@ void _prepare_send_checks(void)
if (nc->state == ND6_NO_ENTRY) {
nc->state = ND6_REACHABLE;
memcpy(&nc->next_hop_address, remote6, sizeof(ip6_addr_t));
ip6_addr_assign_zone(&nc->next_hop_address,
IP6_UNICAST, &netif);
memcpy(&nc->lladdr, mac, 6);
nc->netif = &netif;
nc->counter.reachable_time = UINT32_MAX;