ICMP host name utilities

Since the Linux kernel does not support the ICMP host name facilities as
described in RFC 1788, I wrote a simple implementation in user-space.
It comprises three parts:

    * icmpdnd - The ICMP Domain Name daemon, which listens to ICMP
      domain name requests and replies to them.

    * idnlookup - A user utility to query a host for its host name over
      ICMP. Like ping and all other utilities that use ICMP, it needs to
      be installed SUID root.

    * libnss_icmp.so.2 - A glibc NSS module, which uses idnlookup to
      perform queries for the gethostbyaddr function.

General information

The NSS module caches all requests (including failures) and honors the
TTL value sent by the responding host. It uses a configuration file called
/etc/nss-icmp.conf, which controls different aspects of its operation:

    * timeout - Sets the timeout in milliseconds for ICMP host name
      queries, by passing the -t option to idnlookup.
    * nocache - Disables the cache.
    * ttlnotfound - Sets the TTL for not-found cache entries is
      seconds. The default is 5 minutes.

Both icmpdnd and idnlookup need to run as root, due to the fact that
they use ICMP. Thus, idnlookup needs be installed SUID root.

