X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftraffic_scripts%2Fipv4_sweep_ping.py;h=cd332d0391d44671550382b5b40740796ee0ff74;hp=4b82a9b03e5bf2fde3dc73068c6d099453050e1d;hb=bc4d98a34af3f26a1c9264758186189f15513a7e;hpb=b92a827b1c7f48da4214e992e5503ebe1c182416 diff --git a/resources/traffic_scripts/ipv4_sweep_ping.py b/resources/traffic_scripts/ipv4_sweep_ping.py index 4b82a9b03e..cd332d0391 100755 --- a/resources/traffic_scripts/ipv4_sweep_ping.py +++ b/resources/traffic_scripts/ipv4_sweep_ping.py @@ -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 + auto_pad, 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 @@ -64,12 +64,10 @@ def main(): 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__":