[NOTE: The credit for discovery the bug goes to Dusan Pajin]
The ProxyArpManager.replyNdp() method is used to forward
IPv6 Neighbor Discovery Requests as appropriate.
It is implemented after the corresponding replyArp() method for IPv4.
In some cases, we need to test whether the source address matches one
of our external addresses. In case of ARP, the source address is taken
from the ARP packet itself: the Sender Protocol Address.
In case of IPv6, the corresponding Neighbor Discovery Request packet
does not contain the Sender Address within the payload.
The current code is incorrect by using the target address instead:
Ip6Address source =
The solution is to take the source address from the IPv6 header itself.