Lines Matching defs:qstate

102 ipsecmod_new(struct module_qstate* qstate, int id)
105 qstate->region, sizeof(struct ipsecmod_qstate));
106 qstate->minfo[id] = iq;
111 iq->enabled = qstate->env->cfg->ipsecmod_enabled;
113 (struct ipsecmod_env*)qstate->env->modinfo[id], qstate->qinfo.qname,
114 qstate->qinfo.qname_len, qstate->qinfo.qclass);
120 * @param qstate: query state
124 ipsecmod_error(struct module_qstate* qstate, int id)
126 qstate->ext_state[id] = module_error;
127 qstate->return_rcode = LDNS_RCODE_SERVFAIL;
133 * @param qstate: query state that is the parent.
143 generate_request(struct module_qstate* qstate, int id, uint8_t* name,
158 fptr_ok(fptr_whitelist_modenv_detect_cycle(qstate->env->detect_cycle));
159 if((*qstate->env->detect_cycle)(qstate, &ask,
165 fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub));
166 if(!(*qstate->env->attach_sub)(qstate, &ask,
171 qstate->ext_state[id] = module_wait_subquery;
243 * @param qstate: query state.
244 * @param iq: ipsecmod qstate.
249 call_hook(struct module_qstate* qstate, struct ipsecmod_qstate* iq,
271 w += sldns_str_print(&s, &slen, "%s", qstate->env->cfg->ipsecmod_hook);
275 tempstring = sldns_wire2str_dname(qstate->qinfo.qname,
276 qstate->qinfo.qname_len);
295 rrset_key = reply_find_answer_rrset(&qstate->return_msg->qinfo,
296 qstate->return_msg->rep);
317 rrset_data->rr_len[i] - 2, s, slen, qstate->qinfo.qtype);
379 * @param qstate: query state (from the mesh), passed between modules.
380 * contains qstate->env module environment with global caches and so on.
386 ipsecmod_handle_query(struct module_qstate* qstate,
394 qstate->ext_state[id] = module_wait_module;
400 if(qstate->qinfo.qtype == LDNS_RR_TYPE_A ||
401 qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) {
403 sldns_wire2str_type_buf(qstate->qinfo.qtype, type,
407 qstate->no_cache_store = 1;
410 qstate->ext_state[id] = module_wait_module;
419 if(!qstate->env->cfg->ipsecmod_ignore_bogus &&
422 errinf(qstate, "ipsecmod: bogus IPSECKEY");
423 ipsecmod_error(qstate, id);
427 if(!call_hook(qstate, iq, ie) &&
428 qstate->env->cfg->ipsecmod_strict) {
430 errinf(qstate, "ipsecmod: ipsecmod-hook failed");
431 ipsecmod_error(qstate, id);
436 rrset_key = reply_find_answer_rrset(&qstate->return_msg->qinfo,
437 qstate->return_msg->rep);
439 if(rrset_data->ttl > (time_t)qstate->env->cfg->ipsecmod_max_ttl) {
441 rrset_data->ttl = qstate->env->cfg->ipsecmod_max_ttl;
443 rrset_data->rr_ttl[i] = qstate->env->cfg->ipsecmod_max_ttl;
445 if(qstate->return_msg->rep->ttl > (time_t)qstate->env->cfg->ipsecmod_max_ttl) {
446 qstate->return_msg->rep->ttl =
447 qstate->env->cfg->ipsecmod_max_ttl;
448 qstate->return_msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(
449 qstate->return_msg->rep->ttl);
450 qstate->return_msg->rep->serve_expired_ttl = qstate->return_msg->rep->ttl +
451 qstate->env->cfg->serve_expired_ttl;
457 if(!dns_cache_store(qstate->env, &qstate->qinfo,
458 qstate->return_msg->rep, 0, qstate->prefetch_leeway,
459 0, qstate->region, qstate->query_flags, qstate->qstarttime)) {
462 qstate->ext_state[id] = module_finished;
467 * @param qstate: query state (from the mesh), passed between modules.
468 * contains qstate->env module environment with global caches and so on.
474 ipsecmod_handle_response(struct module_qstate* qstate,
480 qstate->ext_state[id] = module_finished;
484 if((qstate->qinfo.qtype == LDNS_RR_TYPE_A ||
485 qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) &&
487 qstate->return_msg &&
488 reply_find_answer_rrset(&qstate->return_msg->qinfo,
489 qstate->return_msg->rep) &&
491 qstate->return_rcode == LDNS_RCODE_NOERROR) {
493 sldns_wire2str_type_buf(qstate->qinfo.qtype, type,
498 if(!generate_request(qstate, id, qstate->qinfo.qname,
499 qstate->qinfo.qname_len, LDNS_RR_TYPE_IPSECKEY,
500 qstate->qinfo.qclass, 0)) {
502 errinf(qstate, "ipsecmod: could not generate subquery.");
503 ipsecmod_error(qstate, id);
508 qstate->ext_state[id] = module_finished;
512 ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, int id,
515 struct ipsecmod_env* ie = (struct ipsecmod_env*)qstate->env->modinfo[id];
516 struct ipsecmod_qstate* iq = (struct ipsecmod_qstate*)qstate->minfo[id];
518 id, strextstate(qstate->ext_state[id]), strmodulevent(event));
520 &qstate->qinfo);
525 if(!ipsecmod_new(qstate, id)) {
526 errinf(qstate, "ipsecmod: could not ipsecmod_new");
527 ipsecmod_error(qstate, id);
530 iq = (struct ipsecmod_qstate*)qstate->minfo[id];
533 ipsecmod_handle_query(qstate, iq, ie, id);
537 ipsecmod_handle_response(qstate, iq, ie, id);
543 cachedb_process_response(qstate, iq, ie, id, outbound, event);
549 errinf(qstate, "ipsecmod: got called with event error");
550 ipsecmod_error(qstate, id);
555 qstate->ext_state[id] = module_finished;
560 errinf(qstate, "ipsecmod: operate got bad event");
561 ipsecmod_error(qstate, id);
566 ipsecmod_inform_super(struct module_qstate* qstate, int id,
571 &qstate->qinfo);
579 if(qstate->return_msg) {
581 &qstate->return_msg->qinfo, qstate->return_msg->rep);
597 ipsecmod_clear(struct module_qstate* qstate, int id)
599 if(!qstate)
601 qstate->minfo[id] = NULL;