Ported bnx2 driver from Etherboot 5.4.
[people/dverkamp/gpxe.git] / src / include / gpxe / resolv.h
1 #ifndef _GPXE_RESOLV_H
2 #define _GPXE_RESOLV_H
3
4 /** @file
5  *
6  * Name resolution
7  *
8  */
9
10 struct sockaddr;
11
12 #include <gpxe/async.h>
13 #include <gpxe/tables.h>
14
15 /** A name resolver */
16 struct resolver {
17         /** Name of this resolver (e.g. "DNS") */
18         const char *name;
19         /** Start name resolution
20          *
21          * @v name              Host name to resolve
22          * @v sa                Socket address to fill in
23          * @v parent            Parent asynchronous operation
24          * @ret rc              Return status code
25          *
26          * The asynchronous process must be prepared to accept
27          * SIGKILL.
28          */
29         int ( * resolv ) ( const char *name, struct sockaddr *sa,
30                            struct async *parent );
31 };
32
33 /** A name resolution in progress */
34 struct resolution {
35         /** Asynchronous operation */
36         struct async async;
37         /** Numner of active child resolvers */
38         unsigned int pending;
39 };
40
41 /** Register as a name resolver */
42 #define __resolver __table ( struct resolver, resolvers, 01 )
43
44 extern int resolv ( const char *name, struct sockaddr *sa,
45                     struct async *parent );
46
47 #endif /* _GPXE_RESOLV_H */