Skip to content

Commit 6514433

Browse files
LWIP::get_ipv6_addr fixed to avoid returning NULL even if only linklocal adress exits.
1 parent 9c82706 commit 6514433

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

features/lwipstack/LWIPInterface.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,13 @@ void LWIP::Interface::netif_status_irq(struct netif *netif)
227227

228228
if (interface->has_addr_state & HAS_ANY_ADDR) {
229229
interface->connected = NSAPI_STATUS_GLOBAL_UP;
230+
#if LWIP_IPV6
231+
if (ip_addr_islinklocal(get_ipv6_addr(netif))) {
232+
interface->connected = NSAPI_STATUS_LOCAL_UP;
233+
}
234+
#endif
230235
}
236+
231237
} else if (!netif_is_up(&interface->netif) && netif_is_link_up(&interface->netif)) {
232238
interface->connected = NSAPI_STATUS_DISCONNECTED;
233239
}

features/lwipstack/lwip_tools.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ const ip_addr_t *LWIP::get_ipv6_addr(const struct netif *netif)
9292
return netif_ip_addr6(netif, i);
9393
}
9494
}
95+
96+
for (int i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
97+
if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i))) {
98+
return netif_ip_addr6(netif, i);
99+
}
100+
}
95101
#endif
96102
return NULL;
97103
}

0 commit comments

Comments
 (0)