#include "resolv.h" static struct resolver resolvers[0] __table_start(resolver); static struct resolver resolvers_end[0] __table_end(resolver); /* * Resolve a name (which may be just a dotted quad IP address) to an * IP address. * */ int resolv ( struct in_addr *address, const char *name ) { struct resolver *resolver; /* Check for a dotted quad IP address first */ if ( inet_aton ( name, address ) ) { DBG ( "RESOLV saw valid IP address %s\n", name ); return 1; } /* Try any compiled-in name resolution modules */ for ( resolver = resolvers ; resolver < resolvers_end ; resolver++ ) { if ( resolver->resolv ( address, name ) ) { DBG ( "RESOLV resolved \"%s\" to %@ using %s\n", name, address->s_addr, resolver->name ); return 1; } } DBG ( "RESOLV failed to resolve %s\n", name ); return 0; }