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 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/include/gpxe/resolv.h (limited to 'src/include/gpxe') 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 */ -- cgit v1.2.3-55-g7522