From 4fa3aad33fffadec7b7614dc68c8f1d3d9f311c9 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 4 Aug 2020 15:26:16 -0500 Subject: ip-neighbor: skip probe for disabled interfaces Type: fix In ip6_neighbor_probe(), if the interface is not enabled for ip6, return NULL and skip trying to build a packet. If the interface is not enabled, its mcast adjacency will be set to ~0 and a seg fault will ensue. Change-Id: I825c9f40a0d5b2a77f788ac8dbd618138706383d Signed-off-by: Matthew Smith --- src/vnet/ip-neighbor/ip6_neighbor.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/vnet/ip-neighbor/ip6_neighbor.h') diff --git a/src/vnet/ip-neighbor/ip6_neighbor.h b/src/vnet/ip-neighbor/ip6_neighbor.h index 934a2885ee1..7f76efd2c86 100644 --- a/src/vnet/ip-neighbor/ip6_neighbor.h +++ b/src/vnet/ip-neighbor/ip6_neighbor.h @@ -54,6 +54,12 @@ ip6_neighbor_probe (vlib_main_t * vm, if (!h0) return NULL;; + /* if the interface has been disabled for ip6, later steps to retrieve + * an adjacency will result in a segv. + */ + if (!ip6_link_is_enabled (adj->rewrite_header.sw_if_index)) + return NULL; + b0 = vlib_get_buffer (vm, bi0); hw_if0 = vnet_get_sup_hw_interface (vnm, adj->rewrite_header.sw_if_index); -- cgit 1.2.3-korg