The IpamIPAddressByBlockIdEnumerationParameters processing is done when the EnumInputParameters contains data of type IpamIPAddressByBlockIdEnumerationParameters. The ObjectType MUST be EnumerationObjectType.IPAddress. This is used to enumerate addresses mapped to the specified address block given byIpamIPAddressByBlockIdEnumerationParameters.BlockId. The IpamIPAddressByBlockIdEnumerationParameters.AddressFamily is used to determine the simple table within ADM_IPAddressTable on which the processing is done. If the AddressFamily is InterNetwork, the EnumOutputData is a collection of IpamIPv4Address and if it is InterNetworkV6, the EnumOutputData is a collection of IpamIPv6Address.

The following processing steps identify the rows to be returned as a part of the enumeration:

  1. Enumerate the rows in ADM_IPRangeTable whose ParentIPBlockRecordId is equal to IpamIPAddressByBlockIdEnumerationParameters.BlockId.

  2. For each of the address range row enumerated from the above query: 

  3. Enumerate the rows in ADM_IPAddressTable wherein RangeRecordId is equal to RecordId of the rows enumerated in step 1.

  4. For each of the previously enumerated rows, call the procedure GetIPAddressFromTable in ADM_IPAddressTable passing the RecordId of the row as Param_Id and Param_addressfamily as parameters.

  5. Add the returned result to EnumOutputData.