GSUP: Fix missing and wrongly sorted IEs in ts_GSUP_IE_PdpInfo

Sort them to follow libosmocore implementation.

Change-Id: I65e586187d7230f122644c101f8467becae6e204
diff --git a/library/GSUP_Templates.ttcn b/library/GSUP_Templates.ttcn
index 7146e97..ea2b489 100644
--- a/library/GSUP_Templates.ttcn
+++ b/library/GSUP_Templates.ttcn
@@ -175,21 +175,23 @@
 	}
 }
 
-template GSUP_IE ts_GSUP_IE_PdpInfo(template (value) octetstring apn,
-				    template (value) GSUP_PDP_Address pdp_address,
-				    template (value) octetstring pdp_qos) := {
+template (value) GSUP_IE ts_GSUP_IE_PdpInfo(template (value) OCT1 ctx_id,
+					    template (value) octetstring apn,
+					    template (value) GSUP_PDP_Address pdp_address,
+					    template (value) octetstring pdp_qos) := {
 	tag := OSMO_GSUP_PDP_INFO_IE,
 	len := 0, /* overwritten */
 	val := {
 		pdp_info := {
-			valueof(ts_GSUP_IE_APN(apn)),
+			valueof(ts_GSUP_IE_PDP_CONTEXT_ID(ctx_id)),
 			valueof(ts_GSUP_IE_PDP_ADDRESS(pdp_address)),
+			valueof(ts_GSUP_IE_APN(apn)),
 			valueof(ts_GSUP_IE_PDP_QOS(pdp_qos))
 		}
 	}
 }
 
-template (value) GSUP_IE ts_GSUP_IE_PDP_CONTEXT_ID(OCT1 ctx_id) := {
+template (value) GSUP_IE ts_GSUP_IE_PDP_CONTEXT_ID(template (value) OCT1 ctx_id) := {
 	tag := OSMO_GSUP_PDP_CONTEXT_ID_IE,
 	len := 0,
 	val := {
@@ -197,7 +199,7 @@
 	}
 }
 
-template GSUP_IE tr_GSUP_IE_PDP_CONTEXT_ID(template OCT1 ctx_id) := {
+template (present) GSUP_IE tr_GSUP_IE_PDP_CONTEXT_ID(template OCT1 ctx_id) := {
 	tag := OSMO_GSUP_PDP_CONTEXT_ID_IE,
 	len := ?,
 	val := {
diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
index 1fd20a5..0824d6e 100644
--- a/sgsn/SGSN_Tests.ttcn
+++ b/sgsn/SGSN_Tests.ttcn
@@ -876,7 +876,7 @@
 private altstep as_gmm_gsup_lu_isd() runs on BSSGP_ConnHdlr {
 	[] GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)) {
 		var GSUP_PDU gsup := valueof(ts_GSUP_ISD_REQ(g_pars.imsi, g_pars.msisdn));
-		gsup.ies := gsup.ies & { valueof(ts_GSUP_IE_PdpInfo(char2oct("*"), ts_EuaIPv4Dyn, ''O)) };
+		gsup.ies := gsup.ies & { valueof(ts_GSUP_IE_PdpInfo('00'O, char2oct("*"), ts_EuaIPv4Dyn, ''O)) };
 		GSUP.send(gsup);
 		GSUP.receive(tr_GSUP_ISD_RES(g_pars.imsi));
 		GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));