{
struct kr_rplan *rplan = &request->rplan;
knot_pkt_t *answer = request->answer;
+ const uint8_t *q_wire = request->qsource.packet->wire;
if (answer->rrset_count != 0) {
/* Non-standard: we assume the answer had been constructed.
/* TODO: clean this up in !660 or followup, and it isn't foolproof anyway. */
if (last->flags.DNSSEC_BOGUS
|| (rplan->pending.len > 0 && array_tail(rplan->pending)->flags.DNSSEC_BOGUS)) {
- if (!knot_wire_get_cd(request->qsource.packet->wire)) {
+ if (!knot_wire_get_cd(q_wire)) {
answer_fail(request);
return;
}
VERBOSE_MSG(last, "AD: request%s classified as SECURE\n", secure ? "" : " NOT");
request->rank = secure ? KR_RANK_SECURE : KR_RANK_INITIAL;
- /* Clear AD if not secure. ATM answer has AD=1 if requested secured answer. */
- if (!secure) {
- knot_wire_clear_ad(answer->wire);
+ /* Set AD if secure and AD bit "was requested". */
+ if (secure && !knot_wire_get_cd(q_wire)
+ && (knot_pkt_has_dnssec(answer) || knot_wire_get_ad(q_wire))) {
+ knot_wire_set_ad(answer->wire);
}
}
knot_wire_set_rcode(wire, KNOT_RCODE_NOERROR);
if (knot_wire_get_cd(qs_pkt->wire)) {
knot_wire_set_cd(wire);
- } else if (request->current_query && request->current_query->flags.DNSSEC_WANT) { // FIXME: ugly
- knot_wire_set_ad(wire);
}
// Prepare EDNS if required.
STEP 2 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 4 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 6 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 8 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 10 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 12 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 14 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 16 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 18 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 20 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 22 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 24 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 26 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 28 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 30 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 32 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 34 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 36 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 38 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 40 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 42 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 44 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 46 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 48 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 50 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 52 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 54 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 56 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 58 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 60 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 62 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 64 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 66 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 68 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 70 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 72 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 74 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 76 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 78 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 80 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 82 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 84 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
STEP 86 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode rcode flags question answer
-REPLY QR RD RA DO NOERROR
+REPLY QR RD RA AD DO NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER