From d5e4a897680762663fd14993a4f2c9691675ec29 Mon Sep 17 00:00:00 2001 From: Guillaume Valadon <guillaume@valadon.net> Date: Wed, 7 Aug 2013 10:13:46 +0200 Subject: [PATCH] Issue #600: Fragmenting long IPv6 packet produces deprecation warnings --HG-- branch : Issue #600 --- scapy/layers/inet6.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py index bd2122ef..b7dcb416 100644 --- a/scapy/layers/inet6.py +++ b/scapy/layers/inet6.py @@ -958,10 +958,6 @@ def fragment6(pkt, fragSize): """ pkt = pkt.copy() - s = str(pkt) # for instantiation to get upper layer checksum right - - if len(s) <= fragSize: - return [pkt] if not IPv6ExtHdrFragment in pkt: # TODO : automatically add a fragment before upper Layer @@ -969,6 +965,15 @@ def fragment6(pkt, fragSize): # as single element of a list return [pkt] + # If the payload is bigger than 65535, IPv6().post_build() will throw an exception + if len(str(pkt[IPv6ExtHdrFragment])) > 65535: + pkt[IPv6].plen = 65535 + + s = str(pkt) # for instantiation to get upper layer checksum right + + if len(s) <= fragSize: + return [pkt] + # Fragmentable part : fake IPv6 for Fragmentable part length computation fragPart = pkt[IPv6ExtHdrFragment].payload tmp = str(IPv6(src="::1", dst="::1")/fragPart) -- GitLab