resolver.h File Reference

Go to the source code of this file.

Data Structures

struct  ldns_struct_resolver
 Structure of a dns resolver. More...

Defines

#define LDNS_RESOLV_CONF   "/etc/resolv.conf"
 where to find the resolv.conf file
#define LDNS_RESOLV_HOSTS   "/etc/hosts"
#define LDNS_RESOLV_KEYWORD   -1
#define LDNS_RESOLV_DEFDOMAIN   0
#define LDNS_RESOLV_NAMESERVER   1
#define LDNS_RESOLV_SEARCH   2
#define LDNS_RESOLV_KEYWORDS   3
#define LDNS_RESOLV_INETANY   0
#define LDNS_RESOLV_INET   1
#define LDNS_RESOLV_INET6   2

Typedefs

typedef ldns_struct_resolver ldns_resolver

Functions

uint16_t ldns_resolver_port (ldns_resolver *r)
uint8_t ldns_resolver_retry (ldns_resolver *r)
uint8_t ldns_resolver_retrans (ldns_resolver *r)
uint8_t ldns_resolver_ip6 (ldns_resolver *r)
uint16_t ldns_resolver_edns_udp_size (ldns_resolver *r)
bool ldns_resolver_recursive (ldns_resolver *r)
bool ldns_resolver_debug (ldns_resolver *r)
bool ldns_resolver_usevc (ldns_resolver *r)
bool ldns_resolver_fail (ldns_resolver *r)
bool ldns_resolver_dnssec (ldns_resolver *r)
bool ldns_resolver_dnssec_cd (ldns_resolver *r)
bool ldns_resolver_igntc (ldns_resolver *r)
bool ldns_resolver_random (ldns_resolver *r)
size_t ldns_resolver_nameserver_count (ldns_resolver *r)
ldns_rdfldns_resolver_domain (ldns_resolver *r)
timeval ldns_resolver_timeout (ldns_resolver *r)
ldns_rdf ** ldns_resolver_searchlist (ldns_resolver *r)
ldns_rdf ** ldns_resolver_nameservers (ldns_resolver *r)
char * ldns_resolver_tsig_keyname (ldns_resolver *r)
char * ldns_resolver_tsig_algorithm (ldns_resolver *r)
char * ldns_resolver_tsig_keydata (ldns_resolver *r)
ldns_rdfldns_resolver_pop_nameserver (ldns_resolver *r)
 pop the last nameserver from the resolver.
void ldns_resolver_set_port (ldns_resolver *r, uint16_t)
void ldns_resolver_set_recursive (ldns_resolver *r, bool b)
void ldns_resolver_set_debug (ldns_resolver *r, bool b)
void ldns_resolver_incr_nameserver_count (ldns_resolver *r)
void ldns_resolver_dec_nameserver_count (ldns_resolver *r)
void ldns_resolver_set_nameserver_count (ldns_resolver *r, size_t c)
void ldns_resolver_set_nameservers (ldns_resolver *r, ldns_rdf **rd)
void ldns_resolver_set_domain (ldns_resolver *r, ldns_rdf *rd)
void ldns_resolver_set_timeout (ldns_resolver *r, struct timeval timeout)
void ldns_resolver_push_searchlist (ldns_resolver *r, ldns_rdf *rd)
void ldns_resolver_set_defnames (ldns_resolver *r, bool b)
void ldns_resolver_set_usevc (ldns_resolver *r, bool b)
void ldns_resolver_set_dnsrch (ldns_resolver *r, bool b)
void ldns_resolver_set_dnssec (ldns_resolver *r, bool b)
void ldns_resolver_set_dnssec_cd (ldns_resolver *r, bool b)
void ldns_resolver_set_retrans (ldns_resolver *r, uint8_t re)
void ldns_resolver_set_retry (ldns_resolver *r, uint8_t re)
void ldns_resolver_set_ip6 (ldns_resolver *r, uint8_t i)
void ldns_resolver_set_fail (ldns_resolver *r, bool b)
void ldns_resolver_set_igntc (ldns_resolver *r, bool b)
void ldns_resolver_set_edns_udp_size (ldns_resolver *r, uint16_t s)
void ldns_resolver_set_tsig_keyname (ldns_resolver *r, char *tsig_keyname)
void ldns_resolver_set_tsig_algorithm (ldns_resolver *r, char *tsig_algorithm)
void ldns_resolver_set_tsig_keydata (ldns_resolver *r, char *tsig_keydata)
void ldns_resolver_set_random (ldns_resolver *r, bool b)
ldns_status ldns_resolver_push_nameserver (ldns_resolver *r, ldns_rdf *n)
 push a new nameserver to the resolver.
