diff --git a/CHANGELOG b/CHANGELOG index a3f7f73b..6b8e349d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -163,6 +163,9 @@ HISTORY ++ Bugfixes: + 2015-02-11: patch by hichard + * tcpip.c: fixed bug #43094 "The function tcpip_input() forget to handle IPv6" + 2014-02-10: Simon Goldschmidt * netconn API: fixed that netconn_close/netconn_delete still used message passing for LWIP_TCPIP_CORE_LOCKING==1 diff --git a/src/api/tcpip.c b/src/api/tcpip.c index c9fa89d8..fc8a7867 100644 --- a/src/api/tcpip.c +++ b/src/api/tcpip.c @@ -115,7 +115,7 @@ tcpip_thread(void *arg) } else #endif /* LWIP_ETHERNET */ #if LWIP_IPV6 - if ((*((unsigned char *)(msg->msg.inp.p->payload)) & 0xf0) == 0x60) { + if (((*(u8_t*)(msg->msg.inp.p->payload)) & 0xf0) == 0x60) { ip6_input(msg->msg.inp.p, msg->msg.inp.netif); } else #endif /* LWIP_IPV6 */ @@ -192,6 +192,11 @@ tcpip_input(struct pbuf *p, struct netif *inp) ret = ethernet_input(p, inp); } else #endif /* LWIP_ETHERNET */ +#if LWIP_IPV6 + if (((*(u8_t*)(p->payload)) & 0xf0) == 0x60) { + ret = ip6_input(p, inp); + } else +#endif /* LWIP_IPV6 */ { ret = ip_input(p, inp); }