Modules have their own outgoing ends options list

But nothing happens with it yet
This commit is contained in:
Tom Carpay 2021-10-27 13:48:49 +00:00
parent ecb0b44ba8
commit 3e6eeb504d
6 changed files with 13 additions and 0 deletions

View file

@ -1012,6 +1012,7 @@ answer_notify(struct worker* w, struct query_info* qinfo,
edns->ext_rcode = 0; edns->ext_rcode = 0;
edns->bits &= EDNS_DO; edns->bits &= EDNS_DO;
edns->opt_list = NULL; edns->opt_list = NULL;
edns->opt_list_modules_out = NULL;
error_encode(pkt, rcode, qinfo, error_encode(pkt, rcode, qinfo,
*(uint16_t*)(void *)sldns_buffer_begin(pkt), *(uint16_t*)(void *)sldns_buffer_begin(pkt),
sldns_buffer_read_u16_at(pkt, 2), edns); 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.udp_size = EDNS_ADVERTISED_SIZE;
edns.bits &= EDNS_DO; edns.bits &= EDNS_DO;
edns.opt_list = NULL; edns.opt_list = NULL;
edns.opt_list_modules_out = NULL;
edns.padding_block_size = 0; edns.padding_block_size = 0;
verbose(VERB_ALGO, "query with bad edns version."); verbose(VERB_ALGO, "query with bad edns version.");
log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); 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.udp_size = EDNS_ADVERTISED_SIZE;
edns.bits &= EDNS_DO; edns.bits &= EDNS_DO;
edns.opt_list = NULL; edns.opt_list = NULL;
edns.opt_list_modules_out = NULL;
verbose(VERB_ALGO, "query with bad edns keepalive."); verbose(VERB_ALGO, "query with bad edns keepalive.");
log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
error_encode(c->buffer, LDNS_RCODE_FORMERR, &qinfo, error_encode(c->buffer, LDNS_RCODE_FORMERR, &qinfo,

View file

@ -601,6 +601,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q,
edns->edns_version = 0; edns->edns_version = 0;
edns->bits = EDNS_DO; edns->bits = EDNS_DO;
edns->opt_list = NULL; edns->opt_list = NULL;
edns->opt_list_modules_out = NULL;
edns->padding_block_size = 0; edns->padding_block_size = 0;
if(sldns_buffer_capacity(w->back->udp_buff) < 65535) if(sldns_buffer_capacity(w->back->udp_buff) < 65535)
edns->udp_size = (uint16_t)sldns_buffer_capacity( edns->udp_size = (uint16_t)sldns_buffer_capacity(

View file

@ -5359,6 +5359,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env)
edns.edns_version = 0; edns.edns_version = 0;
edns.bits = EDNS_DO; edns.bits = EDNS_DO;
edns.opt_list = NULL; edns.opt_list = NULL;
edns.opt_list_modules_out = NULL;
edns.padding_block_size = 0; edns.padding_block_size = 0;
if(sldns_buffer_capacity(buf) < 65535) if(sldns_buffer_capacity(buf) < 65535)
edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); 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.edns_version = 0;
edns.bits = EDNS_DO; edns.bits = EDNS_DO;
edns.opt_list = NULL; edns.opt_list = NULL;
edns.opt_list_modules_out = NULL;
edns.padding_block_size = 0; edns.padding_block_size = 0;
if(sldns_buffer_capacity(buf) < 65535) if(sldns_buffer_capacity(buf) < 65535)
edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); 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.edns_version = 0;
edns.bits = EDNS_DO; edns.bits = EDNS_DO;
edns.opt_list = NULL; edns.opt_list = NULL;
edns.opt_list_modules_out = NULL;
if(sldns_buffer_capacity(buf) < 65535) if(sldns_buffer_capacity(buf) < 65535)
edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);
else edns.udp_size = 65535; else edns.udp_size = 65535;

View 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->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]);
edns->udp_size = ntohs(found->rrset_class); edns->udp_size = ntohs(found->rrset_class);
edns->opt_list = NULL; edns->opt_list = NULL;
edns->opt_list_modules_out = NULL;
edns->padding_block_size = 0; edns->padding_block_size = 0;
/* take the options */ /* 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->edns_version = sldns_buffer_read_u8(pkt);
edns->bits = sldns_buffer_read_u16(pkt); edns->bits = sldns_buffer_read_u16(pkt);
edns->opt_list = NULL; edns->opt_list = NULL;
edns->opt_list_modules_out = NULL;
edns->padding_block_size = 0; edns->padding_block_size = 0;
/* take the options */ /* take the options */

View file

@ -227,6 +227,9 @@ struct edns_data {
uint16_t udp_size; uint16_t udp_size;
/** rdata element list, or NULL if none */ /** rdata element list, or NULL if none */
struct edns_option* opt_list; 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 */ /** block size to pad */
uint16_t padding_block_size; uint16_t padding_block_size;
}; };

View file

@ -2378,6 +2378,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp)
edns.edns_version = 0; edns.edns_version = 0;
edns.bits = EDNS_DO; edns.bits = EDNS_DO;
edns.opt_list = NULL; edns.opt_list = NULL;
edns.opt_list_modules_out = NULL;
edns.padding_block_size = 0; edns.padding_block_size = 0;
if(sldns_buffer_capacity(buf) < 65535) if(sldns_buffer_capacity(buf) < 65535)
edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); edns.udp_size = (uint16_t)sldns_buffer_capacity(buf);