[PATCH 2/6] osmo-nitb: add -M to pass specific MNCC socket path

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/OpenBSC@lists.osmocom.org/.

Neels Hofmeyr nhofmeyr at sysmocom.de
Wed Feb 24 19:48:35 UTC 2016


The old -m option without argument is still available and marked deprecated,
to not make users' lives more difficult than necessary.
---
 openbsc/include/openbsc/mncc.h   |  2 +-
 openbsc/src/libmsc/mncc_sock.c   |  9 +++++----
 openbsc/src/osmo-nitb/bsc_hack.c | 17 +++++++++++------
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/openbsc/include/openbsc/mncc.h b/openbsc/include/openbsc/mncc.h
index 10192ad..49f0c8b 100644
--- a/openbsc/include/openbsc/mncc.h
+++ b/openbsc/include/openbsc/mncc.h
@@ -206,7 +206,7 @@ int int_mncc_recv(struct gsm_network *net, struct msgb *msg);
 /* input from CC code into mncc_sock */
 int mncc_sock_from_cc(struct gsm_network *net, struct msgb *msg);
 
-int mncc_sock_init(struct gsm_network *gsmnet);
+int mncc_sock_init(struct gsm_network *net, const char *sock_path);
 
 #define mncc_is_data_frame(msg_type) \
 	(msg_type == GSM_TCHF_FRAME \
diff --git a/openbsc/src/libmsc/mncc_sock.c b/openbsc/src/libmsc/mncc_sock.c
index dd0a44f..6da1c56 100644
--- a/openbsc/src/libmsc/mncc_sock.c
+++ b/openbsc/src/libmsc/mncc_sock.c
@@ -277,7 +277,7 @@ static int mncc_sock_accept(struct osmo_fd *bfd, unsigned int flags)
 }
 
 
-int mncc_sock_init(struct gsm_network *net)
+int mncc_sock_init(struct gsm_network *net, const char *sock_path)
 {
 	struct mncc_sock_state *state;
 	struct osmo_fd *bfd;
@@ -292,10 +292,10 @@ int mncc_sock_init(struct gsm_network *net)
 
 	bfd = &state->listen_bfd;
 
-	rc = osmo_unixsock_listen(bfd, SOCK_SEQPACKET, "/tmp/bsc_mncc");
+	rc = osmo_unixsock_listen(bfd, SOCK_SEQPACKET, sock_path);
 	if (rc < 0) {
-		LOGP(DMNCC, LOGL_ERROR, "Could not create unix socket: %s\n",
-			strerror(errno));
+		LOGP(DMNCC, LOGL_ERROR, "Could not create unix socket: %s: %s\n",
+		     sock_path, strerror(errno));
 		talloc_free(state);
 		return rc;
 	}
@@ -314,6 +314,7 @@ int mncc_sock_init(struct gsm_network *net)
 
 	net->mncc_state = state;
 
+	LOGP(DMNCC, LOGL_NOTICE, "MNCC socket at %s\n", sock_path);
 	return 0;
 }
 
diff --git a/openbsc/src/osmo-nitb/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c
index 8b074f1..3c878a6 100644
--- a/openbsc/src/osmo-nitb/bsc_hack.c
+++ b/openbsc/src/osmo-nitb/bsc_hack.c
@@ -62,7 +62,7 @@ static const char *config_file = "openbsc.cfg";
 static const char *rf_ctrl_name = NULL;
 extern const char *openbsc_copyright;
 static int daemonize = 0;
-static int use_mncc_sock = 0;
+static const char *mncc_sock_path = NULL;
 static int use_db_counter = 1;
 
 /* timer to store statistics */
@@ -103,7 +103,8 @@ static void print_help()
 	printf("  -V --version               Print the version of OpenBSC.\n");
 	printf("  -P --rtp-proxy             Enable the RTP Proxy code inside OpenBSC.\n");
 	printf("  -e --log-level number      Set a global loglevel.\n");
-	printf("  -m --mncc-sock             Disable built-in MNCC handler and offer socket.\n");
+	printf("  -M --mncc-sock-path PATH   Disable built-in MNCC handler and offer socket.\n");
+	printf("  -m --mncc-sock 	     Same as `-M /tmp/bsc_mncc' (deprecated).\n");
 	printf("  -C --no-dbcounter          Disable regular syncing of counters to database.\n");
 	printf("  -r --rf-ctl NAME           A unix domain socket to listen for cmds.\n");
 }
@@ -126,12 +127,13 @@ static void handle_options(int argc, char **argv)
 			{"rtp-proxy", 0, 0, 'P'},
 			{"log-level", 1, 0, 'e'},
 			{"mncc-sock", 0, 0, 'm'},
+			{"mncc-sock-path", 1, 0, 'M'},
 			{"no-dbcounter", 0, 0, 'C'},
 			{"rf-ctl", 1, 0, 'r'},
 			{0, 0, 0, 0}
 		};
 
-		c = getopt_long(argc, argv, "hd:Dsl:ar:p:TPVc:e:mCr:",
+		c = getopt_long(argc, argv, "hd:Dsl:ar:p:TPVc:e:mCr:M:",
 				long_options, &option_index);
 		if (c == -1)
 			break;
@@ -168,8 +170,11 @@ static void handle_options(int argc, char **argv)
 		case 'e':
 			log_set_log_level(osmo_stderr_target, atoi(optarg));
 			break;
+		case 'M':
+			mncc_sock_path = optarg;
+			break;
 		case 'm':
-			use_mncc_sock = 1;
+			mncc_sock_path = "/tmp/bsc_mncc";
 			break;
 		case 'C':
 			use_db_counter = 0;
@@ -275,10 +280,10 @@ int main(int argc, char **argv)
 	handle_options(argc, argv);
 
 	/* internal MNCC handler or MNCC socket? */
-	if (use_mncc_sock) {
+	if (mncc_sock_path) {
 		rc = bsc_bootstrap_network(mncc_sock_from_cc, config_file);
 		if (rc >= 0)
-			mncc_sock_init(bsc_gsmnet);
+			mncc_sock_init(bsc_gsmnet, mncc_sock_path);
 	} else
 		rc = bsc_bootstrap_network(int_mncc_recv, config_file);
 	if (rc < 0)
-- 
2.1.4




More information about the OpenBSC mailing list