]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Modules have their own outgoing ends options list
authorTom Carpay <tom@nlnetlabs.nl>
Wed, 27 Oct 2021 13:48:49 +0000 (13:48 +0000)
committerTom Carpay <tom@nlnetlabs.nl>
Wed, 27 Oct 2021 13:48:49 +0000 (13:48 +0000)
But nothing happens with it yet

daemon/worker.c
libunbound/libworker.c
services/authzone.c
util/data/msgparse.c
util/data/msgparse.h
validator/autotrust.c

index b438700af1f698a4644fe3ca6c390f48a004de62..dbb2da1fcbfb3e47e9ba29d9d89ab4e84152fd25 100644 (file)
@@ -1012,6 +1012,7 @@ answer_notify(struct worker* w, struct query_info* qinfo,
        edns->ext_rcode = 0;
        edns->bits &= EDNS_DO;
        edns->opt_list = NULL;
+       edns->opt_list_modules_out = NULL;
        error_encode(pkt, rcode, qinfo,
                *(uint16_t*)(void *)sldns_buffer_begin(pkt),
                sldns_buffer_read_u16_at(pkt, 2), edns);
@@ -1270,6 +1271,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
                        edns.udp_size = EDNS_ADVERTISED_SIZE;
                        edns.bits &= EDNS_DO;
                        edns.opt_list = NULL;
+                       edns.opt_list_modules_out = NULL;
                        edns.padding_block_size = 0;
                        verbose(VERB_ALGO, "query with bad edns version.");
                        log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
@@ -1297,6 +1299,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
                                edns.udp_size = EDNS_ADVERTISED_SIZE;
                                edns.bits &= EDNS_DO;
                                edns.opt_list = NULL;
+                               edns.opt_list_modules_out = NULL;
                                verbose(VERB_ALGO, "query with bad edns keepalive.");
                                log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
                                error_encode(c->buffer, LDNS_RCODE_FORMERR, &qinfo,
index 151f50cf599af7703372fd1493a91cbaffb6accf..c4ed660f3d546be2b802ea0ac1dbc918a52d73a3 100644 (file)
@@ -601,6 +601,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q,
        edns->edns_version = 0;
        edns->bits = EDNS_DO;
        edns->opt_list = NULL;
+       edns->opt_list_modules_out = NULL;
        edns->padding_block_size = 0;
        if(sldns_buffer_capacity(w->back->udp_buff) < 65535)
                edns->udp_size = (uint16_t)sldns_buffer_capacity(
index 44dda2a71a533cef27db64bc65a887e9d4fccab6..38cc7ab213e7b33675ac1eb4dbaa8ddfa97b3261 100644 (file)
@@ -5359,6 +5359,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.opt_list_modules_out = NULL;
        edns.padding_block_size = 0;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
@@ -6548,6 +6549,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.opt_list_modules_out = NULL;
        edns.padding_block_size = 0;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
@@ -8323,6 +8325,7 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.opt_list_modules_out = NULL;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
        else    edns.udp_size = 65535;
index 6ee5559db07b0b06de820ca4474c06996800ee75..fb50c916555c30b8c1d3e095b8b5aa80ab4a6991 100644 (file)
@@ -1020,6 +1020,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns,
        edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]);
        edns->udp_size = ntohs(found->rrset_class);
        edns->opt_list = NULL;
+       edns->opt_list_modules_out = NULL;
        edns->padding_block_size = 0;
 
        /* take the options */
@@ -1094,6 +1095,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns,
        edns->edns_version = sldns_buffer_read_u8(pkt);
        edns->bits = sldns_buffer_read_u16(pkt);
        edns->opt_list = NULL;
+       edns->opt_list_modules_out = NULL;
        edns->padding_block_size = 0;
 
        /* take the options */
index d2fd9c806657b721b7995885ab22ce5be9a6e62b..434a5b0b8f6d63b0b17410058778077474db8fd8 100644 (file)
@@ -227,6 +227,9 @@ struct edns_data {
        uint16_t udp_size;
        /** rdata element list, or NULL if none */
        struct edns_option* opt_list;
+       /** rdata element list of outgoing edns options from modules
+        * or NULL if none */
+       struct edns_option* opt_list_modules_out;
        /** block size to pad */
        uint16_t padding_block_size;
 };
index 9643a3ddb38b5e005b52bb9c10ad32890a943233..080385e937f8362ef15358d7b46baafdcbf86f2e 100644 (file)
@@ -2378,6 +2378,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp)
        edns.edns_version = 0;
        edns.bits = EDNS_DO;
        edns.opt_list = NULL;
+       edns.opt_list_modules_out = NULL;
        edns.padding_block_size = 0;
        if(sldns_buffer_capacity(buf) < 65535)
                edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);