From bfa28f4c302d849109b414af6e047b9622a77261 Mon Sep 17 00:00:00 2001 From: Ivan Delamer Date: Fri, 4 May 2012 17:43:54 -0600 Subject: [PATCH] fixes bug #36389: Use IPv6 Src Address of Echo Response as Destination Address in Echo Response --- src/core/ipv6/icmp6.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) 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. */