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
# 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,
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__()))
ipv6 = ether['IPv6']
if not ipv6.haslayer(ICMPv6EchoReply):
- rxq._proc.terminate()
raise RuntimeError(
'Unexpected packet with no IPv6 ICMP received {0}'.format(
ipv6.__repr__()))
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__":