From: Miek Gieben Date: Tue, 15 Mar 2005 10:26:31 +0000 (+0000) Subject: put edns_udp_size in resolver also X-Git-Tag: release-0.50~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9e5b44f562b0fb473a1234110f714e111237fef;p=thirdparty%2Fldns.git put edns_udp_size in resolver also --- diff --git a/ldns/resolver.h b/ldns/resolver.h index 43f7246b..00c4ec4d 100644 --- a/ldns/resolver.h +++ b/ldns/resolver.h @@ -86,6 +86,8 @@ struct ldns_struct_resolver keep the current pkt */ ldns_pkt *_cur_axfr_pkt; uint16_t _axfr_i; + /* EDNS0 stuff only bufsize atm */ + uint16_t _edns_udp_size; }; typedef struct ldns_struct_resolver ldns_resolver; @@ -124,6 +126,7 @@ ldns_status ldns_resolver_push_nameserver_rr_list(ldns_resolver *, ldns_rr_list uint8_t ldns_resolver_retry(ldns_resolver *); uint8_t ldns_resolver_retrans(ldns_resolver *); uint8_t ldns_resolver_ip6(ldns_resolver *); +uint16_t ldns_resolver_edns_udp_size(ldns_resolver *); ldns_pkt * ldns_resolver_bgsend(); ldns_pkt * ldns_resolver_send(ldns_resolver *, ldns_rdf*, ldns_rr_type, ldns_rr_class, uint16_t); @@ -141,6 +144,7 @@ void ldns_resolver_set_retrans(ldns_resolver *, uint8_t); void ldns_resolver_set_retry(ldns_resolver *, uint8_t); void ldns_resolver_set_ip6(ldns_resolver *, uint8_t); void ldns_resolver_set_fail(ldns_resolver *, bool); +void ldns_resolver_set_edns_udp_size(ldns_resolver *, uint16_t); /** * Prepares the resolver for an axfr query diff --git a/resolver.c b/resolver.c index 26008b82..e74b90c7 100644 --- a/resolver.c +++ b/resolver.c @@ -38,6 +38,12 @@ ldns_resolver_port(ldns_resolver *r) return r->_port; } +uint16_t +ldns_resolver_edns_udp_size(ldns_resolver *r) +{ + return r->_edns_udp_size; +} + uint8_t ldns_resolver_retry(ldns_resolver *r) { @@ -255,6 +261,12 @@ ldns_resolver_push_nameserver_rr_list(ldns_resolver *r, ldns_rr_list *rrlist) } } +void +ldns_resolver_set_edns_udp_size(ldns_resolver *r, uint16_t s) +{ + r->_edns_udp_size = s; +} + void ldns_resolver_set_recursive(ldns_resolver *r, bool re) { @@ -410,6 +422,7 @@ ldns_resolver_new(void) ldns_resolver_set_retry(r, 4); ldns_resolver_set_retrans(r, 5); ldns_resolver_set_fail(r, false); + ldns_resolver_set_edns_udp_size(r, 0); r->_timeout.tv_sec = LDNS_DEFAULT_TIMEOUT_SEC; r->_timeout.tv_usec = LDNS_DEFAULT_TIMEOUT_USEC; @@ -641,6 +654,12 @@ ldns_resolver_send(ldns_resolver *r, ldns_rdf *name, ldns_rr_type type, ldns_rr_ printf("Failed to generate pkt\n"); return NULL; } + /* transfer the udp_edns_size from the resolver to the packet */ + if (ldns_resolver_edns_udp_size(r) != 0) { + ldns_pkt_set_edns_udp_size(query_pkt, + ldns_resolver_edns_udp_size(r)); + } + if (ldns_resolver_debug(r)) { ldns_pkt_print(stdout, query_pkt); }