/** \brief On which port to run */
uint16_t _port;
- /** \brief List of nameservers to query */
- ldns_rr_list *_nameservers;
+ /** \brief List of nameservers to query (IP addresses or dname) */
+ ldns_rdf **_nameservers;
+ uint8_t _nameserver_count; /* how many do we have */
/** \brief Wether or not to be recursive */
uint8_t _recursive;
/** \brief Print debug information */
uint8_t _debug;
- /* XXX both types below could be done better, mabye rr_list? */
/** \brief Default domain to add */
- ldns_rdf *_domain; /* LDNS_RDF_TYPE_DNAME */
+ ldns_dname *_domain; /* LDNS_RDF_TYPE_DNAME */
- /** \brief Searchlist */
- ldns_rdf *_searchlist; /* LDNS_RFD_TYPE_DNAME */
+ /** \brief Searchlist array */
+ ldns_dname **_searchlist; /* LDNS_RFD_TYPE_DNAME */
+ uint8_t _searchlist_count;
/** \brief How many retries */
uint8_t _retry;
/* prototypes */
uint16_t ldns_resolver_port(ldns_resolver *);
-ldns_rr_list * ldns_resolver_nameservers(ldns_resolver *);
+/* ldns_rr_list * ldns_resolver_nameservers(ldns_resolver *) pop>? */
uint8_t ldns_resolver_recursive(ldns_resolver *);
uint8_t ldns_resolver_debug(ldns_resolver *);
-ldns_rdf * ldns_resolver_domain(ldns_resolver *);
-ldns_rdf * ldns_resolver_searchlist(ldns_resolver *);
+ldns_dname * ldns_resolver_domain(ldns_resolver *);
+ldns_dname ** ldns_resolver_searchlist(ldns_resolver *);
+ldns_dname ** ldns_resolver_nameservers(ldns_resolver *);
void ldns_resolver_set_port(ldns_resolver *, uint16_t);
-void ldns_resolver_set_nameservers(ldns_resolver *, ldns_rr_list *);
void ldns_resolver_set_recursive(ldns_resolver *, uint8_t);
void ldns_resolver_set_debug(ldns_resolver *, uint8_t);
-void ldns_resolver_set_domain(ldns_resolver *, ldns_rdf *);
-void ldns_resolver_set_searchlist(ldns_resolver *, ldns_rdf *);
+void ldns_resolver_set_domain(ldns_resolver *, ldns_dname *);
+
+ldns_status ldns_resolver_push_searchlist(ldns_resolver *, ldns_dname *);
+ldns_status ldns_resolver_push_nameserver(ldns_resolver *, ldns_rdf *);
ldns_pkt * ldns_search();
ldns_pkt * ldns_query();
ldns_pkt * ldns_bgsend();
ldns_pkt * ldns_send(ldns_resolver *, ldns_dname*, ldns_rr_type *, ldns_rr_class*);
+ldns_resolver ldns_resolver_new(void);
+
#endif /* !_LDNS_RESOLVER_H */
return r->_port;
}
-ldns_rr_list *
-ldns_resolver_nameservers(ldns_resolver *r)
-{
- return r->_nameservers;
-}
-
uint8_t
ldns_resolver_recursive(ldns_resolver *r)
{
return r->_debug;
}
-ldns_rdf *
+ldns_dname *
ldns_resolver_domain(ldns_resolver *r)
{
return r->_domain;
}
-ldns_rdf *
+ldns_dname **
ldns_resolver_searchlist(ldns_resolver *r)
{
return r->_searchlist;
r->_port = p;
}
-void
-ldns_resolver_set_nameservers(ldns_resolver *r, ldns_rr_list *n)
+ldns_status
+ldns_resolver_push_nameserver(ldns_resolver *r, ldns_rdf *n)
{
- r->_nameservers = n;
+ /* LDNS_RDF_TYPE_A | LDNS_RDF_TYPE_AAAA | LDNS_RDF_TYPE_DNAME */
+ r->_nameservers[++r->_nameserver_count] = n;
+ return LDNS_STATUS_OK;
}
void
}
void
-ldns_resolver_set_domain(ldns_resolver *r, ldns_rdf *d)
+ldns_resolver_set_domain(ldns_resolver *r, ldns_dname *d)
{
- if (ldns_rdf_get_type(d) != LDNS_RDF_TYPE_DNAME) {
- return;
- }
r->_domain = d;
}
/* this is not the way to go for the search list XXX */
-void
-ldns_resolver_set_searchlist(ldns_resolver *r, ldns_rdf *s)
+ldns_status
+ldns_resolver_push_searchlist(ldns_resolver *r, ldns_dname *d)
{
- if (ldns_rdf_get_type(s) != LDNS_RDF_TYPE_DNAME) {
- return;
- }
- r->_searchlist = s;
+ r->_searchlist[++r->_searchlist_count] = d;
+ return LDNS_STATUS_OK;
}
uint8_t
r = MALLOC(ldns_resolver);
r->_configured = 0; /* no config has happened yet */
+ r->_searchlist_count = 0; /* no searchlist */
/* no defaults are filled out (yet) */
return r;
main(void)
{
ldns_resolver *res;
- ldns_rdf *default_dom;
+ ldns_dname *default_dom;
ldns_rdf *nameserver;
ldns_rdf *qname;
ldns_pkt *pkt;
return 1;
/* create a default domain and add it */
- default_dom = ldns_rdf_new_frm_str("miek.nl.", LDNS_RDF_TYPE_DNAME);
+ default_dom = ldns_dname_new_frm_str("miek.nl.");
nameserver = ldns_rdf_new_frm_str("127.0.0.1", LDNS_RDF_TYPE_A);
- if (ldns_resolver_domain(res, default_dom) != LDNS_STATUS_OK)
+ if (ldns_resolver_set_domain(res, default_dom) != LDNS_STATUS_OK)
return 1;
- if (ldns_resolver_nameserver_push(res, nameserver) != LDNS_STATUS_OK)
+ if (ldns_resolver_push_nameserver(res, nameserver) != LDNS_STATUS_OK)
return 1;
/* setup the question */