global gsm_network: move allocation further up

Now that bsc_network_alloc() is separate, move it to before the VTY init (a
subsequent patch will pass the gsm_network instance as a parameter to
vty_init()).

bsc_hack.c: drop the comment that says about the VTY init: "This needs to
precede handle_options()" -- it is not accurate. Actually move the
handle_options() above both vty_init() and the bsc_network_alloc() calls, to be
able to decide which mncc callback to pass to bsc_network_alloc. It would make
sense to set this later on, but that would require further refactoring of the
bsc_network_init() and gsm_network_init() signatures, so not in this patch.

Change-Id: Ie6a7037e703b5a2d08ceeb20d35f197aaddc9d1b
diff --git a/openbsc/src/osmo-nitb/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c
index ccd3b74..c3ecf4c 100644
--- a/openbsc/src/osmo-nitb/bsc_hack.c
+++ b/openbsc/src/osmo-nitb/bsc_hack.c
@@ -270,7 +270,18 @@
 	osmo_stats_init(tall_bsc_ctx);
 	bts_init();
 
-	/* This needs to precede handle_options() */
+	/* Parse options */
+	handle_options(argc, argv);
+
+	/* Allocate global gsm_network struct; choose socket/internal MNCC */
+	rc = bsc_network_alloc(mncc_sock_path?
+			       mncc_sock_from_cc : int_mncc_recv);
+	if (rc) {
+		fprintf(stderr, "Allocation failed. Exiting.\n");
+		exit(1);
+	}
+
+	/* Initialize VTY */
 	vty_init(&vty_info);
 	bsc_vty_init(&log_info, bsc_gsmnet);
 	ctrl_vty_init(tall_bsc_ctx);
@@ -280,25 +291,13 @@
 		return -1;
 #endif
 
-	/* parse options */
-	handle_options(argc, argv);
-
-	/* internal MNCC handler or MNCC socket? */
-	if (mncc_sock_path) {
-		rc = bsc_network_alloc(mncc_sock_from_cc);
-		if (rc) {
-			fprintf(stderr, "Allocation failed. Exiting.\n");
-			exit(1);
-		}
+	/* Initialize MNCC socket if appropriate */
+	if (mncc_sock_path)
 		mncc_sock_init(bsc_gsmnet, mncc_sock_path);
-	} else {
+	else
 		DEBUGP(DMNCC, "Using internal MNCC handler.\n");
-		rc = bsc_network_alloc(int_mncc_recv);
-		if (rc) {
-			fprintf(stderr, "Allocation failed. Exiting.\n");
-			exit(1);
-		}
-	}
+
+	/* Read the config */
 	rc = bsc_network_configure(config_file);
 	if (rc < 0) {
 		fprintf(stderr, "Reading config failed. Exiting.\n");