def calc_checksum(self): """Calculate and store the checksum for this IGMP header. IGMP checksums are computed over payloads too.""" from pcs.packets.ipv4 import ipv4 self.checksum = 0 tmpbytes = self.bytes if not self._head is None: tmpbytes += self._head.collate_following(self) self.checksum = ipv4.ipv4_cksum(tmpbytes)
def cksum(self, ip, data="", nx=0): """Calculate checksum over TCP v6 segment outside of a chain.""" total = 0 p6 = pseudoipv6() p6.src = ip.src p6.dst = ip.dst p6.length = len(self.getbytes()) + len(data) if nx: p6.next_header = nx else: p6.next_header = ip.next_header pkt = p6.getbytes() + self.getbytes() + data return ipv4.ipv4_cksum(pkt)
def cksum(self, ip, data = "", nx = 0): """Calculate checksum over TCP v6 segment outside of a chain.""" total = 0 p6 = pseudoipv6() p6.src = ip.src p6.dst = ip.dst p6.length = len(self.getbytes()) + len (data) if nx: p6.next_header = nx else: p6.next_header = ip.next_header pkt = p6.getbytes() + self.getbytes() + data return ipv4.ipv4_cksum(pkt)
def cksum(self, ip, data="", nx=0): """Calculate the checksum for this ICMPv6 header, outside of a chain.""" p6 = pseudoipv6.pseudoipv6() p6.src = ip.src p6.dst = ip.dst p6.length = len(self.getbytes()) + len(data) if nx: p6.next_header = nx else: p6.next_header = ip.next_header pkt = p6.getbytes() + self.getbytes() + data return ipv4.ipv4_cksum(pkt)
def cksum(self, ip, data = "", nx = 0): """Calculate the checksum for this ICMPv6 header, outside of a chain.""" p6 = pseudoipv6.pseudoipv6() p6.src = ip.src p6.dst = ip.dst p6.length = len(self.getbytes()) + len (data) if nx: p6.next_header = nx else: p6.next_header = ip.next_header pkt = p6.getbytes() + self.getbytes() + data return ipv4.ipv4_cksum(pkt)
def calc_checksum(self): """Calculate and store the checksum for this ICMPv6 header. ICMPv6 checksums are computed over data payloads and next-headers. The packet must be part of a chain.""" self.checksum = 0 if self._head is not None: payload = self._head.collate_following(self) ip6 = self._head.find_preceding(self, pcs.packets.ipv6) assert ip6 is not None, "No preceding IPv6 header." pip6 = pseudoipv6.pseudoipv6() pip6.src = ip6.src pip6.dst = ip6.dst pip6.next_header = ip6.next_header pip6.length = len(self.getbytes()) + len(payload) tmpbytes = pip6.getbytes() + self.getbytes() + payload else: tmpbytes = self.getbytes() self.checksum = ipv4.ipv4_cksum(tmpbytes)
def calc_checksum(self): """Calculate and store the checksum for this TCP v6 segment. The packet must be part of a chain. To do this we need to use an overlay, and copy some header fields from the encapsulating IPv6 header.""" self.checksum = 0 if self._head is not None: payload = self._head.collate_following(self) ip6 = self._head.find_preceding(self, pcs.packets.ipv6) assert ip6 is not None, "No preceding IPv6 header." pip6 = pseudoipv6() pip6.src = ip.src pip6.dst = ip.dst pip6.next_header = ip6.next_header pip6.length = len(self.getbytes()) + len(payload) tmpbytes = pip6.getbytes() + self.getbytes() + payload else: tmpbytes = self.bytes self.checksum = ipv4.ipv4_cksum(tmpbytes)