123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #ifndef _IPXE_RESOLV_H
- #define _IPXE_RESOLV_H
-
- /** @file
- *
- * Name resolution
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <ipxe/interface.h>
- #include <ipxe/tables.h>
-
- struct sockaddr;
-
- /** A name resolver */
- struct resolver {
- /** Name of this resolver (e.g. "DNS") */
- const char *name;
- /** Start name resolution
- *
- * @v resolv Name resolution interface
- * @v name Name to resolve
- * @v sa Socket address to complete
- * @ret rc Return status code
- */
- int ( * resolv ) ( struct interface *resolv, const char *name,
- struct sockaddr *sa );
- };
-
- /** Numeric resolver priority */
- #define RESOLV_NUMERIC 01
-
- /** Normal resolver priority */
- #define RESOLV_NORMAL 02
-
- /** Resolvers table */
- #define RESOLVERS __table ( struct resolver, "resolvers" )
-
- /** Register as a name resolver */
- #define __resolver( resolv_order ) __table_entry ( RESOLVERS, resolv_order )
-
- extern void resolv_done ( struct interface *intf, struct sockaddr *sa );
- #define resolv_done_TYPE( object_type ) \
- typeof ( void ( object_type, struct sockaddr *sa ) )
-
- extern int resolv ( struct interface *resolv, const char *name,
- struct sockaddr *sa );
-
- #endif /* _IPXE_RESOLV_H */
|