sgsn: First PDP CTX ACT test: TC_attach_pdp_act

Change-Id: Ia1bfaca99a2a70bb097e2ee44f54e4a31b849a1b
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 02a31b6..b64289b 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -280,6 +280,71 @@
 								sgsn_ip_data, msisdn, pco)), seq)
 	}
 
+
+	template NSAPI_GTPC ts_NSAPI(BIT4 nsapi) := {
+		type_gtpc := '14'O,
+		nsapi := nsapi,
+		unused := '0000'B
+	}
+
+	template ReorderingRequired ts_ReorderReq(boolean req := false) := {
+		type_gtpc := '08'O,
+		reordreq := bool2bit(req),
+		spare := '0000000'B
+	}
+
+	template GTPC_PDUs ts_CreatePdpRespPDU(OCT1 cause, OCT4 teid_data, OCT4 teid_ctrl, BIT4 nsapi,
+						octetstring ggsn_ip_sign, octetstring ggsn_ip_data,
+						template EndUserAddress eua := omit,
+						template ProtConfigOptions pco := omit) := {
+		createPDPContextResponse := {
+			cause := { '00'O, cause },
+			reorderingRequired := ts_ReorderReq(false),
+			recovery := omit,
+			teidDataI := {
+				type_gtpc := '00'O,
+				teidDataI := teid_data
+			},
+			teidControlPlane := {
+				type_gtpc := '00'O,
+				teidControlPlane := teid_ctrl
+			},
+			nsapi := ts_NSAPI(nsapi),
+			chargingID := omit,
+			endUserAddress := eua,
+			protConfigOptions := pco,
+			ggsn_addr_controlPlane := ts_GsnAddr(ggsn_ip_sign),
+			ggsn_addr_traffic := ts_GsnAddr(ggsn_ip_data),
+			alt_ggsn_addr_controlPane := omit,
+			alt_ggsn_addr_traffic := omit,
+			qualityOfServiceProfile := ts_QosDefault,
+			commonFlags := omit,
+			aPN_Restriction := omit,
+			mS_InfoChangeReportingAction := omit,
+			bearerControlMode := omit,
+			evolvedAllocationRetentionPriorityI := omit,
+			extendedCommonFlag := omit,
+			csg_information_reporting_action := omit,
+			aPN_AMBR := omit,
+			gGSN_BackOffTime := omit,
+			private_extension_gtpc := omit
+		}
+	}
+
+	template Gtp1cUnitdata ts_GTPC_CreatePdpResp(GtpPeer peer, uint16_t seq, OCT4 teid,
+						 OCT1 cause,
+						 OCT4 teid_ctrl, OCT4 teid_data,
+						 BIT4 nsapi, octetstring ggsn_ip_sign,
+						 octetstring ggsn_ip_data,
+						 template EndUserAddress eua := omit,
+						 template ProtConfigOptions pco := omit) := {
+		peer := peer,
+		gtpc := ts_GTP1C_PDU(createPDPContextResponse, teid,
+					valueof(ts_CreatePdpRespPDU(cause, teid_data, teid_ctrl, nsapi,
+								ggsn_ip_sign, ggsn_ip_data,
+								eua, pco)), seq)
+	}
+
 	/* PCO send base template */
 	template ProtConfigOptions ts_PCO := {
 		type_gtpc := '84'O,