sgsn: First PDP CTX ACT test: TC_attach_pdp_act

Change-Id: Ia1bfaca99a2a70bb097e2ee44f54e4a31b849a1b
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 0a21999..5e6b20a 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -105,7 +105,12 @@
 				 msisdn, tag = OSMO_GSUP_MSISDN_IE;
 				 hlr_number, tag = OSMO_GSUP_HLR_NUMBER_IE;
 				 cn_domain, tag = OSMO_GSUP_CN_DOMAIN_IE;
-				 charg_char, tag = OSMO_GSUP_CHARG_CHAR_IE)"
+				 pdp_info, tag = OSMO_GSUP_PDP_INFO_IE;
+				 apn, tag = OSMO_GSUP_ACCESS_POINT_NAME_IE;
+				 pdp_qos, tag = OSMO_GSUP_PDP_QOS_IE;
+				 pdp_type, tag = OSMO_GSUP_PDP_TYPE_IE;
+				 charg_char, tag = OSMO_GSUP_CHARG_CHAR_IE;
+			)"
 };
 
 type record of GSUP_IE GSUP_IEs;
@@ -116,7 +121,6 @@
 	GSUP_CancelType	cancel_type,
 	//boolean		pdp_info_compl,
 	//boolean		freeze_ptmsi,
-	GSUP_IEs	pdp_info,
 	GSUP_IEs	auth_tuple,
 	octetstring	auts,
 	octetstring	rand,
@@ -129,6 +133,11 @@
 	GSUP_MSISDN	msisdn,
 	octetstring	hlr_number,
 	GSUP_CnDomain	cn_domain,
+	/* PDP context + nested IEs */
+	GSUP_IEs	pdp_info,
+	octetstring	apn,
+	octetstring	pdp_qos,
+	OCT2		pdp_type,
 	octetstring	charg_char
 };
 
@@ -217,6 +226,35 @@
 	}
 }
 
+template GSUP_IE ts_GSUP_IE_PdpInfo(octetstring apn, octetstring pdp_type, 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_TYPE(pdp_type)),
+			valueof(ts_GSUP_IE_PDP_QOS(pdp_qos))
+		}
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_PDP_TYPE(OCT2 pdp_type) := {
+	tag := OSMO_GSUP_PDP_TYPE_IE,
+	len := 0,
+	val := {
+		pdp_type := pdp_type
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_PDP_QOS(octetstring pdp_qos) := {
+	tag := OSMO_GSUP_PDP_QOS_IE,
+	len := 0,
+	val := {
+		pdp_qos := pdp_qos
+	}
+}
+
+
 template GSUP_PDU tr_GSUP(template GSUP_MessageType msgt := ?, template GSUP_IEs ies := *) := {
 	msg_type := msgt,
 	ies := ies
@@ -428,6 +466,14 @@
 	}
 }
 
+template (value) GSUP_IE ts_GSUP_IE_APN(octetstring apn) := {
+	tag := OSMO_GSUP_ACCESS_POINT_NAME_IE,
+	len := 0, /* overwritten */
+	val := {
+		apn := apn
+	}
+}
+
 
 
 } with { encode "RAW"; variant "FIELDORDER(msb)" }