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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _IPXE_RESOLV_H
  2. #define _IPXE_RESOLV_H
  3. /** @file
  4. *
  5. * Name resolution
  6. *
  7. */
  8. FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
  9. #include <ipxe/interface.h>
  10. #include <ipxe/tables.h>
  11. struct sockaddr;
  12. /** A name resolver */
  13. struct resolver {
  14. /** Name of this resolver (e.g. "DNS") */
  15. const char *name;
  16. /** Start name resolution
  17. *
  18. * @v resolv Name resolution interface
  19. * @v name Name to resolve
  20. * @v sa Socket address to complete
  21. * @ret rc Return status code
  22. */
  23. int ( * resolv ) ( struct interface *resolv, const char *name,
  24. struct sockaddr *sa );
  25. };
  26. /** Numeric resolver priority */
  27. #define RESOLV_NUMERIC 01
  28. /** Normal resolver priority */
  29. #define RESOLV_NORMAL 02
  30. /** Resolvers table */
  31. #define RESOLVERS __table ( struct resolver, "resolvers" )
  32. /** Register as a name resolver */
  33. #define __resolver( resolv_order ) __table_entry ( RESOLVERS, resolv_order )
  34. extern void resolv_done ( struct interface *intf, struct sockaddr *sa );
  35. #define resolv_done_TYPE( object_type ) \
  36. typeof ( void ( object_type, struct sockaddr *sa ) )
  37. extern int resolv ( struct interface *resolv, const char *name,
  38. struct sockaddr *sa );
  39. #endif /* _IPXE_RESOLV_H */