2.2.10.2.7 DNSSRV_RECURSE_STATS

The DNSSRV_RECURSE_STATS structure has the DNS server's statistics related to recursive resource record lookups. This structure SHOULD<69>  be formatted as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Header

...

ReferralPasses

QueriesRecursed

OriginalQuestionRecursed

AdditionalRecursed

TotalQuestionsRecursed

Retries

LookupPasses

Forwards

Sends

Responses

ResponseUnmatched

ResponseMismatched (optional)

ResponseFromForwarder

ResponseAuthoritative

ResponseNotAuth

ResponseAnswer

ResponseNameError

ResponseRcode

ResponseEmpty

ResponseDelegation

ResponseNonZoneData

ResponseUnsecure

ResponseBadPacket

SendResponseDirect

ContinueCurrentRecursion

ContinueCurrentLookup

ContinueNextLookup

RootNsQuery

RootNsResponse

CacheUpdateAlloc

CacheUpdateResponse

CacheUpdateFree

CacheUpdateRetry

SuspendedQuery

ResumeSuspendedQuery

PacketTimeout

FinalTimeoutQueued

FinalTimeoutExpired

Failures

RecursionFailure

ServerFailure

PartialFailure

CacheUpdateFailure

RecursePassFailure

FailureReachAuthority

FailureReachPreviousResponse

FailureRetryCount

TcpTry

TcpConnectFailure

TcpConnect

TcpQuery

TcpResponse

TcpDisconnect

DiscardedDuplicateQueries (optional)

DuplicateCoalesedQueries (optional)

GnzLocalQuery (optional)

GnzRemoteQuery (optional)

GnzRemoteResponse (optional)

GnzRemoteResponseCacheSuccess (optional)

GnzRemoteResponseCacheFailure (optional)

CacheLockingDiscards (optional)

Header (8 bytes): A structure of type DNSSRV_STAT_HEADER (section 2.2.10.2.1).

ReferralPasses (4 bytes): The number of times the server returned a referral value, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

QueriesRecursed (4 bytes): The number of queries received that required recursive lookups, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

OriginalQuestionRecursed (4 bytes): The number of new recursive queries initiated, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

AdditionalRecursed (4 bytes): The number of recursions performed to return additional data or CNAME, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

TotalQuestionsRecursed (4 bytes): The number of total recursions including original and additional, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

Retries (4 bytes): The number of retries performed for recursive queries sent by the server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

LookupPasses (4 bytes): The number of recursive lookups performed, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

Forwards (4 bytes): The number of recursive queries sent to forwarding servers, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

Sends (4 bytes): The total number of recursive queries sent by the server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

Responses (4 bytes): The number of query responses received by the server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseUnmatched (4 bytes): The number of responses received for which an outstanding query with a matching transaction-id could not be located, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseMismatched (4 bytes): The number of responses received for which an outstanding query with a matching transaction-id was located but response was invalid for the query, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field SHOULD be present. A client can tell whether the field is present based on the size of the buffer holding this structure.

ResponseFromForwarder (4 bytes): The number of responses received from forwarders, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseAuthoritative (4 bytes): The number of responses received from the server authoritative for the zone, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseNotAuth (4 bytes): The number of responses received from a server not authoritative for the zone, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseAnswer (4 bytes): The number of responses received from other servers for recursive queries, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseNameError (4 bytes): The number of name errors received by the server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseRcode (4 bytes): The number of errors other than name errors received by the server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseEmpty (4 bytes): The number of empty responses received from other servers, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseDelegation (4 bytes): The number of delegation responses received by the server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseNonZoneData (4 bytes): The number of error responses when a name is not found in the zone, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseUnsecure (4 bytes): The number of unsecure responses received when the server is configured to receive secure responses, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResponseBadPacket (4 bytes): The number of bad response packets received, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

SendResponseDirect (4 bytes): The number of responses that the DNS server received from remote servers and sent directly to clients, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ContinueCurrentRecursion (4 bytes): The number of additional remote queries generated by the DNS server during normal query processing, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ContinueCurrentLookup (4 bytes): The number of times the server received a response from a remote DNS server while processing a client query and restarted recursion, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ContinueNextLookup (4 bytes): The number of times the server started a lookup with the next query, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

RootNsQuery (4 bytes): The number of times the server sent a query for a root name server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

RootNsResponse (4 bytes): The number of times the server processed a response from one of its root servers, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

CacheUpdateAlloc (4 bytes): The number of times the server allocated a query to be sent to update a cache entry, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

