10 FILE_LICENCE ( GPL2_OR_LATER );
12 #include <ipxe/interface.h>
13 #include <ipxe/tables.h>
17 /** A name resolver */
19 /** Name of this resolver (e.g. "DNS") */
21 /** Start name resolution
23 * @v resolv Name resolution interface
24 * @v name Name to resolve
25 * @v sa Socket address to complete
26 * @ret rc Return status code
28 int ( * resolv ) ( struct interface *resolv, const char *name,
29 struct sockaddr *sa );
32 /** Numeric resolver priority */
33 #define RESOLV_NUMERIC 01
35 /** Normal resolver priority */
36 #define RESOLV_NORMAL 02
38 /** Resolvers table */
39 #define RESOLVERS __table ( struct resolver, "resolvers" )
41 /** Register as a name resolver */
42 #define __resolver( resolv_order ) __table_entry ( RESOLVERS, resolv_order )
44 extern void resolv_done ( struct interface *intf, struct sockaddr *sa );
45 #define resolv_done_TYPE( object_type ) \
46 typeof ( void ( object_type, struct sockaddr *sa ) )
48 extern int resolv ( struct interface *resolv, const char *name,
49 struct sockaddr *sa );
51 #endif /* _IPXE_RESOLV_H */