Lines Matching refs:sq
93 struct subnet_qstate *sq = (struct subnet_qstate*)regional_alloc( in subnet_new_qstate() local
95 if(!sq) in subnet_new_qstate()
97 qstate->minfo[id] = sq; in subnet_new_qstate()
98 memset(sq, 0, sizeof(*sq)); in subnet_new_qstate()
99 sq->started_no_cache_store = qstate->no_cache_store; in subnet_new_qstate()
100 sq->started_no_cache_lookup = qstate->no_cache_lookup; in subnet_new_qstate()
149 struct subnet_qstate *sq; in ecs_whitelist_check() local
152 if(!(sq=(struct subnet_qstate*)qstate->minfo[id])) in ecs_whitelist_check()
162 sq->subnet_sent_no_subnet = 0; in ecs_whitelist_check()
163 if(sq->ecs_server_out.subnet_validdata && ((sq->subnet_downstream && in ecs_whitelist_check()
176 if(sq->ecs_server_out.subnet_source_mask == 0) { in ecs_whitelist_check()
177 sq->subnet_sent_no_subnet = 1; in ecs_whitelist_check()
178 sq->subnet_sent = 0; in ecs_whitelist_check()
181 subnet_ecs_opt_list_append(&sq->ecs_server_out, in ecs_whitelist_check()
184 sq->subnet_sent = 1; in ecs_whitelist_check()
194 sq->subnet_sent = 0; in ecs_whitelist_check()
363 struct subnet_qstate *sq = (struct subnet_qstate*)qstate->minfo[id]; in update_cache() local
365 struct ecs_data *edns = &sq->ecs_client_in; in update_cache()
435 edns->subnet_source_mask, sq->max_scope, rep, in update_cache()
451 lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate *sq, int prefetch) in lookup_and_reply() argument
458 struct ecs_data *ecs = &sq->ecs_client_in; in lookup_and_reply()
463 memset(&sq->ecs_client_out, 0, sizeof(sq->ecs_client_out)); in lookup_and_reply()
465 if (sq) { in lookup_and_reply()
466 sq->qinfo_hash = h; /* Might be useful on cache miss */ in lookup_and_reply()
467 sq->qinfo_hash_calculated = 1; in lookup_and_reply()
495 if (sq->subnet_downstream) { /* relay to interested client */ in lookup_and_reply()
496 sq->ecs_client_out.subnet_scope_mask = scope; in lookup_and_reply()
497 sq->ecs_client_out.subnet_addr_fam = ecs->subnet_addr_fam; in lookup_and_reply()
498 sq->ecs_client_out.subnet_source_mask = ecs->subnet_source_mask; in lookup_and_reply()
499 memcpy(&sq->ecs_client_out.subnet_addr, &ecs->subnet_addr, in lookup_and_reply()
501 sq->ecs_client_out.subnet_validdata = 1; in lookup_and_reply()
526 eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) in eval_response() argument
530 struct ecs_data *c_in = &sq->ecs_client_in; /* rcvd from client */ in eval_response()
531 struct ecs_data *c_out = &sq->ecs_client_out;/* will send to client */ in eval_response()
532 struct ecs_data *s_in = &sq->ecs_server_in; /* rcvd from auth */ in eval_response()
533 struct ecs_data *s_out = &sq->ecs_server_out;/* sent to auth */ in eval_response()
545 if (!sq->subnet_sent && !sq->subnet_sent_no_subnet) { in eval_response()
548 if (sq->subnet_downstream) /* Copy back to client */ in eval_response()
554 if (!s_in->subnet_validdata && !sq->subnet_sent_no_subnet) { in eval_response()
560 if(!sq->started_no_cache_store) { in eval_response()
565 if (sq->subnet_downstream) in eval_response()
573 if(sq->subnet_sent_no_subnet && !s_in->subnet_validdata) { in eval_response()
597 sq->subnet_sent = 0; in eval_response()
598 sq->subnet_sent_no_subnet = 0; in eval_response()
603 if(!sq->started_no_cache_store) { in eval_response()
623 if (sq->subnet_downstream) { in eval_response()
629 c_out->subnet_scope_mask = sq->max_scope; in eval_response()
722 struct subnet_qstate *sq; in ecs_query_response() local
724 if(!response || !(sq=(struct subnet_qstate*)qstate->minfo[id])) in ecs_query_response()
727 if(sq->subnet_sent && in ecs_query_response()
732 sq->subnet_sent = 0; in ecs_query_response()
733 sq->subnet_sent_no_subnet = 0; in ecs_query_response()
734 memset(&sq->ecs_server_out, 0, sizeof(sq->ecs_server_out)); in ecs_query_response()
735 } else if (!sq->track_max_scope && in ecs_query_response()
746 sq->track_max_scope = 1; in ecs_query_response()
774 struct subnet_qstate *sq; in ecs_edns_back_parsed() local
777 if(!(sq=(struct subnet_qstate*)qstate->minfo[id])) in ecs_edns_back_parsed()
782 parse_subnet_option(ecs_opt, &sq->ecs_server_in) && in ecs_edns_back_parsed()
783 sq->subnet_sent && sq->ecs_server_in.subnet_validdata) { in ecs_edns_back_parsed()
791 if(!sq->track_max_scope || (sq->track_max_scope && in ecs_edns_back_parsed()
792 sq->ecs_server_in.subnet_scope_mask > in ecs_edns_back_parsed()
793 sq->max_scope)) in ecs_edns_back_parsed()
794 sq->max_scope = sq->ecs_server_in.subnet_scope_mask; in ecs_edns_back_parsed()
795 } else if(sq->subnet_sent_no_subnet) { in ecs_edns_back_parsed()
808 struct subnet_qstate *sq = (struct subnet_qstate*)qstate->minfo[id]; in subnetmod_operate() local
816 sq == NULL) { in subnetmod_operate()
824 sq = (struct subnet_qstate*)qstate->minfo[id]; in subnetmod_operate()
829 if(!parse_subnet_option(ecs_opt, &sq->ecs_client_in)) { in subnetmod_operate()
837 sq->subnet_downstream = 1; in subnetmod_operate()
842 &sq->ecs_client_in, qstate->env->cfg); in subnetmod_operate()
847 &sq->ecs_client_in, qstate->env->cfg); in subnetmod_operate()
850 if(sq->ecs_client_in.subnet_validdata == 0) { in subnetmod_operate()
853 sq->ecs_server_out.subnet_validdata = 0; in subnetmod_operate()
860 if(sq->ecs_client_in.subnet_source_mask != 0 && ( in subnetmod_operate()
861 (sq->ecs_client_in.subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4 && in subnetmod_operate()
862 sq->ecs_client_in.subnet_source_mask < qstate->env->cfg->min_client_subnet_ipv4) || in subnetmod_operate()
863 (sq->ecs_client_in.subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP6 && in subnetmod_operate()
864 sq->ecs_client_in.subnet_source_mask < qstate->env->cfg->min_client_subnet_ipv6))) { in subnetmod_operate()
870 if(!sq->started_no_cache_lookup && !qstate->blacklist) { in subnetmod_operate()
873 lookup_and_reply(qstate, id, sq, in subnetmod_operate()
880 subnet_ecs_opt_list_append(&sq->ecs_client_out, in subnetmod_operate()
895 sq->ecs_server_out.subnet_addr_fam = in subnetmod_operate()
896 sq->ecs_client_in.subnet_addr_fam; in subnetmod_operate()
897 sq->ecs_server_out.subnet_source_mask = in subnetmod_operate()
898 sq->ecs_client_in.subnet_source_mask; in subnetmod_operate()
900 if(sq->ecs_server_out.subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4 in subnetmod_operate()
901 && sq->ecs_server_out.subnet_source_mask > in subnetmod_operate()
903 sq->ecs_server_out.subnet_source_mask = in subnetmod_operate()
905 else if(sq->ecs_server_out.subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP6 in subnetmod_operate()
906 && sq->ecs_server_out.subnet_source_mask > in subnetmod_operate()
908 sq->ecs_server_out.subnet_source_mask = in subnetmod_operate()
913 memcpy(&sq->ecs_server_out.subnet_addr, in subnetmod_operate()
914 sq->ecs_client_in.subnet_addr, INET6_SIZE); in subnetmod_operate()
915 sq->ecs_server_out.subnet_scope_mask = 0; in subnetmod_operate()
916 sq->ecs_server_out.subnet_validdata = 1; in subnetmod_operate()
917 if(sq->ecs_server_out.subnet_source_mask != 0 && in subnetmod_operate()
919 sq->subnet_downstream) in subnetmod_operate()
931 if(sq && event == module_event_moddone) { in subnetmod_operate()
932 qstate->ext_state[id] = eval_response(qstate, id, sq); in subnetmod_operate()
935 subnet_ecs_opt_list_append(&sq->ecs_client_out, in subnetmod_operate()
946 qstate->no_cache_store = sq->started_no_cache_store; in subnetmod_operate()
947 qstate->no_cache_lookup = sq->started_no_cache_lookup; in subnetmod_operate()
950 if(sq && outbound) { in subnetmod_operate()
960 if(!sq && (event == module_event_moddone)) { in subnetmod_operate()