2.2.3.2.3 DNS_ADDR_ARRAY

The DNS_ADDR_ARRAY structure is used to represent an array of DNS_ADDR (section 2.2.3.2.2) structures. The DNS Server Management Protocol uses this structure to exchange lists of mixed IPv4 and IPv6 addresses between client and server.

 typedef struct _DnsAddrArray {
   DWORD MaxCount;
   DWORD AddrCount;
   DWORD Tag;
   WORD Family;
   WORD WordReserved;
   DWORD Flags;
   DWORD MatchFlag;
   DWORD Reserved1;
   DWORD Reserved2;
   [size_is(AddrCount )] DNS_ADDR AddrArray[];
 } DNS_ADDR_ARRAY,
  *PDNS_ADDR_ARRAY;

MaxCount: The actual number of IP addresses that are present in the AddrArray member.

AddrCount: Must be set to the same value as MaxCount.

Tag: This field is unused. Senders MUST set the value to zero and receivers MUST ignore it.

Family: The family of addresses present in the array, such as AF_INET or AF_INET6. If this field is not specified, addresses with all families can be present.

WordReserved: This field is unused. Senders MUST set the value to zero and receivers MUST ignore it.

Flags: This field is unused. Senders MUST set the value to zero and receivers MUST ignore it.

MatchFlag: This field is unused. Senders MUST set the value to zero and receivers MUST ignore it.

Reserved1: This field is unused. Senders MUST set the value to zero and receivers MUST ignore it.

Reserved2: This field is unused. Senders MUST set the value to zero and receivers MUST ignore it.

AddrArray: An array of DNS_ADDR (section 2.2.3.2.2) structures. The number of elements in this array is specified by the AddrCount member.

An empty DNS_ADDR_ARRAY is represented by AddrCount set to zero. Senders of an empty DNS_ADR_ARRAY MUST set the other fields' values to zero (including a single entry in AddrArray, which is set to binary zeros), and receivers MUST ignore them.