ggsn: Submit User Location Information in CreatePDPContextReq

According to TS 29.060, sec 7.3.1 Create PDP Context Request:
"""
The SGSN shall include the User Location Information IE in the PDP
Context Activation procedure. The SGSN shall include the CGI or SAI
in the "Geographic Location" field of the User Location Information
IE depending on whether the MS is in a cell or a service area
respectively.
"""

Change-Id: Iaea95e5779d4f878023ce3f160ac69f092452056
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 94f327e..8f6098a 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -301,11 +301,28 @@
 		return rt;
 	}
 
+	template (value) GeographicLocationCGI
+	ts_GeographicLocationCGI(template (value) hexstring mcc,
+				template (value) hexstring mnc,
+				template (value) OCT2 lac,
+				template (value) OCT2 cI_value) :=
+	{
+		mccDigit1 := mcc[0],
+		mccDigit2 := mcc[1],
+		mccDigit3 := mcc[2],
+		mncDigit3 := mnc[2], /* 'F'H for 2 digit MNC */
+		mncDigit1 := mnc[0],
+		mncDigit2 := mnc[1],
+		lac := lac,
+		cI_value := cI_value
+	}
+
 	template GTPC_PDUs ts_CreatePdpPDU(hexstring imsi, OCT1 restart_ctr, OCT4 teid_data, OCT4 teid_ctrl,
 					   BIT4 nsapi, EndUserAddress eua, octetstring apn,
 					   octetstring sgsn_ip_sign, octetstring sgsn_ip_data,
 					   octetstring msisdn, template ProtConfigOptions pco := omit,
-					   template (omit) OCT1 ratType := omit) := {
+					   template (omit) OCT1 ratType := omit,
+					   template (omit) UserLocationInformation uli := omit) := {
 		createPDPContextRequest := {
 			imsi := ts_Imsi(imsi),
 			rai := omit,
@@ -345,7 +362,7 @@
 			commonFlags := omit,
 			aPN_Restriction := omit,
 			ratType := f_ts_RATType(ratType),
-			userLocationInformation := omit,
+			userLocationInformation := uli,
 			mS_TimeZone := omit,
 			imeisv := omit,
 			camelChargingInformationContainer := omit,
@@ -367,12 +384,13 @@
 						 octetstring apn, octetstring sgsn_ip_sign,
 						 octetstring sgsn_ip_data, octetstring msisdn,
 						 template ProtConfigOptions pco := omit,
-						 template (omit) OCT1 ratType := omit) := {
+						 template (omit) OCT1 ratType := omit,
+						 template (omit) UserLocationInformation uli := 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)), seq)
+								sgsn_ip_data, msisdn, pco, ratType, uli)), seq)
 	}