From: Matthew Smith Date: Mon, 12 Oct 2020 20:04:39 +0000 (-0500) Subject: l2: mark l2 fib uninitialized after clearing X-Git-Tag: v21.06-rc0~372 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=3a97a456ab27d21d7b25bb5505d93b0d96ab4cab;p=vpp.git l2: mark l2 fib uninitialized after clearing Type: fix After clearing the l2fib with 'vppctl clear l2fib', a SEGV occurs the next time a MAC address is learned. In l2fib_clear_table(), the l2fib bihash is freed and then l2fib_table_init() is called to reinitialize it. l2fib_table_init() will not do anything if l2fib_main.mac_table_initialized is set to 1. Reset the value of l2fib_main.mac_table_initialized to 0 before calling l2fib_table_init(). Change-Id: I87f1a3f9a46c951f36c1c0a5ab795b0ec08c81a8 Signed-off-by: Matthew Smith --- diff --git a/src/vnet/l2/l2_fib.c b/src/vnet/l2/l2_fib.c index bb4d61404a2..c28c23bc41c 100644 --- a/src/vnet/l2/l2_fib.c +++ b/src/vnet/l2/l2_fib.c @@ -388,6 +388,8 @@ l2fib_clear_table (void) if (mp->mac_table_initialized == 0) return; + mp->mac_table_initialized = 0; + /* Remove all entries */ BV (clib_bihash_free) (&mp->mac_table); l2fib_table_init ();