GSUP_Types: Add EDPG_Tunnel messages

Change-Id: Iadba149e6d299e5e666b2debdc23a00d37e78da5
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 739dcbc..c3563bc 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -138,7 +138,11 @@
 	OSMO_GSUP_MSGT_E_CLOSE					('01000111'B),
 	OSMO_GSUP_MSGT_E_ABORT					('01001011'B),
 
-	OSMO_GSUP_MSGT_E_ROUTING_ERROR				('01001110'B)
+	OSMO_GSUP_MSGT_E_ROUTING_ERROR				('01001110'B),
+
+	OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST			('01010000'B),
+	OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR			('01010001'B),
+	OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT			('01010010'B)
 } with { variant "FIELDLENGTH(8)" };
 
 type enumerated GSUP_CancelType {
@@ -687,6 +691,32 @@
 	tr_GSUP(OSMO_GSUP_MSGT_CHECK_IMEI_ERROR, f_gen_tr_ies(imsi, cause := cause, destination_name := destination_name));
 
 
+/* EPDG Tunnel */
+template (value) GSUP_PDU ts_GSUP_EPDGTunnel_REQ(hexstring imsi, GSUP_CnDomain dom := OSMO_GSUP_CN_DOMAIN_PS,
+					 template (omit) octetstring source_name := omit) :=
+	ts_GSUP(OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST, f_gen_ts_ies(imsi, dom := dom,
+								     source_name := source_name));
+
+template (present) GSUP_PDU tr_GSUP_EPDGTunnel_REQ(template (present) hexstring imsi := ?) :=
+	tr_GSUP_IMSI(OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST, imsi);
+
+template (value) GSUP_PDU ts_GSUP_EPDGTunnel_RES(hexstring imsi, octetstring destination_name := ''O) :=
+	ts_GSUP(OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT, { valueof(ts_GSUP_IE_IMSI(imsi)),
+			valueof(ts_GSUP_IE_Destination_Name(destination_name))});
+
+template (present) GSUP_PDU tr_GSUP_EPDGTunnel_RES(template (present) hexstring imsi, template octetstring destination_name := omit) :=
+	tr_GSUP(OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT, f_gen_tr_ies(imsi, destination_name := destination_name));
+
+template (value) GSUP_PDU ts_GSUP_EPDGTunnel_ERR(hexstring imsi, integer cause) :=
+	ts_GSUP(OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR, {
+			valueof(ts_GSUP_IE_IMSI(imsi)), valueof(ts_GSUP_IE_Cause(cause)) });
+
+template (present) GSUP_PDU tr_GSUP_EPDGTunnel_ERR(template (present) hexstring imsi, template (present) integer cause := ?,
+		template octetstring destination_name := omit) :=
+	tr_GSUP(OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR,
+		f_gen_tr_ies(imsi, cause := cause, destination_name := destination_name));
+
+
 template (value) GSUP_IE ts_GSUP_IE_CancelType(GSUP_CancelType ctype) := {
 	tag := OSMO_GSUP_CANCEL_TYPE_IE,
 	len := 0, /* overwritten */