From 1ebf5a5fcda0c9154e22ed02404fd46525a7fd9f Mon Sep 17 00:00:00 2001 From: bossiel Date: Wed, 10 Aug 2011 22:59:15 +0000 Subject: Move deprecated v1.0 from trunk to branches --- tinyNET/src/dns/tnet_dns.h | 125 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 tinyNET/src/dns/tnet_dns.h (limited to 'tinyNET/src/dns/tnet_dns.h') diff --git a/tinyNET/src/dns/tnet_dns.h b/tinyNET/src/dns/tnet_dns.h new file mode 100644 index 0000000..0ff6290 --- /dev/null +++ b/tinyNET/src/dns/tnet_dns.h @@ -0,0 +1,125 @@ +/* +* Copyright (C) 2009-2010 Mamadou Diop. +* +* Contact: Mamadou Diop +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO 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 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO 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. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ +/**@file tnet_dns.h + * @brief DNS utilities functions (RFCS [1034 1035] [2671] [3401 3402 3403 3404] [3761]). + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + +#ifndef TNET_DNS_H +#define TNET_DNS_H + +#include "tinynet_config.h" + +#include "tnet_dns_message.h" + +#include "tnet_utils.h" + +#include "tsk_safeobj.h" + +#if HAVE_DNS_H +#include +#endif + +TNET_BEGIN_DECLS + +/**@ingroup tnet_dns_group +*/ +#define TNET_DNS_CACHE_TTL (15000 * 1000) + +/**@ingroup tnet_dns_group +* Default timeout (in milliseconds) value for DNS queries. +*/ +#define TNET_DNS_TIMEOUT_DEFAULT 5000 //(5 seconds) + +/**@ingroup tnet_dns_group +* Maximum supported Dgram size to advertise using EDNS0. +*/ +#define TNET_DNS_DGRAM_SIZE_DEFAULT 4096 + +/**@ingroup tnet_dns_group +*/ +#define TNET_DNS_SERVER_PORT_DEFAULT 53 + +/**DNS cache entry. +*/ +typedef struct tnet_dns_cache_entry_s +{ + TSK_DECLARE_OBJECT; + + char* qname; + tnet_dns_qclass_t qclass; + tnet_dns_qtype_t qtype; + + uint64_t epoch; + + tnet_dns_response_t *response; +} +tnet_dns_cache_entry_t; +typedef tsk_list_t tnet_dns_cache_entries_L_t; +typedef tnet_dns_cache_entries_L_t tnet_dns_cache_t; + +/**DNS context. +*/ +typedef struct tnet_dns_ctx_s +{ + TSK_DECLARE_OBJECT; + + uint64_t timeout; /**< In milliseconds. Default: @ref TNET_DNS_TIMEOUT_DEFAULT. */ + tsk_bool_t recursion; /**< Indicates whether to direct the name server to pursue the query recursively. Default: enabled.*/ + tsk_bool_t edns0; /**< Indicates whether to enable EDNS0 (Extension Mechanisms for DNS) or not. This option will allow you to send DNS packet larger than 512 bytes. Default: enabled. */ + tsk_bool_t caching; /**< Indicates whether to enable the DNS cache or not. Default: no. */ + + int32_t cache_ttl; + + tnet_port_t server_port; /**< Default port (@a TNET_DNS_SERVER_PORT_DEFAULT)) */ + + tnet_dns_cache_t *cache; + tnet_addresses_L_t *servers; + +#if HAVE_DNS_H + dns_handle_t resolv_handle; +#endif + + TSK_DECLARE_SAFEOBJ; +} +tnet_dns_ctx_t; + +TINYNET_API int tnet_dns_cache_clear(tnet_dns_ctx_t* ctx); +TINYNET_API tnet_dns_response_t* tnet_dns_resolve(tnet_dns_ctx_t* ctx, const char* qname, tnet_dns_qclass_t qclass, tnet_dns_qtype_t qtype); +TINYNET_API tnet_dns_response_t* tnet_dns_enum(tnet_dns_ctx_t* ctx, const char* e164num, const char* domain); +TINYNET_API char* tnet_dns_enum_2(tnet_dns_ctx_t* ctx, const char* service, const char* e164num, const char* domain); +TINYNET_API int tnet_dns_query_srv(tnet_dns_ctx_t *ctx, const char* service, char** hostname, tnet_port_t* port); +TINYNET_API int tnet_dns_query_naptr_srv(tnet_dns_ctx_t *ctx, const char* domain, const char* service, char** hostname, tnet_port_t* port); + +TINYNET_API int tnet_dns_add_server(tnet_dns_ctx_t *ctx, const char* host); + +TINYNET_API tnet_dns_ctx_t* tnet_dns_ctx_create(); + +TINYNET_GEXTERN const tsk_object_def_t *tnet_dns_ctx_def_t; +TINYNET_GEXTERN const tsk_object_def_t *tnet_dns_cache_entry_def_t; + +TNET_END_DECLS + +#endif /* TNET_DNS_H */ -- cgit v1.1