aboutsummaryrefslogtreecommitdiffstats
path: root/resources/traffic_scripts/check_ra_packet.py
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2016-09-06 09:43:56 +0200
committerMatej Klotton <mklotton@cisco.com>2016-09-14 14:13:30 +0000
commit6d104077b5a6a8a0595001ecf051f63c651c131e (patch)
tree0a57637bd3bca4ae9f72ea2885b0b669ed183148 /resources/traffic_scripts/check_ra_packet.py
parent4fd732ead033453ce0c14a97f42d735cbd7de973 (diff)
CSIT-241: IPv6 Router Advertisement
- add traffic script to verify Router Solicitation response - add keyword to execute traffic script - add test case 02: retransmit RA message after set interval - add test case 03: respond to RS request Change-Id: I83d742713ae42d0a1baacf460c29c06d32669b9a Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/traffic_scripts/check_ra_packet.py')
-rwxr-xr-xresources/traffic_scripts/check_ra_packet.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/resources/traffic_scripts/check_ra_packet.py b/resources/traffic_scripts/check_ra_packet.py
index d95ef2d2f5..231e07da11 100755
--- a/resources/traffic_scripts/check_ra_packet.py
+++ b/resources/traffic_scripts/check_ra_packet.py
@@ -49,13 +49,14 @@ def main():
part.
"""
- args = TrafficScriptArg(['src_mac'])
+ args = TrafficScriptArg(['src_mac', 'interval'])
rx_if = args.get_arg('rx_if')
src_mac = args.get_arg('src_mac')
+ interval = int(args.get_arg('interval'))
rxq = RxQueue(rx_if)
- ether = rxq.recv(8)
+ ether = rxq.recv(max(5, interval))
# Check whether received packet contains layer RA and check other values
if ether is None:
@@ -65,14 +66,19 @@ def main():
raise RuntimeError('Not an RA packet received {0}'
.format(ether.__repr__()))
- address = ipaddress.IPv6Address(unicode(ether['IPv6'].src))
+ src_address = ipaddress.IPv6Address(unicode(ether['IPv6'].src))
+ dst_address = ipaddress.IPv6Address(unicode(ether['IPv6'].dst))
link_local = ipaddress.IPv6Address(unicode(mac_to_ipv6_linklocal(src_mac)))
+ all_nodes_multicast = ipaddress.IPv6Address(u'ff02::1')
- if address != link_local:
+ if src_address != link_local:
raise RuntimeError(
'Source address ({0}) not matching link local address({1})'.format(
- address, link_local))
-
+ src_address, link_local))
+ if dst_address != all_nodes_multicast:
+ raise RuntimeError('Packet destination address ({0}) is not the all '
+ 'nodes multicast address ({1}).'.format(
+ dst_address, all_nodes_multicast))
if ether['IPv6'].hlim != 255:
raise RuntimeError('Hop limit not correct: {0}!=255'.format(
ether['IPv6'].hlim))