<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _read_para_via_rvs(self, code, cbit, clen, *, desc, length, version):
 """Read HIP VIA_RVS parameter. Structure of HIP VIA_RVS parameter [RFC 6028]: 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Octets Bits Name Description 0 0 via_rvs.type Parameter Type 1 15 via_rvs.critical Critical Bit 2 16 via_rvs.length Length of Contents 4 32 via_rvs.ip Address """

        if clen % 16 != 0:
            raise ProtocolError(f'HIPv{version}: [Parano {code}] invalid format')

        _addr = list()
        for _ in range(clen // 16):
            _addr.append(ipaddress.ip_address(self._read_fileng(16)))

        via_rvs = dict(
            type=desc,
            critical=cbit,
            length=clen,
            ip=tuple(_addr),
        )

        return via_rvs