X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession_node.c;h=f647360ea5b1be9a44fbe633210dfbc6d73daf60;hb=2a8639155a6cbc0f7c412f26af4ad638b12edb73;hp=ce460e9a94cce4a776c953499207c7710be7f583;hpb=f988e696149f42828444c69762c036d9684b6bb0;p=vpp.git diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index ce460e9a94c..f647360ea5b 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -705,6 +705,25 @@ VLIB_REGISTER_NODE (session_queue_node) = }; /* *INDENT-ON* */ +static clib_error_t * +session_queue_exit (vlib_main_t * vm) +{ + if (vec_len (vlib_mains) < 2) + return 0; + + /* + * Shut off (especially) worker-thread session nodes. + * Otherwise, vpp can crash as the main thread unmaps the + * API segment. + */ + vlib_worker_thread_barrier_sync (vm); + session_node_enable_disable (0 /* is_enable */ ); + vlib_worker_thread_barrier_release (vm); + return 0; +} + +VLIB_MAIN_LOOP_EXIT_FUNCTION (session_queue_exit); + /* * fd.io coding-style-patch-verification: ON *