We currently have multiple interfaces for performing name resolution, and multiple of them are used in parallel because they have different feature sets. We should just provide one interface for forward lookups, and one for reverse lookups.
The new interface should provide TTL information for all lookups (including negative results). It should be extensible (e.g., for use with key material or other security-related data), and have full IPv6 support.
Instead of a retry-with-larger-buffer loop, the new interface should use malloc (or realloc) inside the NSS service module to prepare a sufficiently sized response buffer.