mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
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:
parent
0f78bea4a3
commit
0c88f98a3b
1 changed files with 28 additions and 26 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue