When using IPv4 raw sockets, fping has access to the received
IP packet data including the IP header. This allows to simply
read the TOS byte and/or TTL value from the IP header.
But, using IPv4 raw sockets requires privileges. Additionally,
IPv6 raw sockets do not provide access to the IPv6 header.
For IPv6, or when using IPv4 datagram sockets, i.e., when fping
runs without privileges, a different method needs to be used to
access TOS / TC and TTL / Hop Count of received packets. The
so called "control messages", also called "ancillary data", can
be used for this. This requires several actions:
* set the respective socket options to request additional data,
* ensure the buffer used to receive additional data is sized
large enough,
* read and process the requested additional data.