Add Honeycomb interface management tests (ipv4, ipv6, ethernet, routing)
[csit.git] / resources / traffic_scripts / ipv6_sweep_ping.py
index 2282f40..da14c5d 100755 (executable)
@@ -19,7 +19,8 @@ import sys
 import logging
 import os
 logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
-from resources.libraries.python.PacketVerifier import RxQueue, TxQueue
+from resources.libraries.python.PacketVerifier import RxQueue, TxQueue,\
+    checksum_equal
 from resources.libraries.python.TrafficScriptArg import TrafficScriptArg
 from scapy.layers.inet6 import IPv6, ICMPv6ND_NA, ICMPv6NDOptDstLLAddr
 from scapy.layers.inet6 import ICMPv6EchoRequest, ICMPv6EchoReply
@@ -58,7 +59,7 @@ def main():
 
     # send ICMPv6 echo request with incremented data length and receive ICMPv6
     # echo reply
-    for echo_seq in range(start_size, end_size, step):
+    for echo_seq in range(start_size, end_size+1, step):
         pkt_send = (Ether(src=src_mac, dst=dst_mac) /
                           IPv6(src=src_ip, dst=dst_ip) /
                           ICMPv6EchoRequest(id=echo_id, seq=echo_seq,
@@ -68,12 +69,10 @@ def main():
 
         ether = rxq.recv(ignore=sent_packets)
         if ether is None:
-            rxq._proc.terminate()
             raise RuntimeError(
                 'ICMPv6 echo reply seq {0} Rx timeout'.format(echo_seq))
 
         if not ether.haslayer(IPv6):
-            rxq._proc.terminate()
             raise RuntimeError(
                 'Unexpected packet with no IPv6 received {0}'.format(
                     ether.__repr__()))
@@ -81,7 +80,6 @@ def main():
         ipv6 = ether['IPv6']
 
         if not ipv6.haslayer(ICMPv6EchoReply):
-            rxq._proc.terminate()
             raise RuntimeError(
                 'Unexpected packet with no IPv6 ICMP received {0}'.format(
                     ipv6.__repr__()))
@@ -89,21 +87,18 @@ def main():
         icmpv6 = ipv6['ICMPv6 Echo Reply']
 
         if icmpv6.id != echo_id or icmpv6.seq != echo_seq:
-            rxq._proc.terminate()
             raise RuntimeError(
-                'Invalid ICMPv6 echo reply received ID {0} seq {1} should be ' +
+                'Invalid ICMPv6 echo reply received ID {0} seq {1} should be ' \
                 'ID {2} seq {3}, {0}'.format(icmpv6.id, icmpv6.seq, echo_id,
                                              echo_seq))
 
         cksum = icmpv6.cksum
         del icmpv6.cksum
         tmp = ICMPv6EchoReply(str(icmpv6))
-        if tmp.cksum != cksum:
-            rxq._proc.terminate()
+        if not checksum_equal(tmp.cksum, cksum):
             raise RuntimeError(
                 'Invalid checksum {0} should be {1}'.format(cksum, tmp.cksum))
 
-    rxq._proc.terminate()
     sys.exit(0)
 
 if __name__ == "__main__":