#!/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
#
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
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)
)
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)