aboutsummaryrefslogtreecommitdiffstats
path: root/library/GTPv2_Templates.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/GTPv2_Templates.ttcn')
-rw-r--r--library/GTPv2_Templates.ttcn481
1 files changed, 403 insertions, 78 deletions
diff --git a/library/GTPv2_Templates.ttcn b/library/GTPv2_Templates.ttcn
index 3d690175..752e85cd 100644
--- a/library/GTPv2_Templates.ttcn
+++ b/library/GTPv2_Templates.ttcn
@@ -106,7 +106,7 @@ template (present) PDU_GTPCv2 tr_PDU_GTP2C_msgtypes(template (present) OCT1 type
version := '010'B,
messageType := types,
lengthf := ?,
- tEID := ?,
+ tEID := *,
sequenceNumber := ?,
spare3 := '00'O,
gtpcv2_pdu := ?,
@@ -126,7 +126,7 @@ template (present) IMSI tr_GTP2C_Imsi(template (present) hexstring imsi) := {
lengthIndicator := ?,
instance := ?,
spare := '0000'B,
- iMSI_Value := imsi
+ iMSI_Value := f_pad_bcd_number_tmpl(imsi)
}
template (present) MSISDN ts_GTP2C_msisdn(template (present) hexstring msisdn) := {
@@ -145,30 +145,39 @@ template (omit) MSISDN {
}
}
-
/* 8.4-1 */
-/*
type enumerated GTP2C_Cause {
Local_Detach (2),
Complete_Detach (3),
RAT_changed_from_3GPP_to_Non_3GPP (4),
ISR_deactivation (5),
- Error_Ind_from_RNC_eNB_SGSN_MME (5),
+ Error_Ind_from_RNC_eNB_SGSN_MME (6),
IMSI_Detach_Only (7),
Reactivation_Required (8),
-}
-*/
-
-const integer c_GTP2C_Cause_LocalDetach := 1;
+ PDN_reconnection_to_APN_disallowed (9),
+ Access_changed_from_Non_3GPP_to_3GPP (10),
+ PDN_connection_inactivity_timer_expires (11),
+ PGW_not_responding (12),
+ Network_Failure (13),
+ QoS_parameter_mismatch (14),
+ EPS_to_5GS_Mobility (15),
+ Request_accepted (16),
+ Request_accepted_partially (17),
+ New_PDN_type_due_to_network_preference (18),
+ New_PDN_type_due_to_single_address_bearer_only (19),
+ /* ... */
+ Context_Not_Found (64),
+ APN_access_denied__no_subscription (93)
+} with { variant "FIELDLENGTH(8)" encode "RAW" };
/* 8.4 */
-template (value) Cause ts_GTP2C_Cause(template (value) OCT1 cause,
+template (value) Cause ts_GTP2C_Cause(template (value) GTP2C_Cause cause,
template (value) BIT1 cs) := {
elementIdentifier := '02'O,
lengthIndicator := 0, /* overwritten */
instance := '0000'B,
spare := '0000'B,
- causeValue := cause,
+ causeValue := int2oct(enum2int(valueof(cause)), 1),
cS := cs,
bCE := '0'B,
pCE := '0'B,
@@ -178,12 +187,24 @@ template (value) Cause ts_GTP2C_Cause(template (value) OCT1 cause,
instanceOfOffendingIE := omit,
spare3 := omit
}
-template (present) Cause tr_GTP2C_Cause(template (present) OCT1 cause) := {
+private function enum2int_GTP2C_Cause_tmpl(template GTP2C_Cause inp) return template integer
+{
+ if (istemplatekind(inp, "omit")) {
+ return omit;
+ } else if (istemplatekind(inp, "*")) {
+ return *;
+ } else if (istemplatekind(inp, "?")) {
+ return ?;
+ } else {
+ return enum2int(valueof(inp));
+ }
+}
+template (present) Cause tr_GTP2C_Cause(template (present) GTP2C_Cause cause) := {
elementIdentifier := '02'O,
lengthIndicator := ?,
instance := ?,
spare := '0000'B,
- causeValue := cause,
+ causeValue := int2oct_tmpl(enum2int_GTP2C_Cause_tmpl(cause), 1),
cS := ?,
bCE := ?,
pCE := ?,
@@ -193,7 +214,7 @@ template (present) Cause tr_GTP2C_Cause(template (present) OCT1 cause) := {
instanceOfOffendingIE := *,
spare3 := *
}
-private function fs_GTP2C_Cause(template (omit) OCT1 cause, template (value) BIT1 cs) return
+private function fs_GTP2C_Cause(template (omit) GTP2C_Cause cause, template (value) BIT1 cs) return
template (omit) Cause {
if (istemplatekind(cause, "omit")) {
return omit;
@@ -201,7 +222,7 @@ template (omit) Cause {
return ts_GTP2C_Cause(cause, cs);
}
}
-private function fr_GTP2C_Cause(template OCT1 cause) return
+private function fr_GTP2C_Cause(template GTP2C_Cause cause) return
template Cause {
if (istemplatekind(cause, "omit")) {
return omit;
@@ -213,16 +234,16 @@ template Cause {
}
-/* 8.5 */
+/* 8.6 */
template (value) AccessPointName ts_GTP2C_APN(template (value) octetstring apn) := {
- elementIdentifier := '48'O,
+ elementIdentifier := '47'O,
lengthIndicator := 0, /* overwritten */
instance := '0000'B,
spare := '0000'B,
aPN_Value := apn
}
template (present) AccessPointName tr_GTP2C_APN(template (present) octetstring apn) := {
- elementIdentifier := '48'O,
+ elementIdentifier := '47'O,
lengthIndicator := ?,
instance := ?,
spare := '0000'B,
@@ -262,7 +283,73 @@ tr_GTP2C_EpsBearerId(template (present) uint4_t bid) := {
additionalOctets := *
}
+/* 8.12 */
+template (present) Indication
+tr_GTP2C_Indication(template (present) BIT1 oI := ?) := {
+ elementIdentifier := '4D'O,
+ lengthIndicator := ?,
+ instance := '0000'B,
+ spare := '0000'B,
+ sGWCI := ?,
+ iSRAI := ?,
+ iSRSI := ?,
+ oI := oI,
+ dFI := ?,
+ hI := ?,
+ dTF := ?,
+ dAF := ?,
+ mSV := ?,
+ sI := ?,
+ pT := ?,
+ pBit := ?,
+ cRSI := ?,
+ cFSI := ?,
+ uIMSI := ?,
+ sQCI := ?,
+ cCRSI := *,
+ iSRAU := *,
+ mBMDT := *,
+ s4AF := *,
+ s6AF := *,
+ sRNI := *,
+ pBIC := *,
+ retLoc := *,
+ cPSR := *,
+ cLII := *,
+ cSFBI := *,
+ pPSI := *,
+ pPON_PPEI := *,
+ pPOF := *,
+ aRRL := *,
+ cPRAI := *,
+ aOPI := *,
+ aOSI := *,
+ pCRI := *,
+ pSCI := *,
+ bDWI := *,
+ dTCI := *,
+ uASI := *,
+ nSI := *,
+ wPMSI := *,
+ uNACCSI := *,
+ pNSI := *,
+ s11TF := *,
+ pMTSMI := *,
+ cPOPCI := *,
+ ePCOSI := *,
+ rOAAI := *,
+ tSPCMI := *,
+ spare_1 := *,
+ spare_2 := *,
+ spare_3 := *,
+ spare_4 := *,
+ spare_5 := *,
+ spare_6 := *,
+ spare_7 := *,
+
+ additionalOctets := *
+}
/* 8.14 */
template (value) PDN_AddressAllocation
@@ -320,8 +407,22 @@ ts_GTP2C_BearerQos(template (value) OCT1 qci,
}
/* 8.17 */
+type enumerated GTP2C_RAT_Type {
+ GTP2C_RAT_reserved ('00'O),
+ GTP2C_RAT_UTRAN ('01'O),
+ GTP2C_RAT_GERAN ('02'O),
+ GTP2C_RAT_WLAN ('03'O),
+ GTP2C_RAT_GAN ('04'O),
+ GTP2C_RAT_HSPA_EVOLUTION ('05'O),
+ GTP2C_RAT_EUTRAN ('06'O),
+ GTP2C_RAT_Virtual ('07'O),
+ GTP2C_RAT_EUTRAN_NB_IoT ('08'O),
+ GTP2C_RAT_LTE_M ('09'O),
+ GTP2C_RAT_NR ('0A'O)
+} with { variant "FIELDLENGTH(8)" encode "RAW" };
+
template (value) RAT_Type ts_GTP2C_RatType(template (value) integer rat) := {
- elementIdentifier := '53'O,
+ elementIdentifier := '52'O,
lengthIndicator := 0, /* overwritten */
instance := '0000'B,
spare := '0000'B,
@@ -329,7 +430,7 @@ template (value) RAT_Type ts_GTP2C_RatType(template (value) integer rat) := {
additionalOctets := omit
}
template (present) RAT_Type tr_GTP2C_RatType(template (present) integer rat) := {
- elementIdentifier := '53'O,
+ elementIdentifier := '52'O,
lengthIndicator := ?,
instance := ?,
spare := '0000'B,
@@ -484,6 +585,25 @@ tr_GTP2C_FTEID(template (present) integer if_type, template (present) OCT4 teid,
}
/* 8.28 */
+template (value) BearerContextIEs
+ts_GTP2C_BcContextIE(template (value) uint4_t ebi,
+ template (omit) FullyQualifiedTEID_List teid_list := omit,
+ template (omit) Bearer_QoS qos := ts_GTP2C_BearerQos('09'O, 0,0,0,0),
+ template (omit) ChargingID charging_id := omit) := {
+ ePS_Bearer_ID := ts_GTP2C_EpsBearerId(ebi),
+ cause := ts_GTP2C_Cause(Request_accepted, '0'B),
+ ePS_Bearer_TFT := omit,
+ fullyQualifiedTEID := teid_list,
+ bearerLevel_QoS := qos,
+ chargingID := charging_id,
+ bearerFlags := omit,
+ transactionIdentifier := omit,
+ protocolConfigOptions := omit,
+ rAN_NASCause := omit,
+ additionalProtocolConfigOptions := omit,
+ extendedProtocolConfigOptions := omit
+}
+
template (value) BearerContextGrouped
ts_GTP2C_BcGrouped(template (value) BearerContextIEs ies) := {
elementIdentifier := '5D'O,
@@ -501,7 +621,16 @@ tr_GTP2C_BcGrouped(template (present) BearerContextIEs ies) := {
bearerContextIEs := ies
}
-
+/* 8.29 */
+template (value) ChargingID
+ts_GTP2C_ChargingID(template (value) OCT4 chargingID_Value) := {
+ elementIdentifier := '5D'O,
+ lengthIndicator := 0, /* overwritten */
+ instance := '0000'B,
+ spare := '0000'B,
+ chargingID_Value := chargingID_Value,
+ additionalOctets := omit
+}
/* 8.30 */
template (value) ChargingCharacteristics
@@ -556,6 +685,13 @@ ts_GTP2C_ProcTransId(template (value) integer pti) := {
pTI_Value := pti,
additionalOctets := omit
}
+private function f_ts_GTP2C_ProcTransId_omit(template (omit) integer pti)
+return template (omit) ProcedureTransactionID {
+ if (istemplatekind(pti, "omit")) {
+ return omit;
+ }
+ return ts_GTP2C_ProcTransId(pti);
+}
template (present) ProcedureTransactionID
tr_GTP2C_ProcTransId(template (present) integer pti) := {
elementIdentifier := '64'O,
@@ -610,8 +746,98 @@ tr_GTP2C_SelectionMode(template (present) integer mode) := {
additionalOctets := *
}
+/* 8.62 Fully qualified PDN Connection Set Identifier (FQ-CSID) */
+template (value) NodeID ts_GTP2C_FQCSID_NodeID_IPv4(template (value) OCT4 addr) := {
+ globalUnicastIPv4 := addr
+}
+template (value) FullyQualifiedPDN_ConnectionSetID
+ts_GTP2C_FQCSID(template (value) integer nRofCSIDs,
+ template (value) integer nodeIDType,
+ template (value) NodeID nodeID,
+ template (value) PDN_CSID_List pDN_CSID_List,
+ template (value) uint4_t instance := 0) := {
+ elementIdentifier := '84'O,
+ lengthIndicator := 0, /* overwritten */
+ instance := int2bit(valueof(instance), 4),
+ spare := '0000'B,
+ nRofCSIDs := nRofCSIDs,
+ nodeIDType := nodeIDType,
+ nodeID := nodeID,
+ pDN_CSID_List := pDN_CSID_List,
+ additionalOctets := omit
+}
+template (value) FullyQualifiedPDN_ConnectionSetID
+ts_GTP2C_FQCSID_IPv4(template (value) OCT4 addr,
+ template (value) OCT2 csid,
+ template (value) uint4_t instance := 0) :=
+ts_GTP2C_FQCSID(nRofCSIDs := 1,
+ nodeIDType := 0,
+ nodeID := ts_GTP2C_FQCSID_NodeID_IPv4(addr),
+ pDN_CSID_List := {csid},
+ instance := instance);
+
+/* 8.94 Additional Protocol Configuration Options (APCO) */
+template (present) ProtocolID_or_ContainerID
+tr_GTP2C_PCO_P(template (present) OCT2 protocolID_or_ContainerID := ?,
+ template (present) octetstring protID_orContID_Contents := ?) := {
+ protocolID_or_ContainerID := protocolID_or_ContainerID,
+ lengthIndicator := ?,
+ protID_orContID_Contents := protID_orContID_Contents
+}
+template (value) ProtocolID_or_ContainerID
+ts_GTP2C_PCO_P(template (value) OCT2 protocolID_or_ContainerID,
+ template (value) octetstring protID_orContID_Contents := ''O) := {
+ protocolID_or_ContainerID := protocolID_or_ContainerID,
+ lengthIndicator := 0,
+ protID_orContID_Contents := protID_orContID_Contents
+}
-
+template (present) ProtocolID_or_ContainerID tr_GTP2C_PCO_P_DNS_IPv4(template (present) octetstring dns4 := ?) :=
+ tr_GTP2C_PCO_P('000d'O, dns4);
+template (value) ProtocolID_or_ContainerID ts_GTP2C_PCO_P_DNS_IPv4(template (value) octetstring dns4 := ''O) :=
+ ts_GTP2C_PCO_P('000d'O, dns4);
+
+template (present) ProtocolID_or_ContainerID tr_GTP2C_PCO_P_DNS_IPv6(template (present) octetstring dns6 := ?) :=
+ tr_GTP2C_PCO_P('0003'O, dns6);
+template (value) ProtocolID_or_ContainerID ts_GTP2C_PCO_P_DNS_IPv6(template (value) octetstring dns6 := ''O) :=
+ ts_GTP2C_PCO_P('0003'O, dns6);
+
+template (present) ProtocolID_or_ContainerID tr_GTP2C_PCO_P_PCSCF_IPv4(template (present) octetstring pcscf4 := ?) :=
+ tr_GTP2C_PCO_P('000C'O, pcscf4);
+template (value) ProtocolID_or_ContainerID ts_GTP2C_PCO_P_PCSCF_IPv4(template (value) octetstring pcscf4 := ''O) :=
+ ts_GTP2C_PCO_P('000C'O, pcscf4);
+
+template (present) ProtocolID_or_ContainerID tr_GTP2C_PCO_P_PCSCF_IPv6(template (present) octetstring pcscf6 := ?) :=
+ tr_GTP2C_PCO_P('0001'O, pcscf6);
+template (value) ProtocolID_or_ContainerID ts_GTP2C_PCO_P_PCSCF_IPv6(template (value) octetstring pcscf6 := ''O) :=
+ ts_GTP2C_PCO_P('0001'O, pcscf6);
+
+template (value) APCO
+ts_GTP2C_APCO(template (value) BIT4 instance := '0000'B,
+ template (value) ProtocolIDs_and_ContainerIDs protocolIDs_and_ContainerIDs := {}) := {
+ elementIdentifier := 'A3'O,
+ lengthIndicator := 0,
+ instance := instance,
+ spare := '0000'B,
+ configProtocol := '000'B,
+ spare2 := '0000'B,
+ extensionField := '1'B,
+ protocolIDs_and_ContainerIDs := protocolIDs_and_ContainerIDs,
+ additionalOctets := omit
+}
+template (present) APCO
+tr_GTP2C_APCO(template (present) BIT4 instance := ?,
+ template ProtocolIDs_and_ContainerIDs protocolIDs_and_ContainerIDs := *) := {
+ elementIdentifier := 'A3'O,
+ lengthIndicator := ?,
+ instance := instance,
+ spare := ?,
+ configProtocol := '000'B,
+ spare2 := '0000'B,
+ extensionField := '1'B,
+ protocolIDs_and_ContainerIDs := protocolIDs_and_ContainerIDs,
+ additionalOctets := *
+}
template (value) PDU_GTPCv2 ts_PDU_GTP2C(template (omit) OCT4 teid, template (value) OCT3 seq,
template (value) OCT1 msg_type,
@@ -675,13 +901,15 @@ ts_GTP2C_CreateSessionReq(template (value) hexstring imsi, template (omit) hexst
template (value) octetstring apn, template (value) BIT3 pdn_type,
template (omit) FullyQualifiedTEID_List teid_list,
template (value) OCT2 chg_car, template (value) uint4_t bearer_id,
- template (value) Bearer_QoS qos := ts_GTP2C_BearerQos('09'O, 0,0,0,0)) :=
+ template (omit) UserLocationInfo uli := omit,
+ template (value) Bearer_QoS qos := ts_GTP2C_BearerQos('09'O, 0,0,0,0),
+ template (omit) APCO apco := omit) :=
ts_PDU_GTP2C('00000000'O, '000000'O, '20'O, {
createSessionRequest := {
iMSI := ts_GTP2C_Imsi(imsi),
mSISDN := fs_GTP2C_msisdn(msisdn),
mEI := omit,
- userLocationInfo := omit,
+ userLocationInfo := uli,
servingNetwork := omit,
rAT_Type := ts_GTP2C_RatType(rat_type),
indication := omit,
@@ -721,7 +949,7 @@ ts_PDU_GTP2C('00000000'O, '000000'O, '20'O, {
signallingPriorityIndication := omit,
iP_Addr := omit,
portNumber := omit,
- aPCO := omit,
+ aPCO := apco,
trustedWLANAccessNetworkIdentifier := omit,
cNOperatorSelectionEntity := omit,
presenceReportingAreaInformation := omit,
@@ -740,38 +968,40 @@ ts_PDU_GTP2C('00000000'O, '000000'O, '20'O, {
template (present) PDU_GTPCv2
-tr_GTP2C_CreateSessionReq(template (present) hexstring imsi) :=
+tr_GTP2C_CreateSessionReq(template (present) hexstring imsi := ?,
+ template (present) octetstring apn := ?,
+ template APCO apco := *) :=
tr_PDU_GTP2C('00000000'O, ?, {
createSessionRequest := {
iMSI := tr_GTP2C_Imsi(imsi),
mSISDN := *,
mEI := *,
- userLocationInfo := ?,
- servingNetwork := ?,
- rAT_Type := tr_GTP2C_RatType(6),
+ userLocationInfo := *,
+ servingNetwork := *,
+ rAT_Type := tr_GTP2C_RatType(?),
indication := *,
fullyQualifiedTEID := ?,
- accessPointName := tr_GTP2C_APN('012a'O), // '*'
+ accessPointName := tr_GTP2C_APN(apn), // '*'
selectionMode := ?,
- pDN_Type := ?,
+ pDN_Type := *,
pDN_AddressAllocation := ?,
- maxAPN_Restriction := ?,
+ maxAPN_Restriction := *,
ambr := *,
linkedEPS_Bearer_ID := omit,
trustedWLANModeIndication := omit,
protocolConfigOptions := omit,
bearerContextGrouped := ?,
traceInformation := *,
- recovery := omit,
+ recovery := *,
csid := omit,
- uE_TimeZone := ?,
+ uE_TimeZone := *,
user_CSG_Information := omit,
- chargingCharacteristics := ?,
+ chargingCharacteristics := *,
lDN := omit,
signallingPriorityIndication := *,
iP_Addr := omit,
portNumber := omit,
- aPCO := omit,
+ aPCO := apco,
trustedWLANAccessNetworkIdentifier := omit,
cNOperatorSelectionEntity := omit,
presenceReportingAreaInformation := omit,
@@ -789,11 +1019,16 @@ tr_PDU_GTP2C('00000000'O, ?, {
}});
template (value) PDU_GTPCv2
-ts_GTP2C_CreateSessionResp(template (value) FullyQualifiedTEID_List fteids,
- template (value) PDN_AddressAllocation addr) :=
-ts_PDU_GTP2C('00000000'O, '000000'O, '21'O, {
+ts_GTP2C_CreateSessionResp(template (value) OCT4 d_teid,
+ template (value) OCT3 seq,
+ template (value) GTP2C_Cause cause := Request_accepted,
+ template (omit) FullyQualifiedTEID_List fteids := omit,
+ template (omit) PDN_AddressAllocation addr := omit,
+ template (omit) BearerContextGrouped_List bearerContextGrouped := omit,
+ template (omit) APCO apco := omit) :=
+ts_PDU_GTP2C(d_teid, seq, '21'O, {
createSessionResponse := {
- cause := ts_GTP2C_Cause(int2oct(16, 1), '0'B),
+ cause := ts_GTP2C_Cause(cause, '0'B),
changeReportingAction := omit,
cSG_InformationReportingAction := omit,
heNBInformationReporting := omit,
@@ -803,14 +1038,14 @@ ts_PDU_GTP2C('00000000'O, '000000'O, '21'O, {
ambr := omit,
linkedEPS_Bearer_ID := omit,
protocolConfigOptions := omit,
- bearerContextGrouped := omit,
+ bearerContextGrouped := bearerContextGrouped,
recovery := omit,
chargingGatewayName := omit,
chargingGatewayAddress := omit,
csid := omit,
lDN := omit,
pGW_Back_OffTime := omit,
- aPCO := omit,
+ aPCO := apco,
trustedWLANIPv4Parameters := omit,
indicationFlags := omit,
presenceReportingAreaAction := omit,
@@ -824,10 +1059,12 @@ ts_PDU_GTP2C('00000000'O, '000000'O, '21'O, {
template (present) PDU_GTPCv2
tr_GTP2C_CreateSessionResp(template (present) OCT4 d_teid := ?,
template (present) OCT3 seq := ?,
- template (present) OCT1 cause := ?,
+ template (present) GTP2C_Cause cause := ?,
template FullyQualifiedTEID_List fteids := *,
template PDN_AddressAllocation addr := *,
- template BearerContextGrouped_List bctxg := *) :=
+ template APN_Restriction apn_restriction := *,
+ template BearerContextGrouped_List bctxg := *,
+ template APCO exp_apco := *) :=
tr_PDU_GTP2C(d_teid, seq, {
createSessionResponse := {
cause := tr_GTP2C_Cause(cause),
@@ -836,7 +1073,7 @@ tr_PDU_GTP2C(d_teid, seq, {
heNBInformationReporting := *,
fullyQualifiedTEID := fteids,
pDN_AddressAllocation := addr,
- aPN_Restriction := ?,
+ aPN_Restriction := apn_restriction,
ambr := *,
linkedEPS_Bearer_ID := *,
protocolConfigOptions := *,
@@ -847,7 +1084,7 @@ tr_PDU_GTP2C(d_teid, seq, {
csid := *,
lDN := *,
pGW_Back_OffTime := *,
- aPCO := *,
+ aPCO := exp_apco,
trustedWLANIPv4Parameters := *,
indicationFlags := *,
presenceReportingAreaAction := *,
@@ -862,7 +1099,7 @@ tr_PDU_GTP2C(d_teid, seq, {
template (value) PDU_GTPCv2
ts_GTP2C_DeleteSessionReq(template (value) OCT4 d_teid,
- template (omit) OCT1 cause := omit,
+ template (omit) GTP2C_Cause cause := omit,
template (value) FullyQualifiedTEID sender_fteid,
template (omit) FullyQualifiedTEID_List teid_list := omit,
template (value) uint4_t bearer_id) :=
@@ -887,18 +1124,18 @@ ts_PDU_GTP2C(d_teid, '000000'O, '24'O, {
privateExtension := omit
}});
template (present) PDU_GTPCv2
-tr_GTP2C_DeleteSessionReq(template (present) OCT4 d_teid,
+tr_GTP2C_DeleteSessionReq(template (present) OCT4 d_teid := ?,
template (present) OCT3 seq := ?,
- template (omit) OCT1 cause,
- template (present) FullyQualifiedTEID sender_fteid,
- template FullyQualifiedTEID_List teid_list,
- template (present) uint4_t bearer_id) :=
+ template GTP2C_Cause cause := *,
+ template (present) uint4_t bearer_id := ?,
+ template Indication indicationFlags := *,
+ template FullyQualifiedTEID sender_fteid := *) :=
tr_PDU_GTP2C(d_teid, seq, {
deleteSessionRequest := {
cause := fr_GTP2C_Cause(cause),
linkedEPS_Bearer_ID := tr_GTP2C_EpsBearerId(bearer_id),
uLI := *,
- indicationFlags := *,
+ indicationFlags := indicationFlags,
protocolConfigOptions := *,
originatingNode := *,
fullyQualifiedTEID := sender_fteid,
@@ -918,8 +1155,8 @@ tr_PDU_GTP2C(d_teid, seq, {
template (value) PDU_GTPCv2
ts_GTP2C_DeleteSessionResp(template (value) OCT4 d_teid,
template (value) OCT3 seq,
- template (value) OCT1 cause) :=
-ts_PDU_GTP2C(d_teid, '000000'O, '25'O, {
+ template (value) GTP2C_Cause cause) :=
+ts_PDU_GTP2C(d_teid, seq, '25'O, {
deleteSessionResponse := {
cause := ts_GTP2C_Cause(cause, '0'B),
recovery := omit,
@@ -934,7 +1171,7 @@ ts_PDU_GTP2C(d_teid, '000000'O, '25'O, {
template (present) PDU_GTPCv2
tr_GTP2C_DeleteSessionResp(template (present) OCT4 d_teid,
template (present) OCT3 seq := ?,
- template (present) OCT1 cause := ?
+ template (present) GTP2C_Cause cause := ?
) :=
tr_PDU_GTP2C(d_teid, seq, {
deleteSessionResponse := {
@@ -950,33 +1187,19 @@ tr_PDU_GTP2C(d_teid, seq, {
template (value) PDU_GTPCv2
ts_GTP2C_CreateBearerReq(template (value) OCT4 d_teid,
- template (value) integer proc_trans_id,
+ template (omit) integer proc_trans_id,
template (value) uint4_t linked_id,
template (value) uint4_t bearer_id,
- template (omit) FullyQualifiedTEID_List teid_list,
+ template (value) BearerContextGrouped_List bearer_ctx_list,
+ template (omit) FullyQualifiedPDN_ConnectionSetID_List csid := omit,
template (value) Bearer_QoS qos := ts_GTP2C_BearerQos('09'O, 0,0,0,0)) :=
ts_PDU_GTP2C(d_teid, '000000'O, '5F'O, {
createBearerRequest := {
- procedureTransactionID := ts_GTP2C_ProcTransId(proc_trans_id),
+ procedureTransactionID := f_ts_GTP2C_ProcTransId_omit(proc_trans_id),
linkedEPS_BearerID := ts_GTP2C_EpsBearerId(linked_id),
protocolConfigOptions := omit,
- bearerContextGrouped := {
- ts_GTP2C_BcGrouped({
- ePS_Bearer_ID := ts_GTP2C_EpsBearerId(bearer_id),
- cause := omit,
- ePS_Bearer_TFT := omit,
- fullyQualifiedTEID := teid_list,
- bearerLevel_QoS := qos,
- chargingID := omit,
- bearerFlags := omit,
- transactionIdentifier := omit,
- protocolConfigOptions := omit,
- rAN_NASCause := omit,
- additionalProtocolConfigOptions := omit,
- extendedProtocolConfigOptions := omit
- })
- },
- csid := omit,
+ bearerContextGrouped := bearer_ctx_list,
+ csid := csid,
changeReportingAction := omit,
cSG_InformationReportingAction := omit,
heNBInformationReporting := omit,
@@ -987,13 +1210,96 @@ ts_PDU_GTP2C(d_teid, '000000'O, '5F'O, {
nBIFOMContainer := omit,
privateExtension := omit
}});
+template (present) PDU_GTPCv2
+tr_GTP2C_CreateBearerResp(template (present) OCT4 d_teid,
+ template (present) OCT3 seq := ?,
+ template (present) GTP2C_Cause cause := ?
+ ) :=
+tr_PDU_GTP2C(d_teid, seq, {
+ createBearerResponse := {
+ cause := tr_GTP2C_Cause(cause),
+ bearerContextGrouped := *,
+ recovery := *,
+ csid := *,
+ protocolConfigOptions := *,
+ uE_TimeZone := *,
+ uLI := *,
+ trustedWLANAccessNetworkIdentifier := *,
+ overloadControlInformationGrouped := *,
+ presenceReportingAreaInformation := *,
+ iP_Addr := *,
+ wLANLocationTimestamp := *,
+ portNumber := *,
+ nBIFOMContainer := *,
+ extendedProtocolConfigOptions := *,
+ privateExtension:= *
+ }});
+template (present) PDU_GTPCv2
+tr_GTP2C_ModifyBearerReq(template (present) OCT4 d_teid := ?,
+ template (present) OCT3 seq := ?) :=
+tr_PDU_GTP2C(d_teid, seq, {
+ modifyBearerRequest := {
+ mEI := *,
+ userLocationInfo := *,
+ servingNetwork := *,
+ rAT_Type := *,
+ indicationFlags := *,
+ fullyQualifiedTEID := *,
+ ambr := *,
+ delayDownlinkPacketNotificationReq := *,
+ bearerContextGrouped := *,
+ recovery := *,
+ uE_TimeZone := *,
+ csid := *,
+ user_CSG_Information := *,
+ iP_Addr := *,
+ portNumber := *,
+ lDN := *,
+ //maxMBR_APN_AMBR := *,
+ cNOperatorSelectionEntity := *,
+ presenceReportingAreaInformation := *,
+ overloadControlInformationGrouped := *,
+ servingPLMNRateControl := *,
+ counter := *,
+ privateExtension := *
+ }});
+
+template (value) PDU_GTPCv2
+ts_GTP2C_ModifyBearerResp(template (value) OCT4 d_teid,
+ template (value) OCT3 seq,
+ template (value) GTP2C_Cause cause,
+ template (value) uint4_t bearer_id,
+ template (omit) BearerContextGrouped_List bearerContextGrouped := omit) :=
+ts_PDU_GTP2C(d_teid, seq, '23'O, {
+ modifyBearerResponse := {
+ cause := ts_GTP2C_Cause(cause, '0'B),
+ mSISDN := omit,
+ linkedEPS_Bearer_ID := ts_GTP2C_EpsBearerId(bearer_id),
+ aPN_Restriction := omit,
+ protocolConfigOptions := omit,
+ bearerContextGrouped := bearerContextGrouped,
+ changeReportingAction := omit,
+ cSG_InformationReportingAction := omit,
+ heNBInformationReporting := omit,
+ chargingGatewayName := omit,
+ chargingGatewayAddress := omit,
+ csid := omit,
+ recovery := omit,
+ lDN := omit,
+ indicationFlags := omit,
+ presenceReportingAreaAction := omit,
+ loadControlInformationGrouped := omit,
+ overloadControlInformationGrouped := omit,
+ pDNConnectionChargingID := omit,
+ privateExtension := omit
+ }});
template (value) PDU_GTPCv2
ts_GTP2C_DeleteBearerReq(template (value) OCT4 d_teid,
template (value) integer proc_trans_id,
template (value) uint4_t bearer_id,
- template (value) OCT1 cause) :=
+ template (value) GTP2C_Cause cause) :=
ts_PDU_GTP2C(d_teid, '000000'O, '63'O, {
deleteBearerRequest := {
epsBearerIdentity := { ts_GTP2C_EpsBearerId(bearer_id) },
@@ -1014,7 +1320,7 @@ ts_PDU_GTP2C(d_teid, '000000'O, '63'O, {
template (present) PDU_GTPCv2
tr_GTP2C_DeleteBearerResp(template (present) OCT4 d_teid,
template (present) OCT3 seq := ?,
- template (present) OCT1 cause := ?) :=
+ template (present) GTP2C_Cause cause := ?) :=
tr_PDU_GTP2C(d_teid, seq, {
deleteBearerResponse := {
cause := tr_GTP2C_Cause(cause),
@@ -1035,6 +1341,25 @@ tr_PDU_GTP2C(d_teid, seq, {
privateExtension := *
}});
+/* 8.18 */
+template (value) ServingNetwork
+ts_GTP2C_ServingNetwork(template (value) hexstring mcc,
+ template (value) hexstring mnc,
+ template (value) BIT4 instance := '0000'B) :=
+{
+ elementIdentifier := '53'O,
+ lengthIndicator := 0, /* overwritten */
+ instance := instance,
+ spare := '0000'B,
+ mccDigit1 := mcc[0],
+ mccDigit2 := mcc[1],
+ mccDigit3 := mcc[2],
+ mncDigit3 := mnc[2], /* 'F'H for 2 digit MNC */
+ mncDigit1 := mnc[0],
+ mncDigit2 := mnc[1],
+ additionalOctets := omit
+}
+
}