2012-03-11 13:13:51 +04:00
/*
Unix SMB / CIFS implementation .
Small async DNS library for Samba with socketwrapper support
Copyright ( C ) 2012 Kai Blin < kai @ samba . org >
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 3 of the License , or
( at your option ) any later version .
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 .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef __LIBDNS_H__
# define __LIBDNS_H__
2017-12-29 13:01:29 +03:00
# include "lib/util/data_blob.h"
# include "lib/util/time.h"
# include "librpc/gen_ndr/dns.h"
2012-03-11 13:13:51 +04:00
/** Send an dns request to a dns server using UDP
*
* @ param mem_ctx talloc memory context to use
* @ param ev tevent context to use
* @ param server_address address of the server as a string
* @ param query dns query to send
* @ param query_len length of the query
* @ return tevent_req with the active request or NULL on out - of - memory
*/
struct tevent_req * dns_udp_request_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
const char * server_address ,
const uint8_t * query ,
size_t query_len ) ;
/** Get the dns response from a dns server via UDP
*
2017-12-29 11:36:31 +03:00
* @ param req tevent_req struct returned from dns_udp_request_send
2012-03-11 13:13:51 +04:00
* @ param mem_ctx talloc memory context to use for the reply string
* @ param reply buffer that will be allocated and filled with the dns reply
* @ param reply_len length of the reply buffer
2015-12-06 13:31:23 +03:00
* @ return 0 / errno
2012-03-11 13:13:51 +04:00
*/
2015-12-06 13:31:23 +03:00
int dns_udp_request_recv ( struct tevent_req * req ,
TALLOC_CTX * mem_ctx ,
uint8_t * * reply ,
size_t * reply_len ) ;
2012-03-11 13:13:51 +04:00
2017-12-29 00:35:46 +03:00
struct tevent_req * dns_tcp_request_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
const char * server_addr_string ,
const uint8_t * query ,
size_t query_len ) ;
int dns_tcp_request_recv ( struct tevent_req * req ,
TALLOC_CTX * mem_ctx ,
uint8_t * * reply ,
size_t * reply_len ) ;
2017-12-29 13:01:29 +03:00
/*
* DNS request with fallback to TCP on truncation
*/
struct tevent_req * dns_cli_request_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
const char * nameserver ,
const char * name ,
enum dns_qclass qclass ,
enum dns_qtype qtype ) ;
int dns_cli_request_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
struct dns_name_packet * * reply ) ;
2012-03-11 13:13:51 +04:00
# endif /*__LIBDNS_H__*/