From 4e3976711dec26ba1f462f19c4b865dea3dbe4d7 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 18 Jan 2007 22:38:13 +0000 Subject: A working name resolution framework --- src/include/gpxe/resolv.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/include/resolv.h | 16 ---------------- 2 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 src/include/gpxe/resolv.h delete mode 100644 src/include/resolv.h (limited to 'src/include') diff --git a/src/include/gpxe/resolv.h b/src/include/gpxe/resolv.h new file mode 100644 index 000000000..71364012c --- /dev/null +++ b/src/include/gpxe/resolv.h @@ -0,0 +1,47 @@ +#ifndef _GPXE_RESOLV_H +#define _GPXE_RESOLV_H + +/** @file + * + * Name resolution + * + */ + +struct sockaddr; + +#include +#include + +/** A name resolver */ +struct resolver { + /** Name of this resolver (e.g. "DNS") */ + const char *name; + /** Start name resolution + * + * @v name Host name to resolve + * @v sa Socket address to fill in + * @v parent Parent asynchronous operation + * @ret rc Return status code + * + * The asynchronous process must be prepared to accept + * SIGKILL. + */ + int ( * resolv ) ( const char *name, struct sockaddr *sa, + struct async *parent ); +}; + +/** A name resolution in progress */ +struct resolution { + /** Asynchronous operation */ + struct async async; + /** Numner of active child resolvers */ + unsigned int pending; +}; + +/** Register as a name resolver */ +#define __resolver __table ( struct resolver, resolvers, 01 ) + +extern int resolv ( const char *name, struct sockaddr *sa, + struct async *parent ); + +#endif /* _GPXE_RESOLV_H */ diff --git a/src/include/resolv.h b/src/include/resolv.h deleted file mode 100644 index 714d39ef8..000000000 --- a/src/include/resolv.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef RESOLV_H -#define RESOLV_H - -#include -#include - -struct resolver { - const char *name; - int ( * resolv ) ( struct in_addr *address, const char *name ); -}; - -#define __resolver __table ( struct resolver, resolver, 01 ) - -extern int resolv ( struct in_addr *address, const char *name ); - -#endif /* RESOLV_H */ -- cgit v1.2.3-55-g7522