Source code for dhcpkit_vpp.protocols.utils

from typing import Union


[docs]def ones_complement_checksum(msg: Union[bytes, bytearray]): """ Calculate the 16-bit one's complement of the one's complement sum of a message. :param msg: The message :return: The checksum """ checksum = 0 for i in range(0, len(msg), 2): current_word = (msg[i] << 8) + msg[i + 1] # Carry around add c = checksum + current_word checksum = (c & 0xffff) + (c >> 16) return ~checksum & 0xffff