Lines Matching refs:qstate
90 /** If the dns64 module started with no_cache bool set in the qstate,
454 * \param qstate Query state structure.
460 handle_ipv6_ptr(struct module_qstate* qstate, int id)
462 struct dns64_env* dns64_env = (struct dns64_env*)qstate->env->modinfo[id];
470 if (!ptr_to_ipv6((char*)qstate->qinfo.qname, sin6.sin6_addr.s6_addr,
490 qinfo = qstate->qinfo;
491 if (!(qinfo.qname = regional_alloc(qstate->region, MAX_PTR_QNAME_IPV4)))
498 fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub));
499 if(!(*qstate->env->attach_sub)(qstate, &qinfo, qstate->query_flags, 0, 0,
512 generate_type_A_query(struct module_qstate* qstate, int id)
520 qinfo = qstate->qinfo;
524 fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub));
525 if(!(*qstate->env->attach_sub)(qstate, &qinfo, qstate->query_flags, 0,
544 * @param qstate: query state.
549 dns64_always_synth_for_qname(struct module_qstate* qstate, int id)
551 struct dns64_env* dns64_env = (struct dns64_env*)qstate->env->modinfo[id];
552 int labs = dname_count_labels(qstate->qinfo.qname);
554 qstate->qinfo.qname, qstate->qinfo.qname_len, labs,
555 qstate->qinfo.qclass);
566 * \param qstate A structure representing the state of the query that has just
573 handle_event_pass(struct module_qstate* qstate, int id)
575 struct dns64_qstate* iq = (struct dns64_qstate*)qstate->minfo[id];
576 int synth_all_cfg = qstate->env->cfg->dns64_synthall;
580 && qstate->qinfo.qtype == LDNS_RR_TYPE_PTR
581 && qstate->qinfo.qname_len == 74
582 && !strcmp((char*)&qstate->qinfo.qname[64], "\03ip6\04arpa")) {
584 return handle_ipv6_ptr(qstate, id);
588 qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA &&
590 (synth_qname=(dns64_always_synth_for_qname(qstate, id)
591 && !(qstate->query_flags & BIT_CD))))) {
594 return generate_type_A_query(qstate, id);
610 * \param qstate A structure representing the state of the query that has just
617 handle_event_moddone(struct module_qstate* qstate, int id)
619 struct dns64_qstate* iq = (struct dns64_qstate*)qstate->minfo[id];
626 * - An AAAA query for which an error was returned.(qstate.return_rcode)
637 qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA &&
639 !(qstate->query_flags & BIT_CD);
641 qstate->return_msg &&
642 qstate->return_msg->rep &&
643 reply_find_answer_rrset(&qstate->qinfo, qstate->return_msg->rep);
648 (synth_qname=dns64_always_synth_for_qname(qstate, id)))) {
651 return generate_type_A_query(qstate, id);
656 qstate->return_msg &&
657 qstate->return_msg->rep &&
659 qstate->env, &qstate->qinfo, qstate->return_msg->rep,
660 0, qstate->prefetch_leeway, 0, NULL,
661 qstate->query_flags, qstate->qstarttime,
662 qstate->is_valrec))
674 * \param qstate Structure containing the state of the query.
682 dns64_operate(struct module_qstate* qstate, enum module_ev event, int id,
688 id, strextstate(qstate->ext_state[id]),
690 log_query_info(VERB_QUERY, "dns64 operate: query", &qstate->qinfo);
696 qstate->region, sizeof(*iq)))) {
698 qstate->ext_state[id] = module_error;
701 qstate->minfo[id] = iq;
703 iq->started_no_cache_store = qstate->no_cache_store;
704 qstate->no_cache_store = 1;
708 qstate->ext_state[id] = handle_event_pass(qstate, id);
711 qstate->ext_state[id] = handle_event_moddone(qstate, id);
714 qstate->ext_state[id] = module_finished;
717 if(qstate->ext_state[id] == module_finished) {
718 iq = (struct dns64_qstate*)qstate->minfo[id];
720 qstate->no_cache_store = iq->started_no_cache_store;
817 * \param qstate A query.
820 dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate)
831 log_assert(qstate->return_msg);
832 log_assert(qstate->return_msg->rep);
844 rep = qstate->return_msg->rep;
914 * \param qstate IPv4 PTR sub-query.
918 dns64_adjust_ptr(struct module_qstate* qstate, struct module_qstate* super)
929 if (!(super->return_msg->rep = reply_info_copy(qstate->return_msg->rep,
937 answer = reply_find_answer_rrset(&qstate->qinfo, super->return_msg->rep);
949 * \param qstate State of the sub-query.
954 dns64_inform_super(struct module_qstate* qstate, int id,
959 &qstate->qinfo);
983 if(qstate->return_rcode != LDNS_RCODE_NOERROR
984 || !qstate->return_msg
985 || !qstate->return_msg->rep) {
990 if(qstate->qinfo.qtype == LDNS_RR_TYPE_A &&
991 !reply_find_answer_rrset(&qstate->qinfo,
992 qstate->return_msg->rep)) {
999 super->return_rcode = qstate->return_rcode;
1002 if (qstate->qinfo.qtype == LDNS_RR_TYPE_A) {
1003 dns64_adjust_a(id, super, qstate);
1005 log_assert(qstate->qinfo.qtype == LDNS_RR_TYPE_PTR);
1006 dns64_adjust_ptr(qstate, super);
1013 qstate->qstarttime, qstate->is_valrec))
1021 * \param qstate Query state.
1025 dns64_clear(struct module_qstate* qstate, int id)
1027 qstate->minfo[id] = NULL;