ldns_status ldns_resolver_push_nameserver_rr (ldns_resolver *r, ldns_rr *rr)
 push a new nameserver to the resolver.
ldns_status ldns_resolver_push_nameserver_rr_list (ldns_resolver *r, ldns_rr_list *rrlist)
 push a new nameserver rr_list to the resolver.
int ldns_resolver_bgsend ()
 send the query as-is.
ldns_pktldns_resolver_search (ldns_resolver *r, ldns_rdf *rdf, ldns_rr_type t, ldns_rr_class c, uint16_t flags)
ldns_status ldns_resolver_send (ldns_pkt **answer, ldns_resolver *r, ldns_rdf *name, ldns_rr_type t, ldns_rr_class c, uint16_t flags)
 Send the query for *name as-is.
ldns_status ldns_resolver_send_pkt (ldns_pkt **answer, ldns_resolver *r, ldns_pkt *query_pkt)
 Send the given packet to a nameserver.
ldns_pktldns_resolver_query (ldns_resolver *r, ldns_rdf *name, ldns_rr_type type, ldns_rr_class class, uint16_t flags)
 Send a qeury to a nameserver.
ldns_resolverldns_resolver_new (void)
 create a new resolver structure
ldns_resolverldns_resolver_new_frm_fp (FILE *fp)
 Create a resolver structure from a file like /etc/resolv.conf.
ldns_resolverldns_resolver_new_frm_fp_l (FILE *fp, int *line_nr)
 Create a resolver structure from a file like /etc/resolv.conf.
ldns_resolverldns_resolver_new_frm_file (const char *filename)
 configure a resolver by means of a resolv.conf file The file may be NULL in which case there will be looked the RESOLV_CONF (defaults to /etc/resolv.conf
void ldns_resolver_free (ldns_resolver *res)
 Frees the allocated space for this resolver.
void ldns_resolver_deep_free (ldns_resolver *res)
 Frees the allocated space for this resolver and all it's data.
ldns_status ldns_axfr_start (ldns_resolver *resolver, ldns_rdf *domain, ldns_rr_class c)
 Prepares the resolver for an axfr query The query is sent and the answers can be read with ldns_axfr_next.
ldns_rrldns_axfr_next (ldns_resolver *resolver)
 get the next stream of RRs in a AXFR
bool ldns_axfr_complete (ldns_resolver *resolver)
 returns true if the axfr transfer has completed (i.e.
ldns_pktldns_axfr_last_pkt (ldns_resolver *res)
 returns a pointer to the last ldns_pkt that was sent by the server in the AXFR transfer uasable for instance to get the error code on failure


Define Documentation

#define LDNS_RESOLV_CONF   "/etc/resolv.conf"

where to find the resolv.conf file

Definition at line 24 of file resolver.h.

#define LDNS_RESOLV_DEFDOMAIN   0

Definition at line 28 of file resolver.h.

#define LDNS_RESOLV_HOSTS   "/etc/hosts"

Definition at line 25 of file resolver.h.

#define LDNS_RESOLV_INET   1

Definition at line 35 of file resolver.h.

#define LDNS_RESOLV_INET6   2

Definition at line 36 of file resolver.h.

#define LDNS_RESOLV_INETANY   0

Definition at line 34 of file resolver.h.

#define LDNS_RESOLV_KEYWORD   -1

Definition at line 27 of file resolver.h.

#define LDNS_RESOLV_KEYWORDS   3

Definition at line 32 of file resolver.h.

#define LDNS_RESOLV_NAMESERVER   1

Definition at line 29 of file resolver.h.

#define LDNS_RESOLV_SEARCH   2

Definition at line 30 of file resolver.h.


Typedef Documentation

typedef struct ldns_struct_resolver ldns_resolver

Definition at line 107 of file resolver.h.


Function Documentation

bool ldns_axfr_complete ( ldns_resolver resolver  ) 

returns true if the axfr transfer has completed (i.e.

2 SOA RRs and no errors were encountered

Parameters:
[in] resolver the resolver that is used
Returns:
bool true if axfr transfer was completed without error

ldns_pkt* ldns_axfr_last_pkt ( ldns_resolver res  ) 

returns a pointer to the last ldns_pkt that was sent by the server in the AXFR transfer uasable for instance to get the error code on failure

Parameters:
[in] res the resolver that was used in the axfr transfer
Returns:
ldns_pkt the last packet sent

ldns_rr* ldns_axfr_next ( ldns_resolver resolver  ) 

get the next stream of RRs in a AXFR

Parameters:
[in] resolver the resolver to use. First ldns_axfr_start() must be called
Returns:
ldns_rr the next RR from the AXFR stream

ldns_status ldns_axfr_start ( ldns_resolver resolver,
ldns_rdf domain,
ldns_rr_class  c 
)

Prepares the resolver for an axfr query The query is sent and the answers can be read with ldns_axfr_next.

Parameters:
[in] resolver the resolver to use
[in] domain the domain to exfr
[in] c the class to use
Returns:
ldns_status the status of the transfer

int ldns_resolver_bgsend (  ) 

send the query as-is.

but return a socket

Todo:
TODO

bool ldns_resolver_debug ( ldns_resolver r  ) 

void ldns_resolver_dec_nameserver_count ( ldns_resolver r  ) 

void ldns_resolver_deep_free ( ldns_resolver res  ) 

Frees the allocated space for this resolver and all it's data.

Parameters:
res resolver to free

bool ldns_resolver_dnssec ( ldns_resolver r  ) 

bool ldns_resolver_dnssec_cd ( ldns_resolver r  ) 

ldns_rdf* ldns_resolver_domain ( ldns_resolver r  ) 

uint16_t ldns_resolver_edns_udp_size ( ldns_resolver r  ) 

bool ldns_resolver_fail ( ldns_resolver r  ) 

void ldns_resolver_free ( ldns_resolver res  ) 

Frees the allocated space for this resolver.

Parameters:
res resolver to free

bool ldns_resolver_igntc ( ldns_resolver r  ) 

void ldns_resolver_incr_nameserver_count ( ldns_resolver r  ) 

uint8_t ldns_resolver_ip6 ( ldns_resolver r  ) 

size_t ldns_resolver_nameserver_count ( ldns_resolver r  ) 

ldns_rdf** ldns_resolver_nameservers ( ldns_resolver r  ) 

ldns_resolver* ldns_resolver_new ( void   ) 

create a new resolver structure

Returns:
ldns_resolver* pointer to new strcture

ldns_resolver* ldns_resolver_new_frm_file ( const char *  filename  ) 

configure a resolver by means of a resolv.conf file The file may be NULL in which case there will be looked the RESOLV_CONF (defaults to /etc/resolv.conf

Parameters:
[in] filename the filename to use
Returns:
ldns_resolver pointer

ldns_resolver* ldns_resolver_new_frm_fp ( FILE *  fp  ) 

Create a resolver structure from a file like /etc/resolv.conf.

Parameters:
[in] fp file pointer to create new resolver from if NULL use /etc/resolv.conf
Returns:
ldns_resolver structure

ldns_resolver* ldns_resolver_new_frm_fp_l ( FILE *  fp,
int *  line_nr 
)

Create a resolver structure from a file like /etc/resolv.conf.

Parameters:
[in] fp file pointer to create new resolver from if NULL use /etc/resolv.conf
[in] line_nr pointer to an integer containing the current line number (for debugging purposes)
Returns:
ldns_resolver structure

ldns_rdf* ldns_resolver_pop_nameserver ( ldns_resolver r  ) 

pop the last nameserver from the resolver.

Parameters:
[in] r the resolver
Returns:
the popped address or NULL if empty

uint16_t ldns_resolver_port ( ldns_resolver r  ) 

ldns_status ldns_resolver_push_nameserver ( ldns_resolver r,
ldns_rdf n 
)

push a new nameserver to the resolver.

It must be an IP address v4 or v6.

Parameters:
[in] r the resolver
[in] n the ip address
Returns:
ldns_status a status

ldns_status ldns_resolver_push_nameserver_rr ( ldns_resolver r,
ldns_rr rr 
)

push a new nameserver to the resolver.

It must be an A or AAAA RR record type

Parameters:
[in] r the resolver
[in] rr the resource record
Returns:
ldns_status a status

ldns_status ldns_resolver_push_nameserver_rr_list ( ldns_resolver r,
ldns_rr_list rrlist 
)

push a new nameserver rr_list to the resolver.

Parameters:
[in] r the resolver
[in] rrlist the rr_list to push
Returns:
ldns_status a status

void ldns_resolver_push_searchlist ( ldns_resolver r,
ldns_rdf rd 
)

ldns_pkt* ldns_resolver_query ( ldns_resolver r,
ldns_rdf name,
ldns_rr_type  type,
ldns_rr_class  class,
uint16_t  flags 
)

Send a qeury to a nameserver.

Parameters:
[in] *r operate using this resolver
[in] *name query for this name
[in] *type query for this type (may be 0, defaults to A)
[in] *class query for this class (may be 0, default to IN)
[in] flags the query flags
Returns:
ldns_pkt* a packet with the reply from the nameserver if _defnames is true the default domain will be added

bool ldns_resolver_random ( ldns_resolver r  ) 

bool ldns_resolver_recursive ( ldns_resolver r  ) 

uint8_t ldns_resolver_retrans ( ldns_resolver r  ) 

uint8_t ldns_resolver_retry ( ldns_resolver r  ) 

ldns_pkt* ldns_resolver_search ( ldns_resolver r,
ldns_rdf rdf,
ldns_rr_type  t,
ldns_rr_class  c,
uint16_t  flags 
)

ldns_rdf** ldns_resolver_searchlist ( ldns_resolver r  ) 

ldns_status ldns_resolver_send ( ldns_pkt **  answer,
ldns_resolver r,
ldns_rdf name,
ldns_rr_type  t,
ldns_rr_class  c,
uint16_t  flags 
)

Send the query for *name as-is.

Parameters:
[out] **answer a pointer to a ldns_pkt pointer (initialized by this function)
[in] *r operate using this resolver
[in] *name query for this name
[in] t query for this type (may be 0, defaults to A)
[in] c query for this class (may be 0, default to IN)
[in] flags the query flags
Returns:
ldns_pkt* a packet with the reply from the nameserver

ldns_status ldns_resolver_send_pkt ( ldns_pkt **  answer,
ldns_resolver r,
ldns_pkt query_pkt 
)

Send the given packet to a nameserver.

Parameters:
[out] **answer a pointer to a ldns_pkt pointer (initialized by this function)
[in] *r operate using this resolver
[in] *query_pkt query

void ldns_resolver_set_debug ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_defnames ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_dnsrch ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_dnssec ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_dnssec_cd ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_domain ( ldns_resolver r,
ldns_rdf rd 
)

void ldns_resolver_set_edns_udp_size ( ldns_resolver r,
uint16_t  s 
)

void ldns_resolver_set_fail ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_igntc ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_ip6 ( ldns_resolver r,
uint8_t  i 
)

void ldns_resolver_set_nameserver_count ( ldns_resolver r,
size_t  c 
)

void ldns_resolver_set_nameservers ( ldns_resolver r,
ldns_rdf **  rd 
)

void ldns_resolver_set_port ( ldns_resolver r,
uint16_t   
)

void ldns_resolver_set_random ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_recursive ( ldns_resolver r,
bool  b 
)

void ldns_resolver_set_retrans ( ldns_resolver r,
uint8_t  re 
)

void ldns_resolver_set_retry ( ldns_resolver r,
uint8_t  re 
)

void ldns_resolver_set_timeout ( ldns_resolver r,
struct timeval  timeout 
)

void ldns_resolver_set_tsig_algorithm ( ldns_resolver r,
char *  tsig_algorithm 
)

void ldns_resolver_set_tsig_keydata ( ldns_resolver r,
char *  tsig_keydata 
)

void ldns_resolver_set_tsig_keyname ( ldns_resolver r,
char *  tsig_keyname 
)

void ldns_resolver_set_usevc ( ldns_resolver r,
bool  b 
)

struct timeval ldns_resolver_timeout ( ldns_resolver r  ) 

char* ldns_resolver_tsig_algorithm ( ldns_resolver r  ) 

char* ldns_resolver_tsig_keydata ( ldns_resolver r  ) 

char* ldns_resolver_tsig_keyname ( ldns_resolver r  ) 

bool ldns_resolver_usevc ( ldns_resolver r  ) 


Generated on Mon Sep 11 20:08:48 2006 for ldns by  doxygen 1.4.7