| /* |
| * Copyright (C) 2011-2012 Reto Guadagnini |
| * HSR Hochschule fuer Technik Rapperswil |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License as published by the |
| * Free Software Foundation; either version 2 of the License, or (at your |
| * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. |
| * |
| * This program is distributed in the hope that it will be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * for more details. |
| */ |
| |
| /** |
| * @defgroup resolver_t resolver |
| * @{ @ingroup resolver |
| */ |
| |
| #ifndef RESOLVER_H_ |
| #define RESOLVER_H_ |
| |
| typedef struct resolver_t resolver_t; |
| |
| /** |
| * Constructor function which creates DNS resolver instances. |
| */ |
| typedef resolver_t* (*resolver_constructor_t)(void); |
| |
| #include <resolver/resolver_response.h> |
| #include <resolver/rr_set.h> |
| #include <resolver/rr.h> |
| |
| /** |
| * Interface of a security-aware DNS resolver. |
| * |
| */ |
| struct resolver_t { |
| |
| /** |
| * Perform a DNS query. |
| * |
| * @param domain domain (FQDN) to query |
| * @param rr_class class of the desired RRs |
| * @param rr_type type of the desired RRs |
| * @return response to the query, NULL on failure |
| */ |
| resolver_response_t *(*query)(resolver_t *this, char *domain, |
| rr_class_t rr_class, rr_type_t rr_type); |
| |
| /** |
| * Destroy the resolver instance. |
| */ |
| void (*destroy)(resolver_t *this); |
| }; |
| |
| #endif /** RESOLVER_H_ @}*/ |