• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/unbound/ipsecmod/

Lines Matching refs: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,
154 fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub));
155 if(!(*qstate->env->attach_sub)(qstate, &ask,
160 qstate->ext_state[id] = module_wait_subquery;
232 * @param qstate: query state.
233 * @param iq: ipsecmod qstate.
238 call_hook(struct module_qstate* qstate, struct ipsecmod_qstate* iq,
260 w += sldns_str_print(&s, &slen, "%s", qstate->env->cfg->ipsecmod_hook);
264 tempstring = sldns_wire2str_dname(qstate->qinfo.qname,
265 qstate->qinfo.qname_len);
284 rrset_key = reply_find_answer_rrset(&qstate->return_msg->qinfo,
285 qstate->return_msg->rep);
306 rrset_data->rr_len[i] - 2, s, slen, qstate->qinfo.qtype);
368 * @param qstate: query state (from the mesh), passed between modules.
369 * contains qstate->env module environment with global caches and so on.
375 ipsecmod_handle_query(struct module_qstate* qstate,
383 qstate->ext_state[id] = module_wait_module;
389 if(qstate->qinfo.qtype == LDNS_RR_TYPE_A ||
390 qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) {
392 sldns_wire2str_type_buf(qstate->qinfo.qtype, type,
396 qstate->no_cache_store = 1;
399 qstate->ext_state[id] = module_wait_module;
408 if(!qstate->env->cfg->ipsecmod_ignore_bogus &&
411 ipsecmod_error(qstate, id);
415 if(!call_hook(qstate, iq, ie) &&
416 qstate->env->cfg->ipsecmod_strict) {
418 ipsecmod_error(qstate, id);
423 rrset_key = reply_find_answer_rrset(&qstate->return_msg->qinfo,
424 qstate->return_msg->rep);
426 if(rrset_data->ttl > (time_t)qstate->env->cfg->ipsecmod_max_ttl) {
428 rrset_data->ttl = qstate->env->cfg->ipsecmod_max_ttl;
430 rrset_data->rr_ttl[i] = qstate->env->cfg->ipsecmod_max_ttl;
432 if(qstate->return_msg->rep->ttl > (time_t)qstate->env->cfg->ipsecmod_max_ttl) {
433 qstate->return_msg->rep->ttl =
434 qstate->env->cfg->ipsecmod_max_ttl;
435 qstate->return_msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(
436 qstate->return_msg->rep->ttl);
437 qstate->return_msg->rep->serve_expired_ttl = qstate->return_msg->rep->ttl +
438 qstate->env->cfg->serve_expired_ttl;
444 if(!dns_cache_store(qstate->env, &qstate->qinfo,
445 qstate->return_msg->rep, 0, qstate->prefetch_leeway,
446 0, qstate->region, qstate->query_flags)) {
449 qstate->ext_state[id] = module_finished;
454 * @param qstate: query state (from the mesh), passed between modules.
455 * contains qstate->env module environment with global caches and so on.
461 ipsecmod_handle_response(struct module_qstate* qstate,
467 qstate->ext_state[id] = module_finished;
471 if((qstate->qinfo.qtype == LDNS_RR_TYPE_A ||
472 qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) &&
474 qstate->return_msg &&
475 reply_find_answer_rrset(&qstate->return_msg->qinfo,
476 qstate->return_msg->rep) &&
478 qstate->return_rcode == LDNS_RCODE_NOERROR) {
480 sldns_wire2str_type_buf(qstate->qinfo.qtype, type,
485 if(!generate_request(qstate, id, qstate->qinfo.qname,
486 qstate->qinfo.qname_len, LDNS_RR_TYPE_IPSECKEY,
487 qstate->qinfo.qclass, 0)) {
489 ipsecmod_error(qstate, id);
494 qstate->ext_state[id] = module_finished;
498 ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, int id,
501 struct ipsecmod_env* ie = (struct ipsecmod_env*)qstate->env->modinfo[id];
502 struct ipsecmod_qstate* iq = (struct ipsecmod_qstate*)qstate->minfo[id];
504 id, strextstate(qstate->ext_state[id]), strmodulevent(event));
506 &qstate->qinfo);
511 if(!ipsecmod_new(qstate, id)) {
512 ipsecmod_error(qstate, id);
515 iq = (struct ipsecmod_qstate*)qstate->minfo[id];
518 ipsecmod_handle_query(qstate, iq, ie, id);
522 ipsecmod_handle_response(qstate, iq, ie, id);
528 cachedb_process_response(qstate, iq, ie, id, outbound, event);
534 ipsecmod_error(qstate, id);
539 qstate->ext_state[id] = module_finished;
544 ipsecmod_error(qstate, id);
549 ipsecmod_inform_super(struct module_qstate* qstate, int id,
554 &qstate->qinfo);
562 if(qstate->return_msg) {
564 &qstate->return_msg->qinfo, qstate->return_msg->rep);
580 ipsecmod_clear(struct module_qstate* qstate, int id)
582 if(!qstate)
584 qstate->minfo[id] = NULL;