]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
actually put cd but from packet on the wire
authorJelte Jansen <jeltejan@NLnetLabs.nl>
Wed, 15 Jun 2005 16:11:40 +0000 (16:11 +0000)
committerJelte Jansen <jeltejan@NLnetLabs.nl>
Wed, 15 Jun 2005 16:11:40 +0000 (16:11 +0000)
added cd flag to resolver structure, so that all queries made can have their cd bit set

host2wire.c
ldns/resolver.h
net.c
resolver.c

index 7f30eebcf42bd5b5cb8cf9b6de05304486544417..d8a9a5b13136456766201385d4c5bcdd5a89b37a 100644 (file)
@@ -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);
                
index dad69c0f9b283ea1142c6095b605b995ff5accbe..60b251b8447a8caeaf7bb618d55041538b3a903d 100644 (file)
@@ -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 812a7b695cb0499995384776ebf569af035eb687..7bf94c0ef9993224076abbe8744aacf4d4c46603 100644 (file)
--- 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!
index a95e6c34c5206f07e95820cfacdb81ebdb67fdce..229de316099291ae1dfd2ce39d8b3e2964856eab 100644 (file)
@@ -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 */