dns64: Refactor handle_event checks for readability

No functional change intended.

Signed-off-by: Daniel Gröber <dxld@darkboxed.org>
This commit is contained in:
Daniel Gröber via Unbound-users 2023-10-09 14:43:34 +02:00 committed by George Thessalonikefs
parent 0f78bea4a3
commit 0c88f98a3b

View file

@ -580,16 +580,16 @@ handle_event_pass(struct module_qstate* qstate, int id)
/* Handle PTR queries for IPv6 addresses. */ /* Handle PTR queries for IPv6 addresses. */
return handle_ipv6_ptr(qstate, id); return handle_ipv6_ptr(qstate, id);
if (qstate->env->cfg->dns64_synthall && int synth_all_cfg = qstate->env->cfg->dns64_synthall;
iq && iq->state == DNS64_NEW_QUERY int synth_qname =
&& qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) dns64_always_synth_for_qname(qstate, id) &&
return generate_type_A_query(qstate, id); !(qstate->query_flags & BIT_CD);
if(dns64_always_synth_for_qname(qstate, id) && if (iq && iq->state == DNS64_NEW_QUERY &&
iq && iq->state == DNS64_NEW_QUERY qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA &&
&& !(qstate->query_flags & BIT_CD) (synth_all_cfg || synth_qname)) {
&& qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) { if (synth_qname)
verbose(VERB_ALGO, "dns64: ignore-aaaa and synthesize anyway"); verbose(VERB_ALGO, "dns64: ignore-aaaa and synthesize anyway");
return generate_type_A_query(qstate, id); return generate_type_A_query(qstate, id);
} }
@ -627,24 +627,26 @@ handle_event_moddone(struct module_qstate* qstate, int id)
* synthesize in (sec 5.1.2 of RFC6147). * synthesize in (sec 5.1.2 of RFC6147).
* - A successful AAAA query with an answer. * - A successful AAAA query with an answer.
*/ */
if((!iq || iq->state != DNS64_INTERNAL_QUERY)
&& qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA
&& !(qstate->query_flags & BIT_CD)
&& !(qstate->return_msg &&
qstate->return_msg->rep &&
reply_find_answer_rrset(&qstate->qinfo,
qstate->return_msg->rep)))
/* not internal, type AAAA, not CD, and no answer RRset,
* So, this is a AAAA noerror/nodata answer */
return generate_type_A_query(qstate, id);
if((!iq || iq->state != DNS64_INTERNAL_QUERY) /* When an AAAA query completes check if we want to perform DNS64
&& qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA * synthesis. We skip queries with DNSSEC enabled (!CD) and
&& !(qstate->query_flags & BIT_CD) * ones generated by us to retrive the A/PTR record to use for
&& dns64_always_synth_for_qname(qstate, id)) { * synth. */
/* if it is not internal, AAAA, not CD and listed domain, int want_synth =
* generate from A record and ignore AAAA */ qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA &&
verbose(VERB_ALGO, "dns64: ignore-aaaa and synthesize anyway"); (!iq || iq->state != DNS64_INTERNAL_QUERY) &&
!(qstate->query_flags & BIT_CD);
int has_data = /*< whether query returned non-empty rrset */
qstate->return_msg &&
qstate->return_msg->rep &&
reply_find_answer_rrset(&qstate->qinfo, qstate->return_msg->rep);
int synth_qname;
if(want_synth &&
(!has_data || (synth_qname=dns64_always_synth_for_qname(qstate, id))))
{
if (synth_qname)
verbose(VERB_ALGO, "dns64: ignore-aaaa and synthesize anyway");
return generate_type_A_query(qstate, id); return generate_type_A_query(qstate, id);
} }