2.2.4.2.2.1 DNS_RPC_SERVER_INFO_W2K

The DNS_RPC_SERVER_INFO_W2K structure is used to specify general DNS server state and configuration.

 typedef struct _DnsRpcServerInfoW2K {
   DWORD dwVersion;
   UCHAR fBootMethod;
   BOOLEAN fAdminConfigured;
   BOOLEAN fAllowUpdate;
   BOOLEAN fDsAvailable;
   [string] char* pszServerName;
   [string] wchar_t* pszDsContainer;
   PIP4_ARRAY aipServerAddrs;
   PIP4_ARRAY aipListenAddrs;
   PIP4_ARRAY aipForwarders;
   PDWORD pExtension1;
   PDWORD pExtension2;
   PDWORD pExtension3;
   PDWORD pExtension4;
   PDWORD pExtension5;
   DWORD dwLogLevel;
   DWORD dwDebugLevel;
   DWORD dwForwardTimeout;
   DWORD dwRpcProtocol;
   DWORD dwNameCheckFlag;
   DWORD cAddressAnswerLimit;
   DWORD dwRecursionRetry;
   DWORD dwRecursionTimeout;
   DWORD dwMaxCacheTtl;
   DWORD dwDsPollingInterval;
   DWORD dwScavengingInterval;
   DWORD dwDefaultRefreshInterval;
   DWORD dwDefaultNoRefreshInterval;
   DWORD dwReserveArray[10];
   BOOLEAN fAutoReverseZones;
   BOOLEAN fAutoCacheUpdate;
   BOOLEAN fRecurseAfterForwarding;
   BOOLEAN fForwardDelegations;
   BOOLEAN fNoRecursion;
   BOOLEAN fSecureResponses;
   BOOLEAN fRoundRobin;
   BOOLEAN fLocalNetPriority;
   BOOLEAN fBindSecondaries;
   BOOLEAN fWriteAuthorityNs;
   BOOLEAN fStrictFileParsing;
   BOOLEAN fLooseWildcarding;
   BOOLEAN fDefaultAgingState;
   BOOLEAN fReserveArray[15];
 } DNS_RPC_SERVER_INFO_W2K,
  *PDNS_RPC_SERVER_INFO_W2K;

dwVersion: The operating system version of the DNS server in DNSSRV_VERSION (section 2.2.4.2.1).

fBootMethod: The method by which the DNS server obtains information at the start time. This MUST be set to one of the possible values as specified in DNS_BOOT_METHODS (section 2.2.4.1.1).

fAdminConfigured: A Boolean field that specifies whether the DNS server has been configured by an administrator. On a fresh installed server this value MUST be set to FALSE. This value MUST be set to TRUE whenever a zone is created, or a record is modified, or an Active Directory domain controller promotion (DCPROMO) configures the DNS server.

fAllowUpdate: A Boolean field that indicates whether the DNS server allows dynamic DNS updates. This field MUST be set to FALSE if the server does not allow dynamic zone-updates, otherwise set to TRUE.

fDsAvailable: A Boolean field that specifies whether a directory server is available to the DNS server. It MUST be set to FALSE, if the server does not have access to a directory server.

pszServerName: A pointer to a null-terminated UTF-8 string that contains the FQDN of the DNS server.

pszDsContainer: A pointer to a null-terminated Unicode string that points to the DNS server's container path as a distinguished name (DN) in the directory server. If no directory server is configured, this value MUST be set to NULL. This value is synthesized by the server by concatenating a constant container relative distinguished name (RDN) and the result of an LDAP search operation to retrieve the defaultNamingContext of the Active Directory server's rootDSE.<31>

aipServerAddrs: The list of IP addresses that are available on the server.

aipListenAddrs: The list of IP addresses that are explicitly configured by the administrator on the DNS server that listens for the DNS requests. If this value is set to NULL then the server listens to all available IP addresses.

aipForwarders: The list of remote DNS servers to which this DNS server will forward unresolved DNS requests.

pExtension1: Reserved for future use and MUST be ignored by receiver.

pExtension2: Reserved for future use and MUST be ignored by receiver.

pExtension3: Reserved for future use and MUST be ignored by receiver.

pExtension4: Reserved for future use and MUST be ignored by receiver.

pExtension5: Reserved for future use and MUST be ignored by receiver.

dwLogLevel: This indicates which DNS packets will be logged and how they will be logged. This field MUST be set to either zero or a combination (by bitwise OR) of the possible values as specified under DNS_LOG_LEVELS (section 2.2.9.1.1). If this value is set to zero, then no logging will be performed for DNS packets.

dwDebugLevel: Unused. Receivers MUST ignore.

dwForwardTimeout: The time interval, in seconds, for which the DNS server waits for a response from each server in the forwarders list.

dwRpcProtocol: This value indicates what RPC protocols this DNS server will accept connections on. This value MUST be set to any combination of values specified in DNS_RPC_PROTOCOLS (section 2.2.1.1.2).

dwNameCheckFlag: The level of domain name checking and validation enforced by the DNS server. This value MUST be set one of the allowed values that are specified in DNS_NAME_CHECK_FLAGS (section 2.2.4.1.2).

cAddressAnswerLimit: The configured value for the maximum number of type A IP address resource records that the DNS server can insert in the answer section of a response to a UDP query of type A. If this value is set to 0x00000000 then the DNS server MUST NOT enforce any artificial limit on number of records in a response and if response becomes larger than the DNS UDP packet size then the truncation bit MUST be set [RFC1035]. If this property value is not 0x00000000 and the DNS server is unable to add the specified number of records to the response message due to message size limitations, it MUST return as many records as will fit in the message and the truncation bit MUST NOT be set. The DNS server MUST NOT enforce this limit if the query is not of type A. If the value of this property is not 0x00000000 the DNS server MUST enforce this limit for UDP queries and MUST NOT enforce this limit for TCP queries. If the LocalNetPriority property value is set to TRUE, the DNS server first orders the address records as per the LocalNetPriority property and then MUST select the first cAddressAnswerLimit type A records in this sorted list for inclusion in the response. The value MUST be either zero or between 0x00000005 and 0x0000001C inclusive.

