void ldns_resolver_set_recursive(ldns_resolver *, bool);
void ldns_resolver_set_debug(ldns_resolver *, bool);
void ldns_resolver_incr_nameserver_count(ldns_resolver *);
+void ldns_resolver_dec_nameserver_count(ldns_resolver *);
void ldns_resolver_set_nameserver_count(ldns_resolver *, size_t);
void ldns_resolver_set_domain(ldns_resolver *, ldns_rdf *);
void ldns_resolver_set_timeout(ldns_resolver *r, struct timeval timeout);
void ldns_resolver_push_searchlist(ldns_resolver *, ldns_rdf *);
+ldns_rdf * ldns_resolver_pop_nameserver(ldns_resolver *);
ldns_status ldns_resolver_push_nameserver(ldns_resolver *, ldns_rdf *);
ldns_status ldns_resolver_push_nameserver_rr(ldns_resolver *, ldns_rr *);
ldns_status ldns_resolver_push_nameserver_rr_list(ldns_resolver *, ldns_rr_list *);
r->_port = p;
}
+/**
+ * pop the last nameserver from the resolver.
+ * \param[in] r the resolver
+ * \return the popped address or NULL if empty
+ */
+ldns_rdf *
+ldns_resolver_pop_nameserver(ldns_resolver *r)
+{
+ ldns_rdf **nameservers;
+ ldns_rdf *pop;
+
+ if (ldns_resolver_nameserver_count(r) == 0) {
+ return NULL;
+ }
+
+ nameservers = ldns_resolver_nameservers(r);
+
+ pop = nameservers[ldns_resolver_nameserver_count(r)];
+
+ /* delete the room of the last one */
+ nameservers = XREALLOC(nameservers, ldns_rdf *,
+ (ldns_resolver_nameserver_count(r) - 1));
+
+ ldns_resolver_dec_nameserver_count(r);
+ return pop;
+}
+
/**
* push a new nameserver to the resolver. It must be an IP
* address v4 or v6.
ldns_resolver_set_nameserver_count(r, ++c);
}
+void
+ldns_resolver_dec_nameserver_count(ldns_resolver *r)
+{
+ size_t c;
+
+ c = ldns_resolver_nameserver_count(r);
+ if (c == 0) {
+ return;
+ } else {
+ ldns_resolver_set_nameserver_count(r, --c);
+ }
+}
+
void
ldns_resolver_set_domain(ldns_resolver *r, ldns_rdf *d)
{