X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=GPL%2Ftraffic_scripts%2Fgeneve_tunnel.py;h=be9502c2d46d19a7a84d2de4b3eac4ed06630443;hb=b67b82c15d7d0da402df180b0aaab3daa4cfc76c;hp=2fec3b0ac676ba75ef983db73175a9d6003bafff;hpb=0bb14d79edb065bc97fdd11a7bfa7d1605266e08;p=csit.git diff --git a/GPL/traffic_scripts/geneve_tunnel.py b/GPL/traffic_scripts/geneve_tunnel.py index 2fec3b0ac6..be9502c2d4 100644 --- a/GPL/traffic_scripts/geneve_tunnel.py +++ b/GPL/traffic_scripts/geneve_tunnel.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Copyright (c) 2020 Cisco and/or its affiliates. +# Copyright (c) 2021 Cisco and/or its affiliates. # # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later # @@ -30,7 +30,7 @@ import sys from ipaddress import ip_address from scapy.contrib.geneve import GENEVE from scapy.layers.inet import IP, UDP -from scapy.layers.inet6 import IPv6, ICMPv6ND_NS +from scapy.layers.inet6 import IPv6, ICMPv6ND_NS, ICMPv6MLReport2, ICMPv6ND_RA from scapy.layers.l2 import Ether from scapy.packet import Raw @@ -280,13 +280,21 @@ def main(): if rx_pkt_recv.haslayer(ICMPv6ND_NS): # read another packet in the queue if the current one is ICMPv6ND_NS continue - else: - # otherwise process the current packet - break + elif rx_pkt_recv.haslayer(ICMPv6MLReport2): + # read another packet in the queue if the current one is + # ICMPv6MLReport2 + continue + elif rx_pkt_recv.haslayer(ICMPv6ND_RA): + # read another packet in the queue if the current one is + # ICMPv6ND_RA + continue + + # otherwise process the current packet + break check_geneve( rx_pkt_recv, ip_layer, rx_src_mac, rx_dst_mac, geneve_tunnel_mac, - rx_src_mac, tun_local_ip, tun_remote_ip, str(src_ip), str(dst_ip), + rx_dst_mac, tun_local_ip, tun_remote_ip, str(src_ip), str(dst_ip), geneve_udp_dport, int(tun_vni) ) @@ -333,9 +341,16 @@ def main(): if tx_pkt_recv.haslayer(ICMPv6ND_NS): # read another packet in the queue if the current one is ICMPv6ND_NS continue - else: - # otherwise process the current packet - break + elif tx_pkt_recv.haslayer(ICMPv6MLReport2): + # read another packet in the queue if the current one is + # ICMPv6MLReport2 + continue + elif tx_pkt_recv.haslayer(ICMPv6ND_RA): + # read another packet in the queue if the current one is + # ICMPv6ND_RA + continue + + break check_ip( tx_pkt_recv, ip_layer, tx_dst_mac, tx_src_mac, str(dst_ip), str(src_ip)