ipsec: IPSec protection for multi-point tunnel interfaces
[vpp.git] / test / util.py
index d27b3fb..39f063e 100644 (file)
@@ -58,7 +58,7 @@ def ip4n_range(ip4n, s, e):
 
 # wrapper around scapy library function.
 def mk_ll_addr(mac):
-    euid = in6_mactoifaceid(mac)
+    euid = in6_mactoifaceid(str(mac))
     addr = "fe80::" + euid
     return addr
 
@@ -298,7 +298,7 @@ def fragment_rfc791(packet, fragsize, _logger=None):
     pkts = []
     ihl = packet[IP].ihl
     otl = len(packet[IP])
-    nfb = (fragsize - pre_ip_len - ihl * 4) / 8
+    nfb = int((fragsize - pre_ip_len - ihl * 4) / 8)
     fo = packet[IP].frag
 
     p = packet.__class__(hex_headers + hex_payload[:nfb * 8])
@@ -386,14 +386,19 @@ def fragment_rfc8200(packet, identification, fragsize, _logger=None):
     fragment_ext_hdr = IPv6ExtHdrFragment()
     logger.debug(ppp("Fragment header:", fragment_ext_hdr))
 
+    len_ext_and_upper_layer_payload = len(ext_and_upper_layer.payload)
+    if not len_ext_and_upper_layer_payload and \
+       hasattr(ext_and_upper_layer, "data"):
+        len_ext_and_upper_layer_payload = len(ext_and_upper_layer.data)
+
     if len(per_fragment_headers) + len(fragment_ext_hdr) +\
-            len(ext_and_upper_layer) - len(ext_and_upper_layer.payload)\
+            len(ext_and_upper_layer) - len_ext_and_upper_layer_payload\
             > fragsize:
         raise Exception("Cannot fragment this packet - MTU too small "
                         "(%s, %s, %s, %s, %s)" % (
                             len(per_fragment_headers), len(fragment_ext_hdr),
                             len(ext_and_upper_layer),
-                            len(ext_and_upper_layer.payload), fragsize))
+                            len_ext_and_upper_layer_payload, fragsize))
 
     orig_nh = packet[IPv6].nh
     p = per_fragment_headers
@@ -401,7 +406,7 @@ def fragment_rfc8200(packet, identification, fragsize, _logger=None):
     del p[IPv6].nh
     p = p / fragment_ext_hdr
     del p[IPv6ExtHdrFragment].nh
-    first_payload_len_nfb = (fragsize - len(p)) / 8
+    first_payload_len_nfb = int((fragsize - len(p)) / 8)
     p = p / Raw(hex_payload[:first_payload_len_nfb * 8])
     del p[IPv6].plen
     p[IPv6ExtHdrFragment].nh = orig_nh
@@ -419,11 +424,11 @@ def fragment_rfc8200(packet, identification, fragsize, _logger=None):
         del p[IPv6].nh
         p = p / fragment_ext_hdr
         del p[IPv6ExtHdrFragment].nh
-        l_nfb = (fragsize - len(p)) / 8
+        l_nfb = int((fragsize - len(p)) / 8)
         p = p / Raw(hex_payload[offset:offset + l_nfb * 8])
         p[IPv6ExtHdrFragment].nh = orig_nh
         p[IPv6ExtHdrFragment].id = identification
-        p[IPv6ExtHdrFragment].offset = offset / 8
+        p[IPv6ExtHdrFragment].offset = int(offset / 8)
         p[IPv6ExtHdrFragment].m = 1
         p = p.__class__(scapy.compat.raw(p))
         logger.debug(ppp("Fragment %s:" % len(pkts), p))