This is the processing done when the EnumInputParameters contains data of type IPBlockRootEnumerationParameters. The ObjectType MUST be EnumerationObjectType.IPBlock. This is used to enumerate all the address blocks which are at the root-level i.e. the ones for which ParentBlockRecordId is null and specific to the address family specified. The IPBlockRootEnumerationParameters.AddressFamily is used to determine the simple table within the ADM_IPBlocksTable on which the processing has to be done. If the AddressFamily is Internet, the EnumOutputData will be a collection of IPv4Block and if it is InternetV6, the EnumOutputData will be a collection of IPv6Block.

The following are the steps involved in identifying the rows to be returned as a part of the enumeration.

  1. Enumerate the rows in ADM_IPBlocksTable wherein ParentBlockRecordId is not set. If IPBlockRootEnumerationParameters.AddressCategory is specified, enumerate the rows for which ParentBlockRecordId is not set as well as BlockDetails.AddressCategory is equal to the IPBlockRootEnumerationParameters.AddressCategory.

  2. For each of the rows enumerated above, call the procedure GetIPBlockFromTable passing RecordId of the row as Param_blockId and IPBlockChildBlockEnumerationParameters.AddressFamily as Param_addressfamily. Add the result to EnumOutputData.