|Welcome to the Monastery|
Sorry to see no progress. Perhaps this will help (I added it to the CPAN bug report):
With respect to the questions about the patch:
A quick search turns up the source for ping6 at http://cvsweb.netbsd.org/bsdweb.cgi/src/sbin/ping6/ping6.c?rev=1.81&content-type=text/x-cvsweb-markup&only_with_tag=MAIN
The header checksum field is initialized to zero, but not computed - I assume (but haven't dug in) that sendmsg computes.
When no explicit interface is bound, the source address is determined by indirectly consulting the routing tables - a UDP socket is connect()ed and getsockname() called. Look for the code under if (!(options & F_SRCADDR))
Hope this helps.
This communication may not represent my employer's views, if any, on the matters discussed.