gsup: Add PCO IE

This commit adds a new file PCO_Types.ttcn which allows generically
encoding decoding PCOs.

Change-Id: I9a1ae74712d6e8e0cd524ccd7fc2529b1a15dd97
diff --git a/library/GSUP_Templates.ttcn b/library/GSUP_Templates.ttcn
index 10c682c..d886088 100644
--- a/library/GSUP_Templates.ttcn
+++ b/library/GSUP_Templates.ttcn
@@ -17,6 +17,7 @@
 
 import from General_Types all;
 import from Osmocom_Types all;
+import from PCO_Types all;
 import from GSUP_Types all;
 
 function f_gsup_postprocess_decoded(inout GSUP_PDU gsup) {
@@ -292,6 +293,14 @@
 	}
 }
 
+template (value) GSUP_IE ts_GSUP_IE_PCO(template (value) PCO_DATA pco) := {
+	tag := OSMO_GSUP_PCO_IE,
+	len := 0,
+	val := {
+		pco := pco
+	}
+}
+
 template GSUP_PDU tr_GSUP(template GSUP_MessageType msgt := ?, template GSUP_IEs ies := *) := {
 	msg_type := msgt,
 	ies := ies
@@ -496,11 +505,13 @@
 
 /* EPDG Tunnel */
 template (value) GSUP_PDU ts_GSUP_EPDGTunnel_REQ(hexstring imsi,
+						 template (value) PCO_DATA pco,
 						 GSUP_Message_Class message_class := OSMO_GSUP_MESSAGE_CLASS_IPSEC_EPDG,
 						 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,
 								 message_class := message_class,
+								 pco := pco,
 								 dom := dom,
 								 source_name := source_name));
 
@@ -1170,6 +1181,7 @@
 			   template (omit) boolean pdp_info_compl := omit,
 			   template (omit) GSUP_Message_Class message_class := omit,
 			   template (omit) hexstring imei := omit,
+			   template (omit) PCO_DATA pco := omit,
 			   template (omit) GSUP_CnDomain dom := omit,
 			   template (omit) octetstring source_name := omit,
 			   template (omit) octetstring destination_name := omit
@@ -1190,6 +1202,10 @@
 		ies := ies & { valueof(ts_GSUP_IE_IMEI(valueof(imei))) };
 	}
 
+	if (isvalue(pco)) {
+		ies := ies & { valueof(ts_GSUP_IE_PCO(valueof(pco))) };
+	}
+
 	if (isvalue(message_class)) {
 		ies := ies & { valueof(ts_GSUP_IE_Message_Class(valueof(message_class))) };
 	}