msc: Separate as_GSUP_SAI from f_mm_auth

In some cases we might want to match on (and perform) the GSUP
SEND AUTH INFO without also expecting/performing a MM authentication
on the Iu/A interface.  Hence it makes sense to split those two.

Change-Id: I7b298d589930bab976b478ac84553a6352f25c93
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 9fc0616..93a311e 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -379,34 +379,39 @@
 	return l3_info;
 }
 
+altstep as_GSUP_SAI() runs on BSC_ConnHdlr {
+var GSUP_IE auth_tuple;
+[] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)) {
+	if (g_pars.use_umts_aka) {
+		g_pars.vec := f_gen_auth_vec_3g();
+		auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand,
+								g_pars.vec.sres,
+								g_pars.vec.kc,
+								g_pars.vec.ik,
+								g_pars.vec.ck,
+								g_pars.vec.autn,
+								g_pars.vec.res));
+		GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
+	} else {
+		g_pars.vec := f_gen_auth_vec_2g();
+		auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,
+								g_pars.vec.sres,
+								g_pars.vec.kc));
+		GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
+	}
+	}
+}
+
 function f_mm_auth() runs on BSC_ConnHdlr
 {
 	if (g_pars.net.expect_auth) {
-		var GSUP_IE auth_tuple;
-		GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));
-
+		as_GSUP_SAI();
 		if (g_pars.use_umts_aka) {
-			g_pars.vec := f_gen_auth_vec_3g();
-			auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand,
-									g_pars.vec.sres,
-									g_pars.vec.kc,
-									g_pars.vec.ik,
-									g_pars.vec.ck,
-									g_pars.vec.autn,
-									g_pars.vec.res));
-			GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
-
 			BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ_3G(g_pars.vec.rand, g_pars.vec.autn)));
 			var OCT4 res := substr(g_pars.vec.res, 0, 4);
 			var OCT4 xres := substr(g_pars.vec.res, 4, 4);
 			BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_3G(res, xres)));
 		} else {
-			g_pars.vec := f_gen_auth_vec_2g();
-			auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,
-									g_pars.vec.sres,
-									g_pars.vec.kc));
-			GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
-
 			BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(g_pars.vec.rand)));
 			BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G(g_pars.vec.sres)));
 		}