def _read_para_ack(self, code, cbit, clen, *, desc, length, version):
if clen % <NUM_LIT:4> != <NUM_LIT:0>:<EOL><INDENT>raise ProtocolError(f'<STR_LIT>')<EOL><DEDENT>_upid = list()<EOL>for _ in range(clen // <NUM_LIT:4>):<EOL><INDENT>_upid.append(self._read_unpack(<NUM_LIT:4>))<EOL><DEDENT>ack = dict(<EOL>type=desc,<EOL>critical=cbit,<EOL>length=clen,<EOL>id=tuple(_upid),<EOL>)<EOL>return ack<EOL>
Read HIP ACK parameter.

        Structure of HIP ACK parameter [RFC 7401]:
             0                   1                   2                   3
             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |             Type              |             Length            |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |                       peer Update ID 1                        |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            /                       peer Update ID n                        |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                    Description
              0           0     ack.type                Parameter Type
              1          15     ack.critical            Critical Bit
              2          16     ack.length              Length of Contents
              4          32     ack.id                  Peer Update ID