unbound  0.1
Data Fields
iter_qstate Struct Reference

Per query state for the iterator module. More...

#include <iterator.h>

Data Fields

enum iter_state state
 State of the iterator module.
enum iter_state final_state
 Final state for the iterator module.
int depth
 The depth of this query, this means the depth of recursion.
struct dns_msgresponse
 The response.
struct iter_prep_listan_prepend_list
 This is a list of RRsets that must be prepended to the ANSWER section of a response before being sent upstream.
struct iter_prep_listan_prepend_last
 Last element of the prepend list.
struct iter_prep_listns_prepend_list
 This is the list of RRsets that must be prepended to the AUTHORITY section of the response before being sent upstream.
struct iter_prep_listns_prepend_last
 Last element of the authority prepend list.
struct query_info qchase
 query name used for chasing the results.
uint16_t chase_flags
 query flags to use when chasing the answer (i.e.
int chase_to_rd
 true if we set RD bit because of last resort recursion lame query
struct delegptdp
 This is the current delegation point for an in-progress query.
int caps_fallback
 state for 0x20 fallback when capsfail happens, 0 not a fallback
size_t caps_server
 state for capsfail: current server number to try
struct reply_infocaps_reply
 state for capsfail: stored query for comparisons
struct dns_msgdeleg_msg
 Current delegation message - returned for non-RD queries.
int num_target_queries
 number of outstanding target sub queries
int num_current_queries
 outstanding direct queries
int query_restart_count
 the number of times this query has been restarted.
int referral_count
 the number of times this query as followed a referral.
int sent_count
 number of queries fired off
struct delegptstore_parent_NS
 The query must store NS records from referrals as parentside RRs Enabled once it hits resolution problems, to throttle retries.
int query_for_pside_glue
 The query is for parent-side glue(A or AAAA) for a nameserver.
struct ub_packed_rrset_keypside_glue
 the parent-side-glue element (NULL if none, its first match)
uint8_t * dsns_point
 If nonNULL we are walking upwards from DS query to find NS.
size_t dsns_point_len
 length of the dname in dsns_point
int dnssec_expected
 expected dnssec information for this iteration step.
int dnssec_lame_query
 We are expecting dnssec information, but we also know the server is DNSSEC lame.
int wait_priming_stub
 This is flag that, if true, means that this event is waiting for a stub priming query.
int refetch_glue
 This is a flag that, if true, means that this query is for (re)fetching glue from a zone.
struct outbound_list outlist
 list of pending queries to authoritative servers.

Detailed Description

Per query state for the iterator module.

Field Documentation

enum iter_state iter_qstate::state

State of the iterator module.

This is the state that event is in or should sent to – all requests should start with the INIT_REQUEST_STATE. All responses should start with QUERY_RESP_STATE. Subsequent processing of the event will change this state.

Referenced by error_supers(), generate_sub_request(), iter_handle(), iter_new(), next_state(), prime_supers(), process_request(), process_response(), processClassResponse(), processDSNSFind(), processDSNSResponse(), and processQueryTargets().

enum iter_state iter_qstate::final_state

Final state for the iterator module.

This is the state that responses should be routed to once the response is final. For externally initiated queries, this will be FINISHED_STATE, locally initiated queries will have different final states.

Referenced by final_state(), generate_sub_request(), iter_new(), and process_request().

int iter_qstate::depth

The depth of this query, this means the depth of recursion.

This address is needed for another query, which is an address needed for another query, etc. Original client query has depth 0.

Referenced by generate_a_aaaa_check(), generate_ns_check(), generate_sub_request(), iter_new(), processInitRequest(), processLastResort(), processQueryTargets(), and query_for_targets().

struct query_info iter_qstate::qchase
uint16_t iter_qstate::chase_flags

query flags to use when chasing the answer (i.e.

RD flag)

Referenced by forward_request(), generate_sub_request(), iter_new(), processInitRequest3(), processPrimeResponse(), processQueryResponse(), and processQueryTargets().

struct delegpt* iter_qstate::dp
int iter_qstate::query_restart_count

the number of times this query has been restarted.

Referenced by iter_new(), processInitRequest(), processLastResort(), and processQueryResponse().

int iter_qstate::referral_count

the number of times this query as followed a referral.

Referenced by iter_new(), processQueryResponse(), and processQueryTargets().

struct delegpt* iter_qstate::store_parent_NS

The query must store NS records from referrals as parentside RRs Enabled once it hits resolution problems, to throttle retries.

If enabled it is the pointer to the old delegation point with the old retry counts for bad-nameserver-addresses.

Referenced by processLastResort(), and processQueryResponse().

int iter_qstate::query_for_pside_glue

The query is for parent-side glue(A or AAAA) for a nameserver.

If the item is seen as glue in a referral, and pside_glue is NULL, then it is stored in pside_glue for later. If it was never seen, at the end, then a negative caching element must be created. The (data or negative) RR cache element then throttles retries.

Referenced by generate_parentside_target_query(), processFinished(), processLastResort(), and processQueryResponse().

int iter_qstate::dnssec_expected

expected dnssec information for this iteration step.

If dnssec rrsigs are expected and not given, the server is marked lame (dnssec-lame).

Referenced by generate_parentside_target_query(), iter_new(), prime_root(), prime_stub(), processInitRequest3(), processQueryResponse(), and processQueryTargets().

int iter_qstate::dnssec_lame_query

We are expecting dnssec information, but we also know the server is DNSSEC lame.

The response need not be marked dnssec-lame again.

Referenced by iter_new(), processQueryResponse(), and processQueryTargets().

int iter_qstate::refetch_glue

This is a flag that, if true, means that this query is for (re)fetching glue from a zone.

Since the address should have been glue, query again to the servers that should have been returning it as glue. The delegation point must be set to the one that should not be used when creating the state. A higher one will be attempted.

Referenced by forward_request(), generate_ns_check(), generate_parentside_target_query(), generate_sub_request(), iter_new(), processInitRequest(), processInitRequest2(), and processLastResort().

struct outbound_list iter_qstate::outlist

list of pending queries to authoritative servers.

Referenced by generate_sub_request(), get_mesh_status(), iter_clear(), iter_new(), process_response(), processQueryResponse(), and processQueryTargets().


The documentation for this struct was generated from the following file: