NAT64 module uses own icmp6_reflect() function to be able make better accounting and use deferred and direct output.
It has used destination IPv6 address as source for reflected ICMPv6 datagrams. This mostly works, but can confuse some software.
E.g. traceroute's output looks wired.
[me@mylaptop ~]traceroute6 -w1 -n 64:ff9b::8.8.8.8 traceroute6 to 64:ff9b::8.8.8.8 (64:ff9b::808:808) from 2001:67c:64:49:a421:5045:508d:495a, 64 hops max, 12 byte packets 1 64:ff9b::808:808 1.732 ms 2.166 ms 2.198 ms 2 64:ff9b::c100:605 2.131 ms 2.308 ms 3.216 ms 3 64:ff9b::50f9:d0f7 3.115 ms 4.114 ms 3.657 ms 4 64:ff9b::6caa:f1c1 3.892 ms 64:ff9b::6caa:f1a1 4.034 ms 5.465 ms 5 64:ff9b::6caa:ec87 5.895 ms 64:ff9b::480e:eef5 4.412 ms 64:ff9b::d8ef:310d 4.358 ms 6 64:ff9b::808:808 4.418 ms 3.498 ms 3.247 ms
This patch add:
- ability use standard method to select source address for such datagrams
- honor IP_STEALTH kernel option and don't decrement TTL/HLIM