CacheUpdateResponse (4 bytes): The number of times the server received responses for a query sent to update a cache entry, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

CacheUpdateFree (4 bytes): The number of times the server released a query request or response packet sent to update a cache entry, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

CacheUpdateRetry (4 bytes): The number of times the server reattempted a query to update cache entry information, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

SuspendedQuery (4 bytes): The number of times the server suspended sending a query needed to update cache entry information, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ResumeSuspendedQuery (4 bytes): The number of times the server resumed a suspended query that was needed to update cache entry information, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

PacketTimeout (4 bytes): The number of timed-out recursive queries, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

FinalTimeoutQueued (4 bytes): The number of recursive queries enlisted to wait for final time-out before they expire, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

FinalTimeoutExpired (4 bytes): The number of recursive queries expired without the server receiving any response, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

Failures (4 bytes): Not used. Senders MUST set this value to zero, and receivers MUST ignore it.

RecursionFailure (4 bytes): The number of times the server received failures for recursion queries to remote servers, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

ServerFailure (4 bytes): The number of times the server sent failures to the client, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

PartialFailure (4 bytes): The number of times the server received failures for recursion queries to remote servers, when it had already received an answer but was looking up additional records, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

CacheUpdateFailure (4 bytes): The number of times the server received failure for self-generated cache update recursion queries to remote servers, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

RecursePassFailure (4 bytes): The number of times the server failed to perform recursive lookups on queries, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

FailureReachAuthority (4 bytes): The number of times the server failed to perform recursive lookups on queries, because it failed to reach an authoritative server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

FailureReachPreviousResponse (4 bytes): The number of times the server received failure while performing recursive lookup on queries, because the query recursed back to the domain from which a name server had already responded, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

FailureRetryCount (4 bytes): Not used. Senders MUST set this value to zero, and receivers MUST ignore it.

TcpTry (4 bytes): The number of times the server started a recursive query over TCP, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

TcpConnectFailure (4 bytes): Not used. Senders MUST set this value to zero, and receivers MUST ignore it.

TcpConnect (4 bytes): The number of times the server successfully established a TCP connection to send a recursive query, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

TcpQuery (4 bytes): The number of times the server sent a recursive query over TCP, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

TcpResponse (4 bytes): The number of times the server received a recursive query response over TCP, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

TcpDisconnect (4 bytes): The number of times the server disconnected a connection that was established to send a recursive query over TCP to a remote server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field.

DiscardedDuplicateQueries (4 bytes): The number of times the server discarded a query that was received from the same client with the same transaction ID when there was already a query with the same query name, type ID, and transaction ID outstanding, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field MUST be present only if ResponseMismatched is present. A client can tell whether the field is present based on the size of the buffer holding this structure.

DuplicateCoalesedQueries (4 bytes): The number of times the server coalesced a query that was received from a client while another query with the same query name and type ID was outstanding at the server for processing, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field MUST be present if and only if ResponseMismatched is present. A client can tell whether the field is present based on the size of the buffer holding this structure.

GnzLocalQuery (4 bytes): The number of times a global name zone (GNZ) lookup query was answered locally, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field SHOULD be present but MUST be absent if ResponseMismatched is absent. A client can tell whether the field is present based on the size of the buffer holding this structure.

GnzRemoteQuery (4 bytes): The number of times a GNZ lookup query was sent to a remote server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field MUST be present if and only if GnzLocalQuery is present. A client can tell whether the field is present based on the size of the buffer holding this structure.

GnzRemoteResponse (4 bytes): The number of times a GNZ lookup query response was received from a remote server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field MUST be present if and only if GnzLocalQuery is present. A client can tell whether the field is present based on the size of the buffer holding this structure.

GnzRemoteResponseCacheSuccess (4 bytes): The number of times a GNZ cache update query response was successfully received from a remote server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field MUST be present if and only if GnzLocalQuery is present. A client can tell whether the field is present based on the size of the buffer holding this structure.

GnzRemoteResponseCacheFailure (4 bytes): The number of times the server received failure for GNZ cache update query requests sent to a remote server, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field MUST be present if and only if GnzLocalQuery is present. A client can tell whether the field is present based on the size of the buffer holding this structure.

CacheLockingDiscards (4 bytes): The number of times the server discarded a cache update due to cache record locking, as an unsigned 32-bit integer. If the value is greater than 0xFFFFFFFF, then the value modulo 0x100000000 is stored in the field. This field SHOULD<70> be present. A client can tell whether the field is present based on the size of the buffer holding this structure.