laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-bsc-nat/+/26660 )
Change subject: Add command-line options
......................................................................
Add command-line options
Related: OS#2545
Change-Id: I41bca9e1b88bb130870d078ed3f499e39e0bf5d3
---
M src/osmo-bsc-nat/main.c
1 file changed, 65 insertions(+), 2 deletions(-)
Approvals:
laforge: Looks good to me, approved; Verified
pespin: Looks good to me, but someone else must approve
diff --git a/src/osmo-bsc-nat/main.c b/src/osmo-bsc-nat/main.c
index 813909b..1edc134 100644
--- a/src/osmo-bsc-nat/main.c
+++ b/src/osmo-bsc-nat/main.c
@@ -19,6 +19,8 @@
#include "config.h"
+#include <getopt.h>
+
#include <osmocom/core/application.h>
#include <osmocom/vty/cpu_sched_vty.h>
#include <osmocom/vty/logging.h>
@@ -47,7 +49,59 @@
.go_parent_cb = bsc_nat_vty_go_parent,
};
-static void main_vty_init()
+static struct {
+ const char *config_file;
+} bsc_nat_cmdline_config = {
+ .config_file = "osmo-bsc-nat.cfg",
+};
+
+static void print_help()
+{
+ printf("usage: osmo-bsc-nat <options>\n");
+ printf("\n");
+ printf("optional arguments:\n");
+ printf(" -h, --help show this help message and exit\n");
+ printf(" -c, --config-file the config file to use\n");
+ printf(" -V, --version show version number and exit\n");
+}
+
+static void handle_options(int argc, char **argv)
+{
+ while (1) {
+ int idx = 0, c;
+ static const struct option long_options[] = {
+ {"help", 0, 0, 'h'},
+ {"config-file", 1, 0, 'c'},
+ {"version", 0, 0, 'V' },
+ { 0, 0, 0, 0 },
+ };
+
+ c = getopt_long(argc, argv, "hc:V", long_options, &idx);
+
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'h':
+ print_help();
+ exit(0);
+ break;
+ case 'c':
+ bsc_nat_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;
+ }
+ }
+}
+
+static void main_vty_init(int argc, char **argv)
{
int rc;
@@ -61,6 +115,15 @@
osmo_talloc_vty_add_cmds();
osmo_cpu_sched_vty_init(tall_bsc_nat_ctx);
+ handle_options(argc, argv);
+
+ rc = vty_read_config_file(bsc_nat_cmdline_config.config_file, NULL);
+ if (rc < 0) {
+ fprintf(stderr, "Failed to parse the config file: '%s'\n",
+ bsc_nat_cmdline_config.config_file);
+ exit(1);
+ }
+
rc = telnet_init_dynif(tall_bsc_nat_ctx, g_bsc_nat, vty_get_bind_addr(),
OSMO_VTY_PORT_BSC_NAT);
if (rc < 0) {
perror("Error binding VTY port");
@@ -81,7 +144,7 @@
g_bsc_nat = bsc_nat_alloc(tall_bsc_nat_ctx);
- main_vty_init();
+ main_vty_init(argc, argv);
while (!osmo_select_shutdown_done())
osmo_select_main_ctx(0);
--
To view, visit
https://gerrit.osmocom.org/c/osmo-bsc-nat/+/26660
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc-nat
Gerrit-Branch: master
Gerrit-Change-Id: I41bca9e1b88bb130870d078ed3f499e39e0bf5d3
Gerrit-Change-Number: 26660
Gerrit-PatchSet: 2
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged