diff options
| author | Michael Brown | 2005-04-29 15:26:31 +0200 |
|---|---|---|
| committer | Michael Brown | 2005-04-29 15:26:31 +0200 |
| commit | 65dc273d7816a0a38064e4a6294ef40b32f4dcc7 (patch) | |
| tree | 78d44dfa64ea61da60d148b9239601a3e018ba87 /src | |
| parent | First version (diff) | |
| download | ipxe-65dc273d7816a0a38064e4a6294ef40b32f4dcc7.tar.gz ipxe-65dc273d7816a0a38064e4a6294ef40b32f4dcc7.tar.xz ipxe-65dc273d7816a0a38064e4a6294ef40b32f4dcc7.zip | |
First version
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/resolv.c | 25 | ||||
| -rw-r--r-- | src/include/resolv.h | 15 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/core/resolv.c b/src/core/resolv.c new file mode 100644 index 000000000..24483b837 --- /dev/null +++ b/src/core/resolv.c @@ -0,0 +1,25 @@ +#include "resolv.h" + +static struct resolver resolvers[0] __table_start(resolver); +static struct resolver resolvers_end[0] __table_end(resolver); + +/* + * Resolve a name (which may be just a dotted quad IP address) to an + * IP address. + * + */ +int resolv ( struct in_addr *address, const char *name ) { + struct resolver *resolver; + + /* Check for a dotted quad IP address first */ + if ( inet_aton ( name, address ) ) + return 1; + + /* Try any compiled-in name resolution modules */ + for ( resolver = resolvers ; resolver < resolvers_end ; resolver++ ) { + if ( resolver->resolv ( address, name ) ) + return 1; + } + + return 0; +} diff --git a/src/include/resolv.h b/src/include/resolv.h new file mode 100644 index 000000000..99e3b297b --- /dev/null +++ b/src/include/resolv.h @@ -0,0 +1,15 @@ +#ifndef RESOLV_H +#define RESOLV_H + +#include "in.h" +#include "tables.h" + +struct resolver { + int ( * resolv ) ( struct in_addr *address, const char *name ); +}; + +#define __resolver __table(resolver,01) + +extern int resolv ( struct in_addr *address, const char *name ); + +#endif /* RESOLV_H */ |
