ggsn: Append IMEISV IE to CreatePdpCtxReq

Change-Id: I00975328e94afd116e59c88fd96c5b0154810a1e
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 0c5c003..22d8632 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -119,6 +119,26 @@
 		restartCounter := restart_counter
 	}
 
+	/* IMEI(SV) IE TS 29.060 7.7.53 */
+	template IMEISV_gtpc ts_IMEISV(template (value) OCT8 imeisv) := {
+		type_gtpc := '9A'O,
+		lengthf := 8,
+		imeisv := imeisv
+	}
+	private function f_ts_IMEISV(template (omit) OCT8 imeisv)
+	return template (omit) IMEISV_gtpc {
+		if (istemplatekind(imeisv, "omit")) {
+			return omit;
+		}
+		return ts_IMEISV(imeisv);
+	}
+
+	template IMEISV_gtpc tr_IMEISV(template (present) OCT8 imeisv) := {
+		type_gtpc := '9A'O,
+		lengthf := 8,
+		imeisv := imeisv
+	}
+
 	/* Charging Characteristics IE TS 29.060 7.7.23 */
 	template ChargingCharacteristics_GTPC ts_ChargingCharacteristics(template (value) OCT2 chargingChar) := {
 		type_gtpc := '1A'O,
@@ -379,7 +399,8 @@
 					   octetstring msisdn, template ProtConfigOptions pco := omit,
 					   template (omit) OCT1 ratType := omit,
 					   template (omit) UserLocationInformation uli := omit,
-					   template (omit) OCT2 charging_char := omit) := {
+					   template (omit) OCT2 charging_char := omit,
+					   template (omit) OCT8 imeisv := omit) := {
 		createPDPContextRequest := {
 			imsi := ts_Imsi(imsi),
 			rai := omit,
@@ -421,7 +442,7 @@
 			ratType := f_ts_RATType(ratType),
 			userLocationInformation := uli,
 			mS_TimeZone := omit,
-			imeisv := omit,
+			imeisv := f_ts_IMEISV(imeisv),
 			camelChargingInformationContainer := omit,
 			additionalTraceInfo := omit,
 			correlationID := omit,
@@ -443,12 +464,14 @@
 						 template ProtConfigOptions pco := omit,
 						 template (omit) OCT1 ratType := omit,
 						 template (omit) UserLocationInformation uli := omit,
-						 template (omit) OCT2 charging_char := omit) := {
+						 template (omit) OCT2 charging_char := omit,
+						 template (omit) OCT8 imeisv := omit) := {
 		peer := peer,
 		gtpc := ts_GTP1C_PDU(createPDPContextRequest, '00000000'O,
 					valueof(ts_CreatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl,
 								nsapi, eua, apn, sgsn_ip_sign,
-								sgsn_ip_data, msisdn, pco, ratType, uli, charging_char)), seq)
+								sgsn_ip_data, msisdn, pco, ratType, uli,
+								charging_char, imeisv)), seq)
 	}