diff options
author | Matthew Smith <mgsmith@netgate.com> | 2020-10-12 15:04:39 -0500 |
---|---|---|
committer | Matthew Smith <mgsmith@netgate.com> | 2020-10-12 15:34:23 -0500 |
commit | 3a97a456ab27d21d7b25bb5505d93b0d96ab4cab (patch) | |
tree | b1bd0760e74929a61d66aa38377629ef183c1648 | |
parent | 8c6988797e2a5d6da87fa73fee833ff3776b156b (diff) |
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 <mgsmith@netgate.com>
-rw-r--r-- | src/vnet/l2/l2_fib.c | 2 |
1 files changed, 2 insertions, 0 deletions
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 (); |