dwRecursionRetry: The time-interval, in seconds, for which the DNS server waits before it retries a recursive query to the remote DNS server from which it did not receive a response. The values MUST be between 1 and 15 seconds inclusive.

dwRecursionTimeout: The time-interval, in seconds, for which the DNS server waits for a recursive query-response from a remote DNS server. The values MUST be between 1 and 15 seconds inclusive.

dwMaxCacheTtl: The maximum time duration, in seconds, for which the DNS server will cache a resource record obtained from a remote server in a successful query response. The values for this MUST be between 0 to 30 days (but specified in seconds) inclusive.

dwDsPollingInterval: The interval, in seconds, at which the DNS server will poll a directory server to obtain updated information for any changes that have occurred to zones loaded in the server. The values MUST be between 30 and 3600 seconds inclusive.

dwScavengingInterval: The scavenging interval, in hours, on the DNS server. This is the interval at which the server will execute the cleanup of stale DNS records. The value MUST be between 0 and 8760 hours (1 year). If this value is zero then scavenging is disabled.

dwDefaultRefreshInterval: The default value of the refresh interval, in hours, for new zones created on the DNS server. For any primary zone created on the server by default this value is used as the refresh interval.

dwDefaultNoRefreshInterval: The default value of the NoRefresh interval, in hours, for new zones created on the DNS server. For any primary zone created on the server by default this value is used as the NoRefresh interval.

dwReserveArray: This value is reserved for future use and MUST be ignored by the receiver. Senders MUST set this to zero and receivers MUST ignore it.

fAutoReverseZones: A Boolean value that indicates whether the DNS server is configured to automatically create standard reverse lookup zones at boot time.

fAutoCacheUpdate: A Boolean value that indicates whether the DNS server is configured to automatically write-back cached root hints and delegation data to persistent storage.

fRecurseAfterForwarding: A Boolean value that indicates whether the DNS server is configured to use recursion in addition to forwarding. If this value is TRUE (0x01) then if the DNS server does not have any forwarders configured or if forwarders are unreachable then it MUST return failure, otherwise it MUST perform normal recursive processing for this query as specified in [RFC1034]  section 4.3.1.

fForwardDelegations: A Boolean value indicates whether or not the DNS server will forward queries about delegated subzones to servers outside of its authoritative zone. If this value is set to TRUE, then the DNS server forwards all name queries about delegated subzones to forwarding servers in other zones; otherwise it will send such queries within its authoritative zone to the corresponding subzone only.

fNoRecursion: A Boolean value that indicates whether the DNS server will perform recursive resolution for queries. If this value is TRUE then recursion MUST NOT be performed even if the Recursion Desired (RD) bit ([RFC1035] section 4.1.1) is set in the DNS query packet header. If this value is FALSE then recursion will be performed as per [RFC1035].

fSecureResponses: A Boolean value that indicates if the DNS server needs to screen DNS records received in remote query responses against the zone of authority for the remote server to prevent cache pollution. If it is set to TRUE, the DNS server caches only the records that are in zone of authority for the remote server that was queried. When set to FALSE, all records in the cache are saved.

fRoundRobin: A Boolean value that indicates if the DNS server is configured to rotate the order of DNS records it returns for a given name. If this value is set to FALSE no round robin will be performed and DNS records will be returned in static, arbitrary order.

fLocalNetPriority: A Boolean value that indicates if the DNS server is configured to prioritize address records in a response based on the IP address of the DNS client that submitted the query. If this is set to TRUE the DNS server will return address records in the order of their closeness to the querying client's IP address by applying the network mask pointed to by LocalNetPriorityNetMask. If this value is set to 0 then the DNS server returns records in the order in which they are obtained from the database.

fBindSecondaries: A Boolean value that indicates if the DNS server allows zone transfers to secondary DNS servers running older non-Microsoft software. If this value is set to TRUE the DNS server sends zone transfer to secondaries via a slower mechanism, with one resource record in each message.

fWriteAuthorityNs: A Boolean value that indicates if the DNS server is enabled to write NS records in the authority section of all successful authoritative responses. If this value is TRUE then NS records will be included in the authority section of responses, otherwise NS records will only be included in referral responses.

fStrictFileParsing: A Boolean value that indicates if the DNS server is configured to perform strict file parsing. When this value is set to TRUE and a record parsing error is detected server will quit after indicating error. If this value is FALSE parsing errors will cause that specific record to be ignored and the server will continue to load the rest of the database.

fLooseWildcarding: A Boolean value that indicates if the DNS server is configured to perform loose wildcarding [RFC1035], otherwise it returns FALSE. When a server does not find a resource record that matches the name and type specified in the query in the authoritative zone, then it searches for related wildcard records, ([RFC1034] section 4.3.3), if configured to perform loose wildcarding will return the first node it finds that has matching resource-record type, whereas if it is not then it will return the first node that has any resource record.

fDefaultAgingState: A Boolean value that indicates if the default value of ageing state for new primary zones created on the DNS server. For any primary zone created on the server this value is used as its default aging state. If this is FALSE then timestamps of records in the zone will not be tracked whereas when this value is TRUE then the timestamps of records in the zone will be tracked.

fReserveArray: Reserved for future use. These values MUST be ignored by receiver.