X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftraffic_scripts%2Fipfix_check.py;h=f5693cc7e8373fcbd51a797be4b1fce76a2d1a83;hp=14b5a074dba7becf46a4d69ed1d97b34be2b9937;hb=eecad36d7d2275fa47fbcab40dbcf56108ab0a51;hpb=f2711a847cd8de8dadce1049747e78f96bcae031 diff --git a/resources/traffic_scripts/ipfix_check.py b/resources/traffic_scripts/ipfix_check.py index 14b5a074db..f5693cc7e8 100755 --- a/resources/traffic_scripts/ipfix_check.py +++ b/resources/traffic_scripts/ipfix_check.py @@ -16,15 +16,16 @@ """Traffic script - IPFIX listener.""" import sys -from ipaddress import IPv4Address, IPv6Address, AddressValueError +from ipaddress import IPv4Address, IPv6Address, AddressValueError from scapy.layers.inet import IP, TCP, UDP from scapy.layers.inet6 import IPv6 from scapy.layers.l2 import Ether -from resources.libraries.python.IPFIXUtil import IPFIXHandler, IPFIXData from resources.libraries.python.PacketVerifier import RxQueue, TxQueue, auto_pad from resources.libraries.python.TrafficScriptArg import TrafficScriptArg +from resources.libraries.python.telemetry.IPFIXUtil import IPFIXHandler +from resources.libraries.python.telemetry.IPFIXUtil import IPFIXData def valid_ipv4(ip): @@ -81,7 +82,6 @@ def main(): rxq = RxQueue(tx_if) # generate simple packet based on arguments - ip_version = None if valid_ipv4(src_ip) and valid_ipv4(dst_ip): ip_version = IP elif valid_ipv6(src_ip) and valid_ipv6(dst_ip): @@ -117,19 +117,17 @@ def main(): # allow scapy to recognize IPFIX headers and templates ipfix = IPFIXHandler() - - # clear receive buffer - while True: - pkt = rxq.recv(1, ignore=ignore, verbose=verbose) - if pkt is None: - break - data = None # get IPFIX template and data while True: - pkt = rxq.recv(5) + pkt = rxq.recv(10, ignore=ignore, verbose=verbose) if pkt is None: raise RuntimeError("RX timeout") + + if pkt.haslayer("ICMPv6ND_NS"): + # read another packet in the queue if the current one is ICMPv6ND_NS + continue + if pkt.haslayer("IPFIXHeader"): if pkt.haslayer("IPFIXTemplate"): # create or update template for IPFIX data packets @@ -145,9 +143,9 @@ def main(): # verify packet count if data["packetTotalCount"] != count: - raise RuntimeError( - "IPFIX reported wrong packet count. Count was {0}," - " but should be {1}".format(data["packetTotalCount"], count)) + raise RuntimeError("IPFIX reported wrong packet count. Count was {0}," + "but should be {1}".format(data["packetTotalCount"], + count)) # verify IP addresses keys = data.keys() err = "{0} mismatch. Packets used {1}, but were classified as {2}." @@ -194,5 +192,4 @@ def main(): if __name__ == "__main__": - main()