epdg: Fix UsernMame being NAI instead of IMSI in S6b AAR

Change-Id: Ifa5b262db40b649c6dfe7b5ac43098208b3e8300
diff --git a/epdg/EPDG_Tests.ttcn b/epdg/EPDG_Tests.ttcn
index a7c9509..e104cdc 100644
--- a/epdg/EPDG_Tests.ttcn
+++ b/epdg/EPDG_Tests.ttcn
@@ -37,6 +37,8 @@
 	integer mp_s6b_local_port := 3869;
 	charstring mp_s6b_remote_ip := "127.0.0.1";
 	integer mp_s6b_remote_port := 3869;
+	/* 3GPP TS 23.003 clause 19: "nai.epc.mnc<MNC>.mcc<MCC>.3gppnetwork.org" */
+	charstring mp_s6b_nai_realm := "nai.epc.mnc001.mcc01.3gppnetwork.org";
 
 	/* our emulated PGW (GTPv2C S2b) */
 	charstring mp_s2b_local_ip := "127.0.0.100";
@@ -332,6 +334,10 @@
 	return vc_conn;
 }
 
+private function f_nai() runs on EPDG_ConnHdlr return charstring {
+	return hex2str(g_pars.imsi) & "@" & mp_s6b_nai_realm;
+}
+
 /* Diameter SWx MAR + MAA. */
 private altstep as_DIA_SWx_MA_success() runs on EPDG_ConnHdlr {
 	var PDU_DIAMETER rx_dia;
@@ -390,7 +396,7 @@
 	 */
 	f_epdg_connhldr_S6b_expect_eteid(ete_id);
 
-	S6b.send(ts_DIA_S6b_AAR(g_pars.imsi,
+	S6b.send(ts_DIA_S6b_AAR(f_nai(),
 				int2oct(DIA_TS29_373_MIP6_Feature_Vector_GTPv2_SUPPORTED, 8),
 				g_pars.apn, hbh_id := hbh_id, ete_id := ete_id));
 
diff --git a/library/DIAMETER_ts29_273_Templates.ttcn b/library/DIAMETER_ts29_273_Templates.ttcn
index 71f6cfc..e3a6c2f 100644
--- a/library/DIAMETER_ts29_273_Templates.ttcn
+++ b/library/DIAMETER_ts29_273_Templates.ttcn
@@ -205,7 +205,7 @@
 
  /* TS 29.273 9.2.2.5.1 AA-Request (AAR) */
 template (value) PDU_DIAMETER
-ts_DIA_S6b_AAR(template (value) hexstring imsi,
+ts_DIA_S6b_AAR(template (value) charstring username_nai,
 	       template (value) MIPv6_NONE_MIP6_Feature_Vector mip6_feat_vec,
 	       template (value) charstring apn,
 	       template (value) octetstring sess_id := c_def_sess_id,
@@ -227,7 +227,7 @@
 			ts_AVP_OriginRealm(orig_realm),
 			ts_AVP_DestinationRealm(dest_realm),
 			ts_AVP_AuthRequestType(AUTHORIZE_ONLY),
-			ts_AVP_UserNameImsi(valueof(imsi)),
+			ts_AVP_UserName(char2oct(valueof(username_nai))),
 			ts_AVP_MIP6FeatureVector(mip6_feat_vec),
 			ts_AVP_ServiceSelection(valueof(apn))
 			/* TODO: Lots other optional */