Bash: Process job-specs without cores and drivers
[csit.git] / GPL / traffic_scripts / send_icmp_wait_for_reply.py
index fefa60f..f09287f 100644 (file)
 """Traffic script that sends an IP ICMPv4 or ICMPv6."""
 
 import sys
 """Traffic script that sends an IP ICMPv4 or ICMPv6."""
 
 import sys
-import ipaddress
 
 from scapy.layers.inet import ICMP, IP
 from scapy.layers.inet6 import ICMPv6EchoRequest, ICMPv6EchoReply,\
 
 from scapy.layers.inet import ICMP, IP
 from scapy.layers.inet6 import ICMPv6EchoRequest, ICMPv6EchoReply,\
-    ICMPv6ND_NS, ICMPv6MLReport2
+    ICMPv6ND_NS, ICMPv6MLReport2, ICMPv6ND_RA
 from scapy.layers.l2 import Ether
 from scapy.packet import Raw
 
 from .PacketVerifier import RxQueue, TxQueue
 from .TrafficScriptArg import TrafficScriptArg
 from scapy.layers.l2 import Ether
 from scapy.packet import Raw
 
 from .PacketVerifier import RxQueue, TxQueue
 from .TrafficScriptArg import TrafficScriptArg
-
-
-def valid_ipv4(ip_address):
-    """Check IPv4 address.
-
-    :param ip_address: IPv4 address to check.
-    :type ip_address: str
-    :returns: True if IP address is correct.
-    :rtype: bool
-    :raises AttributeError, AddressValueError: If IP address is not valid.
-    """
-    try:
-        ipaddress.IPv4Address(ip_address)
-        return True
-    except (AttributeError, ipaddress.AddressValueError):
-        return False
-
-
-def valid_ipv6(ip_address):
-    """Check IPv6 address.
-
-    :param ip_address: IPv6 address to check.
-    :type ip_address: str
-    :returns: True if IP address is correct.
-    :rtype: bool
-    :raises AttributeError, AddressValueError: If IP address is not valid.
-    """
-    try:
-        ipaddress.IPv6Address(ip_address)
-        return True
-    except (AttributeError, ipaddress.AddressValueError):
-        return False
+from .ValidIp import valid_ipv4, valid_ipv6
 
 
 def main():
 
 
 def main():
@@ -130,9 +98,12 @@ def main():
                 # read another packet in the queue if the current one is
                 # ICMPv6MLReport2
                 continue
                 # read another packet in the queue if the current one is
                 # ICMPv6MLReport2
                 continue
-            else:
-                # otherwise process the current packet
-                break
+            elif icmp_reply.haslayer(ICMPv6ND_RA):
+                # read another packet in the queue if the current one is
+                # ICMPv6ND_RA
+                continue
+
+            break
 
         if icmp_reply[ip_layer][icmp_resp].type == icmp_type:
             if icmp_reply[ip_layer].src == dst_ip and \
 
         if icmp_reply[ip_layer][icmp_resp].type == icmp_type:
             if icmp_reply[ip_layer].src == dst_ip and \