Added support send using UDP as the protocol for sending probes,
rather than ICMP. Both IPv4 and IPv6 UDP probes are supported.
We are using the source port in the UDP packet for identifying
the particular probe transmitted. This is a bit less reliable
than ICMP, where we are also able to store our PID for verifying
the probe has been transmitted by this instance of mtr-packet,
but space is limited, and it is what the pre-existing mtr
implementation does.
We report no-route and network-down errors in response to errors
from sendto(), in addition to reporting them from errors in
the connect() used to determine the source address of an outgoing
probe.
The mtr-packet tests now properly parse the replies from
mtr-packet, as opposed to simply matching regular expressions
against the output. This is better because it give us future
compatibility with additional reply arguments from mtr-packet.
A better introduction to mtr-packet is now included in the
mtr-packet man page.
The dual code paths for sending IPv6 probes between Linux
and non-Linux Unix-likes has been eliminated. The Linux path
gave us direct control over the IP header, but wasn't necessary
and would make maintainence more difficult, so now Linux uses
the more indirect setsockopt() method of setting IPv6 header
fields.