From: Ivan Delamer Date: Fri, 4 May 2012 23:43:54 +0000 (-0600) Subject: fixes bug #36389: Use IPv6 Src Address of Echo Response as Destination X-Git-Url: http://rtime.felk.cvut.cz/gitweb/pes-rpp/rpp-lwip.git/commitdiff_plain/bfa28f4c302d849109b414af6e047b9622a77261 fixes bug #36389: Use IPv6 Src Address of Echo Response as Destination Address in Echo Response --- diff --git a/src/core/ipv6/icmp6.c b/src/core/ipv6/icmp6.c index dfe92107..ea82682e 100644 --- a/src/core/ipv6/icmp6.c +++ b/src/core/ipv6/icmp6.c @@ -158,13 +158,21 @@ icmp6_input(struct pbuf *p, struct netif *inp) } /* Determine reply source IPv6 address. */ - reply_src = ip6_select_source_address(inp, ip6_current_src_addr()); - if (reply_src == NULL) { - /* drop */ - pbuf_free(p); - pbuf_free(r); - ICMP6_STATS_INC(icmp6.rterr); - return; +#if LWIP_MULTICAST_PING + if (ip6_addr_ismulticast(ip6_current_dest_addr())) { + reply_src = ip6_select_source_address(inp, ip6_current_src_addr()); + if (reply_src == NULL) { + /* drop */ + pbuf_free(p); + pbuf_free(r); + ICMP6_STATS_INC(icmp6.rterr); + return; + } + } + else +#endif /* LWIP_MULTICAST_PING */ + { + reply_src = ip6_current_dest_addr(); } /* Set fields in reply. */