3.5.4.7.1.10 DiscoverySubnetEnumerationParameters

This is the processing done when the EnumInputParameters contains data of type DiscoverySubnetEnumerationParameters. The ObjectType MUST be EnumerationObjectType. DiscoveredSubnets. The following are the processing steps involved to identify the rows to be returned as a part of the enumeration.

  1. Enumerate the rows in ADM_ServersTable which meet the following conditions:

    • If DiscoverySubnetEnumerationParameters.InclusionStatus is specified, ServerInfoDetails.ManagementStatus MUST be equal to DiscoverySubnetEnumerationParameters.InclusionStatus.

    • If DiscoverySubnetEnumerationParameters.MultipleRole is specified and has the value of ServerMultipleRole.DhcpOrDns, for the row in the ADM_ServersTable being enumerated, there MUST be a row in ADM_ServerRolesTable whose ServerRecordId is the RecordId of the row in ADM_ServersTable and ServerRoleFlag is either ServerRoleType.Dhcp or ServerRoleFlag.Dns.

    • If DiscoverySubnetEnumerationParameters.ServerRole is specified, for the row in the ADM_ServersTable being enumerated, there MUST be a row in ADM_ServerRolesTable whose ServerRecordId is the RecordId of the row in ADM_ServersTable and the ServerRoleFlag is DiscoverySubnetEnumerationParameters.ServerRole.

  2. For each of the rows enumerated which meet the above mentioned condition, get the addresses specified by ServerInfoDetails.IPAddresses. For each of the addresses, perform the following processing:

    1. If DiscoverySubnetEnumerationParameters.SubnetType is specified, filter the addresses based on the address family.

      1. If it is of value ServerInfoIPType.IPv4,

        1. Filter addresses which are of address family of Internet.

        2. Get the subnet with a /16 prefix.

        3. Ensure it was not already added to EnumOutputData and if not, add it to EnumOutputData.

    2. Similarly if it is of value ServerInfoIPType.IPv6,

      1. Filter addresses that are of address family InternetV6.

      2. Get the subnet with a /16 prefix.

      3. Ensure it was not already added to EnumOutputData and if not, add it to EnumOutputData.