This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
osmith gerrit-no-reply at lists.osmocom.orgosmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/24926 ) Change subject: vty: add "shutdown" ...................................................................... vty: add "shutdown" Call osmo_select_shutdown_request() internally after user runs the new shutdown command. Lots of Osmocom applications don't use the osmo_select_shutdown_done() command in their main loop (e.g. OsmoMSC, OsmoHLR, ...) so add a code path for that case. Closes: OS#4609 Change-Id: I3596a35b0f4a24e49484ec3f24a98e4d4f583e1e --- M src/select.c M src/vty/command.c 2 files changed, 30 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/26/24926/1 diff --git a/src/select.c b/src/select.c index f7eb5ea..843bda4 100644 --- a/src/select.c +++ b/src/select.c @@ -73,6 +73,11 @@ static int _osmo_select_shutdown_requested = 0; /*! See osmo_select_shutdown_request() */ static bool _osmo_select_shutdown_done = false; +/*! For proper shutdown handling we expect osmo_select_shutdown_done() to be + * called in a program's main loop and clean up done afterwards. If the + * function never gets called, the VTY command "shutdown" needs to call exit() + * instead. */ +bool _osmo_select_shutdown_done_called = false; /*! Set up an osmo-fd. Will not register it. * \param[inout] ofd Osmo FD to be set-up @@ -661,6 +666,7 @@ /*! Return true after osmo_select_shutdown_requested() was called, and after an osmo_select poll loop found no more * pending OSMO_FD_WRITE on any registered socket. */ bool osmo_select_shutdown_done() { + _osmo_select_shutdown_done_called = true; return _osmo_select_shutdown_done; }; diff --git a/src/vty/command.c b/src/vty/command.c index e747add..fdc19ed 100644 --- a/src/vty/command.c +++ b/src/vty/command.c @@ -45,6 +45,8 @@ #include <osmocom/vty/vty.h> #include <osmocom/vty/command.h> +#include <osmocom/core/logging.h> +#include <osmocom/core/select.h> #include <osmocom/core/talloc.h> #include <osmocom/core/utils.h> @@ -61,6 +63,8 @@ #define CONFIGFILE_MASK 022 +extern bool _osmo_select_shutdown_done_called; + void *tall_vty_cmd_ctx; /* When cmd_init() was called, for the "show uptime". */ @@ -3021,6 +3025,25 @@ return CMD_SUCCESS; } +DEFUN(shutdown, + shutdown_cmd, "shutdown", "Request a graceful shutdown of the program\n") +{ + LOGP(DLGLOBAL, LOGL_INFO, "Shutdown requested from telnet\n"); + vty_out(vty, "%s is shutting down. Bye!%s", host.app_info->name, VTY_NEWLINE); + osmo_select_shutdown_request(); + + /* Call exit() from here if program won't stop on its own */ + if (!_osmo_select_shutdown_done_called) { + LOGP(DLGLOBAL, LOGL_INFO, "Skipping %s main loop during shutdown\n", host.app_info->name); + + while (!osmo_select_shutdown_done()) + osmo_select_main_ctx(0); + + exit(0); + } + return CMD_SUCCESS; +} + /* Show version. */ DEFUN(show_version, show_version_cmd, "show version", SHOW_STR "Displays program version\n") @@ -4392,6 +4415,7 @@ install_lib_element(ENABLE_NODE, &config_disable_cmd); install_lib_element(ENABLE_NODE, &config_terminal_cmd); install_lib_element(ENABLE_NODE, ©_runningconfig_startupconfig_cmd); + install_lib_element(ENABLE_NODE, &shutdown_cmd); } install_lib_element(ENABLE_NODE, &show_startup_config_cmd); install_lib_element(ENABLE_NODE, &show_version_cmd); -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/24926 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I3596a35b0f4a24e49484ec3f24a98e4d4f583e1e Gerrit-Change-Number: 24926 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210712/7064f5b8/attachment.htm>