Pylint fixes
[csit.git] / resources / traffic_scripts / ipv4_sweep_ping.py
index 4b82a9b..7f67597 100755 (executable)
@@ -20,7 +20,7 @@ import logging
 import os
 logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
 from resources.libraries.python.PacketVerifier import RxQueue, TxQueue,\
-    auto_pad, create_gratuitous_arp_request
+    create_gratuitous_arp_request, checksum_equal
 from resources.libraries.python.TrafficScriptArg import TrafficScriptArg
 from scapy.layers.inet import IP, ICMP
 from scapy.all import Ether, Raw
@@ -55,21 +55,19 @@ def main():
     # send ICMP echo request with incremented data length and receive ICMP
     # echo reply
     for echo_seq in range(start_size, end_size+1, step):
-        pkt_send = auto_pad(Ether(src=src_mac, dst=dst_mac) /
-                            IP(src=src_ip, dst=dst_ip) /
-                            ICMP(id=echo_id, seq=echo_seq) /
-                            Raw(load=data[0:echo_seq]))
+        pkt_send = (Ether(src=src_mac, dst=dst_mac) /
+                    IP(src=src_ip, dst=dst_ip) /
+                    ICMP(id=echo_id, seq=echo_seq) /
+                    Raw(load=data[0:echo_seq]))
         sent_packets.append(pkt_send)
         txq.send(pkt_send)
 
         ether = rxq.recv(ignore=sent_packets)
         if ether is None:
-            rxq._proc.terminate()
             raise RuntimeError(
                 'ICMP echo reply seq {0} Rx timeout'.format(echo_seq))
 
         if not ether.haslayer(IP):
-            rxq._proc.terminate()
             raise RuntimeError(
                 'Unexpected packet with no IPv4 received {0}'.format(
                     ether.__repr__()))
@@ -77,7 +75,6 @@ def main():
         ipv4 = ether['IP']
 
         if not ipv4.haslayer(ICMP):
-            rxq._proc.terminate()
             raise RuntimeError(
                 'Unexpected packet with no ICMP received {0}'.format(
                     ipv4.__repr__()))
@@ -85,27 +82,26 @@ def main():
         icmpv4 = ipv4['ICMP']
 
         if icmpv4.id != echo_id or icmpv4.seq != echo_seq:
-            rxq._proc.terminate()
             raise RuntimeError(
-                'Invalid ICMP echo reply received ID {0} seq {1} should be ' +
+                'Invalid ICMP echo reply received ID {0} seq {1} should be ' \
                 'ID {2} seq {3}, {0}'.format(icmpv4.id, icmpv4.seq, echo_id,
                                              echo_seq))
 
         chksum = icmpv4.chksum
         del icmpv4.chksum
         tmp = ICMP(str(icmpv4))
-        if tmp.chksum != chksum:
-            rxq._proc.terminate()
+        if not checksum_equal(tmp.chksum, chksum):
             raise RuntimeError(
                 'Invalid checksum {0} should be {1}'.format(chksum, tmp.chksum))
-        recv_payload_len = ipv4.len - 20 - 8
-        load = tmp['Raw'].load[0:recv_payload_len]
+
+        if 'Raw' in icmpv4:
+            load = icmpv4['Raw'].load
+        else:
+            load = ""
         if load != data[0:echo_seq]:
-            rxq._proc.terminate()
             raise RuntimeError(
                 'Received ICMP payload does not match sent payload')
 
-    rxq._proc.terminate()
     sys.exit(0)
 
 if __name__ == "__main__":