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/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged.
Change subject: osmo-stp: Add command line options and daemonize functionality
......................................................................
osmo-stp: Add command line options and daemonize functionality
Change-Id: I267fbe2e5c774960f0b63cfdd9f60df121b4934d
---
M stp/stp_main.c
1 file changed, 75 insertions(+), 6 deletions(-)
Approvals:
Harald Welte: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/stp/stp_main.c b/stp/stp_main.c
index 5412223..3110ec4 100644
--- a/stp/stp_main.c
+++ b/stp/stp_main.c
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
+#include <getopt.h>
#include <osmocom/core/select.h>
#include <osmocom/core/utils.h>
@@ -29,6 +30,7 @@
#include <osmocom/core/application.h>
#include <osmocom/core/fsm.h>
#include <osmocom/vty/vty.h>
+#include <osmocom/vty/command.h>
#include <osmocom/vty/ports.h>
#include <osmocom/vty/telnet_interface.h>
#include <osmocom/vty/logging.h>
@@ -64,25 +66,82 @@
.is_config_node = osmo_ss7_is_config_node,
};
+static struct {
+ bool daemonize;
+ const char *config_file;
+} cmdline_config = {
+ .daemonize = false,
+ .config_file = "osmo-stp.cfg",
+};
+
+static void print_help(void)
+{
+ printf(" -h --help This text.\n");
+ printf(" -D --daemonize Fork teh process into a background daemon\n");
+ printf(" -c --config-file filename The config file to use. Default: ./osmo-stp.cfg\n");
+ printf(" -V --version Print the version of OsmoSTP\n");
+}
+
+static void handle_options(int argc, char **argv)
+{
+ while (1) {
+ int option_index = 0, c;
+ static const struct option long_options[] = {
+ { "help", 0, 0, 'h' },
+ { "daemonize", 0, 0, 'D' },
+ { "config-file", 1, 0, 'c' },
+ { "version", 0, 0, 'V' },
+ { NULL, 0, 0, 0 }
+ };
+
+ c = getopt_long(argc, argv, "hDc:V", long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'h':
+ print_help();
+ exit(0);
+ break;
+ case 'D':
+ cmdline_config.daemonize = true;
+ break;
+ case 'c':
+ cmdline_config.config_file = optarg;
+ break;
+ case 'V':
+ print_version(1);
+ exit(0);
+ break;
+ default:
+ fprintf(stderr, "Error in command line options. Exiting\n");
+ exit(1);
+ break;
+ }
+ }
+}
+
int main(int argc, char **argv)
{
- char *config_file = "osmo-stp.cfg";
int rc;
+
+ osmo_init_logging(&log_info);
+ vty_init(&vty_info);
+
+ handle_options(argc, argv);
fputs(stp_copyright, stdout);
fputs("\n", stdout);
- osmo_init_logging(&log_info);
osmo_ss7_init();
osmo_fsm_log_addr(false);
- vty_init(&vty_info);
logging_vty_add_cmds(&log_info);
osmo_ss7_vty_init_sg();
- rc = vty_read_config_file(config_file, NULL);
+ rc = vty_read_config_file(cmdline_config.config_file, NULL);
if (rc < 0) {
fprintf(stderr, "Failed to parse the config file '%s'\n",
- config_file);
+ cmdline_config.config_file);
exit(1);
}
@@ -92,7 +151,17 @@
exit(1);
}
+ if (cmdline_config.daemonize) {
+ rc = osmo_daemonize();
+ if (rc < 0) {
+ perror("Error during daemonize");
+ exit(1);
+ }
+ }
+
while (1) {
- osmo_select_main(0);
+ rc = osmo_select_main(0);
+ if (rc < 0)
+ exit(3);
}
}
--
To view, visit https://gerrit.osmocom.org/2342
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I267fbe2e5c774960f0b63cfdd9f60df121b4934d
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder