SMPP: Fix crash on delivery of incoming SUBMIT-SM

As bsc_gsmnet is NULL at the time we call smpp_openbsc_init(),
we later run into segfaults with subscribers that don't have a
subscr->net set.

However, we cannot delay smpp_openbsc_init() until after
bsc_bootstrap_network(), as we then fail to parse the SMPP specific
VTY/config file options...
diff --git a/openbsc/src/libmsc/smpp_openbsc.c b/openbsc/src/libmsc/smpp_openbsc.c
index e83fb75..585f939 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -434,18 +434,16 @@
 }
 
 /*! \brief Initialize the OpenBSC SMPP interface */
-int smpp_openbsc_init(struct gsm_network *net, uint16_t port)
+int smpp_openbsc_init(void *ctx, uint16_t port)
 {
-	struct smsc *smsc = talloc_zero(net, struct smsc);
+	struct smsc *smsc = talloc_zero(ctx, struct smsc);
 	int rc;
 
-	smsc->priv = net;
-
 	rc = smpp_smsc_init(smsc, port);
 	if (rc < 0)
 		talloc_free(smsc);
 
-	osmo_signal_register_handler(SS_SMS, smpp_sms_cb, net);
+	osmo_signal_register_handler(SS_SMS, smpp_sms_cb, smsc);
 	osmo_signal_register_handler(SS_SUBSCR, smpp_subscr_cb, smsc);
 
 	g_smsc = smsc;
@@ -454,3 +452,8 @@
 
 	return rc;
 }
+
+void smpp_openbsc_set_net(struct gsm_network *net)
+{
+	g_smsc->priv = net;
+}
diff --git a/openbsc/src/osmo-nitb/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c
index 93630ae..13fa1c5 100644
--- a/openbsc/src/osmo-nitb/bsc_hack.c
+++ b/openbsc/src/osmo-nitb/bsc_hack.c
@@ -263,7 +263,7 @@
 	bsc_vty_init(&log_info);
 
 #ifdef BUILD_SMPP
-	if (smpp_openbsc_init(bsc_gsmnet, 0) < 0)
+	if (smpp_openbsc_init(tall_bsc_ctx, 0) < 0)
 		return -1;
 #endif
 
@@ -279,6 +279,7 @@
 		rc = bsc_bootstrap_network(int_mncc_recv, config_file);
 	if (rc < 0)
 		exit(1);
+	smpp_openbsc_set_net(bsc_gsmnet);
 	bsc_api_init(bsc_gsmnet, msc_bsc_api());
 
 	bsc_gsmnet->ctrl = controlif_setup(bsc_gsmnet, 4249);