From 888f6ec15709eb17d79704635d766166307628f8 Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Thu, 20 Oct 2022 09:29:57 -0700 Subject: [PATCH] [tunnel_pkt_handler]: Skip nonexistent intfs (#12424) - Skip the interface status check if the interface does not exist. In the future, when the interface is created/comes up this check will be triggered again. Signed-off-by: Lawrence Lee --- dockers/docker-orchagent/tunnel_packet_handler.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dockers/docker-orchagent/tunnel_packet_handler.py b/dockers/docker-orchagent/tunnel_packet_handler.py index 3d75fdd94a..44dbb19fda 100755 --- a/dockers/docker-orchagent/tunnel_packet_handler.py +++ b/dockers/docker-orchagent/tunnel_packet_handler.py @@ -16,6 +16,7 @@ from swsssdk import ConfigDBConnector, SonicV2Connector from sonic_py_common import logger as log from pyroute2 import IPRoute +from pyroute2.netlink.exceptions import NetlinkError from scapy.layers.inet import IP from scapy.layers.inet6 import IPv6 from scapy.sendrecv import AsyncSniffer @@ -115,7 +116,14 @@ class TunnelPacketHandler(object): portchannel_intf_names = [name for name, _ in self.portchannel_intfs] link_statuses = [] for intf in portchannel_intf_names: - status = self.netlink_api.link("get", ifname=intf) + try: + status = self.netlink_api.link("get", ifname=intf) + except NetlinkError: + # Continue if we find a non-existent interface since we don't + # need to listen on it while it's down/not created. Once it comes up, + # we will get another netlink message which will trigger this check again + logger.log_notice("Skipping non-existent interface {}".format(intf)) + continue link_statuses.append(status[0]) up_portchannels = []