sgsn: Put SGSN related subscriber data into separate struct

There will be an increasing number of SGSN related fields per
subscriber. Instead of extending gsm_subscriber accordingly, a single
struct sgsn_subscriber_data object is assigned to it. The talloc
context used to allocated that object is the subscr object itself.
Therefore it will be freed automatically along with the subscr
object.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c
index 525bfab..d5c02fd 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -191,7 +191,7 @@
 	if (mm->subscr) {
 		struct gsm_subscriber *subscr =  mm->subscr;
 		mm->subscr = NULL;
-		subscr->mm = NULL;
+		subscr->sgsn_data->mm = NULL;
 		gprs_subscr_delete(subscr);
 	}
 
@@ -477,9 +477,9 @@
 
 	LOGMMCTXP(LOGL_INFO, mmctx, "Subscriber data update");
 
-	if (!subscr->mm && !mmctx->subscr) {
+	if (!subscr->sgsn_data->mm && !mmctx->subscr) {
 		mmctx->subscr =	subscr_get(subscr);
-		mmctx->subscr->mm = mmctx;
+		mmctx->subscr->sgsn_data->mm = mmctx;
 	}
 
 	sgsn_auth_update(mmctx);