Lines Matching defs:edns

70 #include "util/edns.h"
472 struct edns_data* edns)
484 uint16_t udpsize = edns->udp_size;
511 edns->edns_version = EDNS_ADVERTISED_VERSION;
512 edns->udp_size = EDNS_ADVERTISED_SIZE;
513 edns->ext_rcode = 0;
514 edns->bits &= EDNS_DO;
516 msg->rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
520 &msg->qinfo, id, flags, edns);
542 edns_bak = *edns;
543 edns->edns_version = EDNS_ADVERTISED_VERSION;
544 edns->udp_size = EDNS_ADVERTISED_SIZE;
545 edns->ext_rcode = 0;
546 edns->bits &= EDNS_DO;
548 (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad,
552 if(!apply_edns_options(edns, &edns_bak, worker->env.cfg,
556 udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) {
558 LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
560 edns->opt_list = NULL;
562 &msg->qinfo, id, flags, edns);
636 struct comm_reply* repinfo, struct edns_data* edns)
640 uint16_t udpsize = edns->udp_size;
685 edns->edns_version = EDNS_ADVERTISED_VERSION;
686 edns->udp_size = EDNS_ADVERTISED_SIZE;
687 edns->ext_rcode = 0;
688 edns->bits &= EDNS_DO;
690 LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
694 qinfo, id, flags, edns);
719 edns_bak = *edns;
720 edns->edns_version = EDNS_ADVERTISED_VERSION;
721 edns->udp_size = EDNS_ADVERTISED_SIZE;
722 edns->ext_rcode = 0;
723 edns->bits &= EDNS_DO;
725 (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad,
756 } else if(!apply_edns_options(edns, &edns_bak, worker->env.cfg,
760 udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) {
762 LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
764 edns->opt_list = NULL;
766 qinfo, id, flags, edns);
812 * @param edns: edns reply information.
817 chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns,
847 edns->edns_version = EDNS_ADVERTISED_VERSION;
848 edns->udp_size = EDNS_ADVERTISED_SIZE;
849 edns->bits &= EDNS_DO;
851 LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad,
853 edns->opt_list = NULL;
855 sldns_buffer_limit(pkt)+calc_edns_field_size(edns))
856 attach_edns_record(pkt, edns);
861 chaos_replyonestr(sldns_buffer* pkt, const char* str, struct edns_data* edns,
864 chaos_replystr(pkt, (char**)&str, 1, edns, worker, repinfo);
870 * @param edns: edns reply information.
875 chaos_trustanchor(sldns_buffer* pkt, struct edns_data* edns, struct worker* w,
887 chaos_replystr(pkt, NULL, 0, edns, w, repinfo);
921 chaos_replystr(pkt, str_array, num, edns, w, repinfo);
929 * @param edns: edns info from query.
936 struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* pkt)
952 chaos_replyonestr(pkt, buf, edns, w, repinfo);
955 chaos_replyonestr(pkt, "no hostname", edns, w, repinfo);
958 else chaos_replyonestr(pkt, cfg->identity, edns, w, repinfo);
969 chaos_replyonestr(pkt, PACKAGE_STRING, edns, w, repinfo);
970 else chaos_replyonestr(pkt, cfg->version, edns, w, repinfo);
978 chaos_trustanchor(pkt, edns, w, repinfo);
991 * @param edns: edns info from query.
997 struct edns_data* edns, sldns_buffer* pkt, struct comm_reply* repinfo)
1034 edns->edns_version = EDNS_ADVERTISED_VERSION;
1035 edns->udp_size = EDNS_ADVERTISED_SIZE;
1036 edns->ext_rcode = 0;
1037 edns->bits &= EDNS_DO;
1038 edns->opt_list = NULL;
1041 sldns_buffer_read_u16_at(pkt, 2), edns);
1102 struct edns_data edns;
1270 if((ret=parse_edns_from_pkt(c->buffer, &edns, worker->scratchpad)) != 0) {
1272 verbose(VERB_ALGO, "worker parse edns: formerror.");
1284 if(edns.edns_present) {
1286 if(edns.edns_version != 0) {
1287 edns.ext_rcode = (uint8_t)(EDNS_RCODE_BADVERS>>4);
1288 edns.edns_version = EDNS_ADVERTISED_VERSION;
1289 edns.udp_size = EDNS_ADVERTISED_SIZE;
1290 edns.bits &= EDNS_DO;
1291 edns.opt_list = NULL;
1292 edns.padding_block_size = 0;
1293 verbose(VERB_ALGO, "query with bad edns version.");
1299 sldns_buffer_limit(c->buffer)+calc_edns_field_size(&edns))
1300 attach_edns_record(c->buffer, &edns);
1304 if(edns.udp_size < NORMAL_UDP_SIZE &&
1307 (int)edns.udp_size);
1309 edns.udp_size = NORMAL_UDP_SIZE;
1312 edns_opt = edns_opt_list_find(edns.opt_list, LDNS_EDNS_KEEPALIVE);
1314 edns.ext_rcode = 0;
1315 edns.edns_version = EDNS_ADVERTISED_VERSION;
1316 edns.udp_size = EDNS_ADVERTISED_SIZE;
1317 edns.bits &= EDNS_DO;
1318 edns.opt_list = NULL;
1319 verbose(VERB_ALGO, "query with bad edns keepalive.");
1325 sldns_buffer_limit(c->buffer)+calc_edns_field_size(&edns))
1326 attach_edns_record(c->buffer, &edns);
1332 if(edns.udp_size > worker->daemon->cfg->max_udp_size &&
1336 " (%d to max-udp-size)", (int)edns.udp_size);
1338 edns.udp_size = worker->daemon->cfg->max_udp_size;
1340 if(edns.udp_size < LDNS_HEADER_SIZE) {
1341 verbose(VERB_ALGO, "worker request: edns is too small.");
1356 qinfo.qclass, &edns, repinfo);
1358 edns.udp_size = 65535; /* max size for TCP replies */
1360 &edns, repinfo, c->buffer)) {
1366 answer_notify(worker, &qinfo, &edns, c->buffer, repinfo);
1371 &edns, c->buffer, worker->scratchpad, repinfo, acladdr->taglist,
1385 &worker->env, &qinfo, &edns, c->buffer, worker->scratchpad,
1396 &qinfo, &edns, repinfo, c->buffer, worker->scratchpad)) {
1482 if(!edns_bypass_cache_stage(edns.opt_list, &worker->env)) {
1493 &edns)) {
1553 &edns)) {
1575 &edns, repinfo, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer));