From: Miek Gieben Date: Tue, 8 Mar 2005 10:25:11 +0000 (+0000) Subject: push_nameserver_rr, allow rr's to be used as nameserver addresses X-Git-Tag: release-0.50~297 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=087dea2d8c634508b3d7fc02b2cd81aabed4feae;p=thirdparty%2Fldns.git push_nameserver_rr, allow rr's to be used as nameserver addresses --- diff --git a/ldns/resolver.h b/ldns/resolver.h index 82e593e9..f4ba2469 100644 --- a/ldns/resolver.h +++ b/ldns/resolver.h @@ -107,6 +107,7 @@ 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_status ldns_resolver_push_nameserver(ldns_resolver *, ldns_rdf *); +ldns_status ldns_resolver_push_nameserver_rr(ldns_resolver *, ldns_rr *); ldns_pkt * ldns_resolver_bgsend(); ldns_pkt * ldns_resolver_send(ldns_resolver *, ldns_rdf*, ldns_rr_type, ldns_rr_class, uint16_t); diff --git a/resolver.c b/resolver.c index cdd247e4..b88d95bd 100644 --- a/resolver.c +++ b/resolver.c @@ -133,7 +133,6 @@ ldns_resolver_set_port(ldns_resolver *r, uint16_t p) ldns_status ldns_resolver_push_nameserver(ldns_resolver *r, ldns_rdf *n) { - /* LDNS_RDF_TYPE_A | LDNS_RDF_TYPE_AAAA */ ldns_rdf **nameservers; if (ldns_rdf_get_type(n) != LDNS_RDF_TYPE_A && @@ -155,6 +154,27 @@ ldns_resolver_push_nameserver(ldns_resolver *r, ldns_rdf *n) return LDNS_STATUS_OK; } +/** + * push a new nameserver to the resolver. It must be an + * A or AAAA RR record type + * \param[in] r the resolver + * \param[in] r the rr + * \return ldns_status a status + */ +ldns_status +ldns_resolver_push_nameserver_rr(ldns_resolver *r, ldns_rr *rr) +{ + ldns_rdf *address; + + if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_A && + ldns_rr_get_type(rr) != LDNS_RR_TYPE_AAAA) { + return LDNS_STATUS_ERR; + } + + address = ldns_rr_rdf(rr, 1); /* extra the ip number */ + return ldns_resolver_push_nameserver(r, address); +} + void ldns_resolver_set_recursive(ldns_resolver *r, bool re) { diff --git a/rr.c b/rr.c index c313805d..08b7ceb2 100644 --- a/rr.c +++ b/rr.c @@ -311,9 +311,9 @@ ldns_rr_pop_rdf(ldns_rr *rr) } /** - * set the rdata field member counter + * return the rdata field member counter * \param[in] *rr rr to operate on - * \param[in] nr the number to set + * \param[in] nr the number of the rdf to return * \return ldns_rdf * */ ldns_rdf *