diff options
-rw-r--r-- | test/patches/scapy-2.4/inet6.py.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/patches/scapy-2.4/inet6.py.patch b/test/patches/scapy-2.4/inet6.py.patch new file mode 100644 index 00000000000..0cb33d43e8c --- /dev/null +++ b/test/patches/scapy-2.4/inet6.py.patch @@ -0,0 +1,28 @@ +diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py +index 6f9f16b..d61c621 100644 +--- a/scapy/layers/inet6.py ++++ b/scapy/layers/inet6.py +@@ -1089,9 +1089,9 @@ class IPv6ExtHdrSegmentRouting(_IPv6ExtHdr): + BitField("unused2", 0, 3), + ShortField("tag", 0), + IP6ListField("addresses", ["::1"], +- count_from=lambda pkt: pkt.lastentry), ++ count_from=lambda pkt: pkt.lastentry+1), + PacketListField("tlv_objects", [], IPv6ExtHdrSegmentRoutingTLV, +- length_from=lambda pkt: 8*pkt.len - 16*pkt.lastentry) ] ++ length_from=lambda pkt: 8*pkt.len - 16*(pkt.lastentry+1)) ] + + overload_fields = { IPv6: { "nh": 43 } } + +@@ -1119,7 +1119,10 @@ class IPv6ExtHdrSegmentRouting(_IPv6ExtHdr): + pkt = pkt[:3] + struct.pack("B", tmp_len) + pkt[4:] + + if self.lastentry is None: +- pkt = pkt[:4] + struct.pack("B", len(self.addresses)) + pkt[5:] ++ tmp_len = len(self.addresses) ++ if tmp_len: ++ tmp_len -= 1 ++ pkt = pkt[:4] + struct.pack("B", tmp_len) + pkt[5:] + + return _IPv6ExtHdr.post_build(self, pkt, pay) + |