You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

resolv.c 835B

12345678910111213141516171819202122232425262728293031
  1. #include "resolv.h"
  2. static struct resolver resolvers[0] __table_start(resolver);
  3. static struct resolver resolvers_end[0] __table_end(resolver);
  4. /*
  5. * Resolve a name (which may be just a dotted quad IP address) to an
  6. * IP address.
  7. *
  8. */
  9. int resolv ( struct in_addr *address, const char *name ) {
  10. struct resolver *resolver;
  11. /* Check for a dotted quad IP address first */
  12. if ( inet_aton ( name, address ) ) {
  13. DBG ( "RESOLV saw valid IP address %s\n", name );
  14. return 1;
  15. }
  16. /* Try any compiled-in name resolution modules */
  17. for ( resolver = resolvers ; resolver < resolvers_end ; resolver++ ) {
  18. if ( resolver->resolv ( address, name ) ) {
  19. DBG ( "RESOLV resolved \"%s\" to %@ using %s\n",
  20. name, address->s_addr, resolver->name );
  21. return 1;
  22. }
  23. }
  24. DBG ( "RESOLV failed to resolve %s\n", name );
  25. return 0;
  26. }