code: def _update_checksum(self):
          
          source_list = [int(octet) for octet in self.source.split(".")]
          destination_list = [int(octet) for octet in
                              self.destination.split(".")]
          source_upper = (source_list[0] << 8) + source_list[1]
          source_lower = (source_list[2] << 8) + source_list[3]
          destination_upper = (destination_list[0] << 8) + destination_list[1]
          destination_lower = (destination_list[2] << 8) + destination_list[3]
  
          block_sum = ((self._version_ihl << 8 | self._dscp_ecn) + self.length +
                       self.identification + self._flags_offset +
                       (self.ttl << 8 | self.protocol) + source_upper +
                       source_lower + destination_upper + destination_lower)
  
          while block_sum > 65535:
              carry = block_sum >> 16
              block_sum = (block_sum & 65535) + carry
  
          self.checksum = ~block_sum & 65535
docs: Update the packet checksum to enable integrity check.