From: Jelte Jansen Date: Wed, 15 Jun 2005 16:11:40 +0000 (+0000) Subject: actually put cd but from packet on the wire X-Git-Tag: release-0.66~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90c82d3c28f00914940511f79f03372fb42de888;p=thirdparty%2Fldns.git actually put cd but from packet on the wire added cd flag to resolver structure, so that all queries made can have their cd bit set --- diff --git a/host2wire.c b/host2wire.c index 7f30eebc..d8a9a5b1 100644 --- a/host2wire.c +++ b/host2wire.c @@ -168,6 +168,8 @@ ldns_hdr2buffer_wire(ldns_buffer *buffer, const ldns_pkt *packet) flags = ldns_pkt_ra(packet) << 7 /*| ldns_pkt_z(packet) << 6*/ + | ldns_pkt_ad(packet) << 5 + | ldns_pkt_cd(packet) << 4 | ldns_pkt_rcode(packet); ldns_buffer_write_u8(buffer, flags); diff --git a/ldns/resolver.h b/ldns/resolver.h index dad69c0f..60b251b8 100644 --- a/ldns/resolver.h +++ b/ldns/resolver.h @@ -65,6 +65,8 @@ struct ldns_struct_resolver uint8_t _retrans; /** \brief Wether to do DNSSEC */ bool _dnssec; + /** \brief Wether to set the CD bit on DNSSEC requests */ + bool _dnssec_cd; /** \brief Wether to use tcp */ bool _usevc; /** \brief Wether to ignore the tc bit */ @@ -113,6 +115,7 @@ 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); @@ -145,6 +148,7 @@ 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); diff --git a/net.c b/net.c index 812a7b69..7bf94c0e 100644 --- a/net.c +++ b/net.c @@ -67,7 +67,6 @@ ldns_send(ldns_pkt **result, ldns_resolver *r, ldns_pkt *query_pkt) if (ldns_pkt2buffer_wire(qb, query_pkt) != LDNS_STATUS_OK) { return LDNS_STATUS_ERR; } - /* random should already be setup - isn't so bad * if this isn't "good" random. Note that this * changes the order in the resolver as well! diff --git a/resolver.c b/resolver.c index a95e6c34..229de316 100644 --- a/resolver.c +++ b/resolver.c @@ -112,6 +112,12 @@ ldns_resolver_dnssec(ldns_resolver *r) return r->_dnssec; } +bool +ldns_resolver_dnssec_cd(ldns_resolver *r) +{ + return r->_dnssec_cd; +} + bool ldns_resolver_igntc(ldns_resolver *r) { @@ -269,6 +275,12 @@ ldns_resolver_set_dnssec(ldns_resolver *r, bool d) r->_dnssec = d; } +void +ldns_resolver_set_dnssec_cd(ldns_resolver *r, bool d) +{ + r->_dnssec_cd = d; +} + void ldns_resolver_set_igntc(ldns_resolver *r, bool i) { @@ -432,6 +444,7 @@ ldns_resolver_new(void) ldns_resolver_set_fail(r, false); ldns_resolver_set_edns_udp_size(r, 0); ldns_resolver_set_dnssec(r, false); + ldns_resolver_set_dnssec_cd(r, false); ldns_resolver_set_ip6(r, false); /* randomize the nameserver to be queried @@ -710,6 +723,7 @@ ldns_resolver_send(ldns_pkt **answer, ldns_resolver *r, ldns_rdf *name, if (ldns_resolver_dnssec(r)) { ldns_resolver_set_edns_udp_size(r, 4096); ldns_pkt_set_edns_do(query_pkt, true); + ldns_pkt_set_cd(query_pkt, ldns_resolver_dnssec_cd(r)); } /* transfer the udp_edns_size from the resolver to the packet */