ggsn: Introduce test TC_pdp4_act_update_teid/teic

This test validates that changing the local TEID through UpdatePDPContext
is correctly followed by the GGSN.

Change-Id: Ic6af25866bf7efc2cabf029e49abaf15d5857592
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 0a9c5e9..73d0bf0 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -394,6 +394,73 @@
 	}
 
 
+	template GTPC_PDUs ts_UpdatePdpPDU(hexstring imsi, OCT1 restart_ctr, OCT4 teid_data, OCT4 teid_ctrl,
+					   BIT4 nsapi,
+					   octetstring sgsn_ip_sign, octetstring sgsn_ip_data,
+					   template ProtConfigOptions pco := omit,
+					   template (omit) OCT1 ratType := omit,
+					   template (omit) UserLocationInformation uli := omit) := {
+		updatePDPContextRequest := {
+			updatePDPContextRequestSGSN := {
+				imsi := ts_Imsi(imsi),
+				rai := omit,
+				recovery := ts_Recovery(restart_ctr),
+				teidDataI := {
+					type_gtpc := '00'O,
+					teidDataI := teid_data
+				},
+				teidControlPlane := {
+					type_gtpc := '00'O,
+					teidControlPlane := teid_ctrl
+				},
+				nsapi := {
+					type_gtpc := '00'O,
+					nsapi := nsapi,
+					unused := '0000'B
+				},
+				trace_ref := omit,
+				trace_type := omit,
+				protConfigOptions := pco,
+				sgsn_addr_controlPlane := ts_GsnAddr(sgsn_ip_sign),
+				sgsn_addr_traffic := ts_GsnAddr(sgsn_ip_data),
+				alt_ggsn_addr_controlPane := omit,
+				alt_ggsn_addr_traffic := omit,
+				qualityOfServiceProfile := ts_QosDefault,
+				tft := omit,
+				triggerId := omit,
+				omcId := omit,
+				commonFlags := omit,
+				ratType := f_ts_RATType(ratType),
+				userLocationInformation := uli,
+				mS_TimeZone := omit,
+				additionalTraceInfo := omit,
+				directTunnelFlags := omit,
+				evolvedAllocationRetentionPriorityI := omit,
+				extendedCommonFlags := omit,
+				userCSGInformation := omit,
+				aPN_AMBR := omit,
+				signallingPriorityIndication := omit,
+				cN_OperatorSelectionEntity := omit,
+				private_extension_gtpc := omit
+			}
+		}
+	}
+
+	template Gtp1cUnitdata ts_GTPC_UpdatePDP(GtpPeer peer, OCT4 teid, uint16_t seq, hexstring imsi,
+						 OCT1 restart_ctr, OCT4 teid_data,
+						 OCT4 teid_ctrl, BIT4 nsapi, octetstring sgsn_ip_sign,
+						 octetstring sgsn_ip_data,
+						 template ProtConfigOptions pco := omit,
+						 template (omit) OCT1 ratType := omit,
+						 template (omit) UserLocationInformation uli := omit) := {
+		peer := peer,
+		gtpc := ts_GTP1C_PDU(updatePDPContextRequest, teid,
+					valueof(ts_UpdatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl,
+								nsapi, sgsn_ip_sign,
+								sgsn_ip_data, pco, ratType, uli)), seq)
+	}
+
+
 	template NSAPI_GTPC ts_NSAPI(BIT4 nsapi) := {
 		type_gtpc := '14'O,
 		nsapi := nsapi,