osmo-ttcn3-hacks/library/NAS_Templates.ttcn

1012 lines
27 KiB
Plaintext

/* EPC (Evolved Packet Core) NAS (Non-Access Stratum) templates in TTCN-3
* (C) 2019 Harald Welte <laforge@gnumonks.org>
* All rights reserved.
*
* Released under the terms of GNU General Public License, Version 2 or
* (at your option) any later version.
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
module NAS_Templates {
import from General_Types all;
import from NAS_EPS_Types all;
template (value) PDU_NAS_EPS
ts_NAS_SM(template (value) EPS_SessionManagement sm) := {
protocolDiscriminator := '0010'B,
ePS_messages := {
ePS_SessionManagement := sm
}
}
template (present) PDU_NAS_EPS
tr_NAS_SM(template (present) EPS_SessionManagement sm) := {
protocolDiscriminator := '0010'B,
ePS_messages := {
ePS_SessionManagement := sm
}
}
template (value) PDU_NAS_EPS
ts_NAS_MM(template (value) EPS_MobilityManagement mm) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := mm
}
}
template (present) PDU_NAS_EPS
tr_NAS_MM(template (present) EPS_MobilityManagement mm) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := mm
}
}
const BIT4 c_EPS_SEC_NONE := '0000'B;
const BIT4 c_EPS_NAS_PD_EMM := '0111'B;
const BIT4 c_EPS_NAS_PD_ESM := '0010'B;
private template (value) ESM_MessageContainerLVE
ts_NAS_EsmMsgContLVE(template (value) octetstring inp) := {
lengthIndicator := 0,
content := inp
}
private template (present) ESM_MessageContainerLVE
tr_NAS_EsmMsgContLVE(template (present) octetstring inp) := {
lengthIndicator := ?,
content := inp
}
private template (value) MobileIdentityLV
ts_NAS_MobileIdLV(template (value) MobileIdentityV mid) := {
lengthIndicator := 0,
mobileIdentityV := mid
}
private template (present) MobileIdentityLV
tr_NAS_MobileIdLV(template (present) MobileIdentityV mid) := {
lengthIndicator := ?,
mobileIdentityV := mid
}
private function f_enc_IMSI_NAS(hexstring digits) return IMSI {
var IMSI l3;
var integer len := lengthof(digits);
if (len rem 2 == 1) { /* modulo remainder */
l3.oddevenIndicator := '1'B;
l3.fillerDigit := omit;
} else {
l3.oddevenIndicator := '0'B;
l3.fillerDigit := '1111'B;
}
l3.digits := digits;
return l3;
}
private function f_enc_IMEI_NAS(hexstring digits) return IMEI {
var IMEI l3;
var integer len := lengthof(digits);
if (len rem 2 == 1) { /* modulo remainder */
l3.oddevenIndicator := '1'B;
} else {
l3.oddevenIndicator := '0'B;
}
l3.digits := digits;
return l3;
}
private function f_enc_IMEI_SV(hexstring digits) return IMEI_SV {
var IMEI_SV l3;
var integer len := lengthof(digits);
if (len rem 2 == 1) { /* modulo remainder */
l3.oddevenIndicator := '1'B;
} else {
l3.oddevenIndicator := '0'B;
}
l3.digits := digits;
l3.fillerDigit := '1111'B;
return l3;
}
template (value) GUTI ts_NAS_GUTI(hexstring mcc_mnc, OCT2 mmegi, OCT1 mmec, OCT4 tmsi) := {
oddevenIndicator := '0'B,
spare := '1111'B,
/* mcc_mnc specified in format 262f42 */
mccDigit1 := mcc_mnc[0],
mccDigit2 := mcc_mnc[1],
mccDigit3 := mcc_mnc[2],
mncDigit3 := mcc_mnc[5],
mncDigit1 := mcc_mnc[3],
mncDigit2 := mcc_mnc[4],
mMEGI := mmegi,
mMEC := mmec,
mTMSI := tmsi
}
template (value) EPS_MobileIdentityV
ts_NAS_MobileId_IMSI(hexstring imsi) := {
typeOfIdentity := '001'B,
oddEvenInd_identity := {
imsi := f_enc_IMSI_NAS(imsi)
}
}
template (value) EPS_MobileIdentityV
ts_NAS_MobileId_IMEI(hexstring imei) := {
typeOfIdentity := '011'B,
oddEvenInd_identity := {
imei := f_enc_IMEI_NAS(imei)
}
}
template (value) EPS_MobileIdentityV
ts_NAS_MobileId_GUTI(hexstring mcc_mnc, OCT2 mmegi, OCT1 mmec, OCT4 tmsi) := {
typeOfIdentity := '110'B,
oddEvenInd_identity := {
guti := ts_NAS_GUTI(mcc_mnc, mmegi, mmec, tmsi)
}
}
template (value) PDU_NAS_EPS
ts_NAS_EMM_SecurityProtected(BIT4 sec_hdr_t, integer seq_nr, octetstring inner_nas) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_SecurityProtectedNASMessage := {
securityHeaderType := sec_hdr_t,
messageAuthenticationCode := '00000000'O,
sequenceNumber := seq_nr,
nAS_Message := inner_nas
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_EMM_SecurityProtected := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_SecurityProtectedNASMessage := ?
}
}
}
const BIT3 NAS_PDN_T_IPv4 := '001'B;
const BIT3 NAS_PDN_T_IPv6 := '010'B;
const BIT3 NAS_PDN_T_IPv4v6 := '011'B;
const BIT3 NAS_PDN_T_NonIP := '101'B;
/*********************************************************************************
* Mobility Management
*********************************************************************************/
/* 8.2.1 Attach Accept */
template (value) PDU_NAS_EPS
ts_NAS_AttachAccept(template (value) EPS_AttachResultV result,
template (value) GPRSTimerV t3412,
template (value) TAI_Lists tai_lists,
template (value) octetstring esm_enc) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachAccept := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000010'B,
ePS_AttachResult := result,
spare := '0000'B,
t3412 := t3412,
tAI_List := {
lengthIndicator := 0,
trackingAreaIdentityLists := tai_lists
},
eSM_MessageContainer := ts_NAS_EsmMsgContLVE(esm_enc),
gUTI := omit,
locationAreaIdentification := omit,
msIdentity := omit,
eMMCause := omit,
t3402 := omit,
t3423 := omit,
equivalentPLMNs := omit,
emergencyNumberList := omit,
ePS_NetworkFeatureSupport := omit,
additionalUpdateResult := omit,
t3412_Extended := omit,
t3324 := omit,
extendedDRXParameters := omit,
dNCID := omit,
sMS_ServiceStatus := omit,
non3GPP_NW_ProvidedPolicies := omit,
t3448 := omit,
networkPolicy := omit,
t3447 := omit,
extendedEmergencyNumberList := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AttachAccept(template (present) EPS_AttachResultV result := ?,
template (present) GPRSTimerV t3412 := ?,
template (present) TAI_Lists tai_lists := ?,
template (present) octetstring esm_enc := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachAccept := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000010'B,
ePS_AttachResult := result,
spare := ?,
t3412 := t3412,
tAI_List := {
lengthIndicator := ?,
trackingAreaIdentityLists := tai_lists
},
eSM_MessageContainer := tr_NAS_EsmMsgContLVE(esm_enc),
gUTI := *,
locationAreaIdentification := *,
msIdentity := *,
eMMCause := *,
t3402 := *,
t3423 := *,
equivalentPLMNs := *,
emergencyNumberList := *,
ePS_NetworkFeatureSupport := *,
additionalUpdateResult := *,
t3412_Extended := *,
t3324 := *,
extendedDRXParameters := *,
dNCID := *,
sMS_ServiceStatus := *,
non3GPP_NW_ProvidedPolicies := *,
t3448 := *,
networkPolicy := *,
t3447 := *,
extendedEmergencyNumberList := *
}
}
}
}
/* 8.2.2 Attach Complete */
template (value) PDU_NAS_EPS
ts_NAS_AttachComplete(template (value) octetstring esm_enc) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachComplete := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000011'B,
eSM_MessageContainer := ts_NAS_EsmMsgContLVE(esm_enc)
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AttachComplete(template (present) octetstring esm_enc := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachComplete := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000011'B,
eSM_MessageContainer := tr_NAS_EsmMsgContLVE(esm_enc)
}
}
}
}
/* 8.2.3 Attach Reject */
template (value) PDU_NAS_EPS
ts_NAS_AttachReject(template (value) EMM_CauseV cause) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachReject := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000100'B,
emmCause := cause,
eSM_MessageContainer := omit,
t3346 := omit,
t3402 := omit,
extendedEmmCause := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AttachReject(template (present) EMM_CauseV cause := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachReject := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000100'B,
emmCause := cause,
eSM_MessageContainer := omit,
t3346 := omit,
t3402 := omit,
extendedEmmCause := omit
}
}
}
}
/* 8.2.4 Attach Request */
template (value) PDU_NAS_EPS
ts_NAS_AttachRequest(template (value) BIT3 att_type,
template (value) BIT3 kset_id,
template (value) EPS_MobileIdentityV mobile_id,
template (value) UENetworkCapabilityV ue_net_cap,
template (value) octetstring esm_enc) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachRequest := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01000001'B,
ePS_attachType := {
typeOfAttach := att_type,
spare := '0'B
},
nasKeySetId := {
identifier := kset_id,
tSC := '1'B
},
ePSMobileId := {
lengthIndicator := 0,
ePS_MobileIdentity := mobile_id
},
uENetworkCapability := {
lengthIndicator := 0,
uENetworkCapabilityV := ue_net_cap
},
eSM_MessageContainer := ts_NAS_EsmMsgContLVE(esm_enc),
old_P_TMSISignature := omit,
additionalGUTI := omit,
lastVisitedRegisteredTAI := omit,
dRXParameter := omit,
mSNetworkCapability := omit,
oldLocationAreaIdentification := omit,
tMSIStatusTV := omit,
mobileStationClassmark2 := omit,
mobileStationClassmark3 := omit,
supportedCodecList := omit,
additionalUpdateType := omit,
voiceDomainPrefandUEsettings := omit,
deviceProperties := omit,
oldGUTI_Type := omit,
mS_NetworkFeatureSupport := omit,
tMSIBasedNRIContainer := omit,
t3324 := omit,
t3412_Extended := omit,
extendedDRXParameters := omit,
uEAdditionalSecurityCapability := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AttachRequest(template (present) BIT3 att_type := ?,
template (present) BIT3 kset_id := ?,
template (present) EPS_MobileIdentityV mobile_id := ?,
template (present) UENetworkCapabilityV ue_net_cap := ?,
template (present) octetstring esm_enc := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AttachRequest := {
securityHeaderType := ?,
messageType := '01000001'B,
ePS_attachType := {
typeOfAttach := att_type,
spare := ?
},
nasKeySetId := {
identifier := kset_id,
tSC := ?
},
ePSMobileId := {
lengthIndicator := ?,
ePS_MobileIdentity := mobile_id
},
uENetworkCapability := {
lengthIndicator := ?,
uENetworkCapabilityV := ue_net_cap
},
eSM_MessageContainer := tr_NAS_EsmMsgContLVE(esm_enc),
old_P_TMSISignature := *,
additionalGUTI := *,
lastVisitedRegisteredTAI := *,
dRXParameter := *,
mSNetworkCapability := *,
oldLocationAreaIdentification := *,
tMSIStatusTV := *,
mobileStationClassmark2 := *,
mobileStationClassmark3 := *,
supportedCodecList := *,
additionalUpdateType := *,
voiceDomainPrefandUEsettings := *,
deviceProperties := *,
oldGUTI_Type := *,
mS_NetworkFeatureSupport := *,
tMSIBasedNRIContainer := *,
t3324 := *,
t3412_Extended := *,
extendedDRXParameters := *,
uEAdditionalSecurityCapability := *
}
}
}
}
/* 8.2.5 Authentication Failure */
template (value) PDU_NAS_EPS
ts_NAS_AuthFail(template (value) EMM_CauseV cause /* template (omit) OCT14 auth_fail_par */) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationFailure := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01011100'B,
emmCause := cause,
authenticationFailureParameter := omit
}
}
}
}
template (value) PDU_NAS_EPS
ts_NAS_AuthFail_par(template (value) EMM_CauseV cause,
template (value) OCT14 auth_fail_par) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationFailure := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01011100'B,
emmCause := cause,
authenticationFailureParameter := {
elementIdentifier := '30'O,
lengthIndicator := lengthof(auth_fail_par),
authenticationFailureParameter := auth_fail_par
}
}
}
}
}
/* 8.2.6 Authentication Reject */
template (value) PDU_NAS_EPS
ts_NAS_AuthRej := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationReject := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010100'B
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AuthRej := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationReject := {
securityHeaderType := ?,
messageType := '01010100'B
}
}
}
}
/* 8.2.7 Authentication Request */
template (value) PDU_NAS_EPS
ts_NAS_AuthReq(template (value) NAS_KeySetIdentifierV kset_id,
OCT16 rand, OCT16 autn) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationRequest := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010010'B,
nasKeySetId := kset_id,
spare := '0000'B,
authenticationParameterRAND := {
rAND := rand
},
authenticationParameterAUTN := {
lengthIndicator := lengthof(autn),
aUTN := autn
}
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AuthReq(template (present) NAS_KeySetIdentifierV kset_id := ?,
template (present) OCT16 rand := ?,
template (present) OCT16 autn := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationRequest := {
securityHeaderType := ?,
messageType := '01010010'B,
nasKeySetId := kset_id,
spare := '0000'B,
authenticationParameterRAND := {
rAND := rand
},
authenticationParameterAUTN := {
lengthIndicator := ?,
aUTN := autn
}
}
}
}
}
/* 8.2.8 Authentication Response */
template (value) PDU_NAS_EPS
ts_NAS_AuthResp(octetstring res) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationResponse := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010011'B,
authenticationResponseParameter := {
lengthIndicator := lengthof(res),
authenticationResponseParameter := {
rES := res
}
}
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_AuthResp(template OCT16 res := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_AuthenticationResponse := {
securityHeaderType := ?,
messageType := '01010011'B,
authenticationResponseParameter := {
lengthIndicator := ?,
authenticationResponseParameter := {
rES := res
}
}
}
}
}
}
/* 8.2.18 Identity Request */
template (value) PDU_NAS_EPS
ts_NAS_IdentityReq(template (value) IdentityType2V id_type) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_IdentityRequest := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010101'B,
identityType := id_type,
spareHalfOctet := '0000'B
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_IdentityReq(template (present) IdentityType2V id_type := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_IdentityRequest := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010101'B,
identityType := id_type,
spareHalfOctet := ?
}
}
}
}
/* 8.2.19 Identity Response */
template (value) PDU_NAS_EPS
ts_NAS_IdentityResp(template (value) MobileIdentityV mobile_id) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_IdentityResponse := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010110'B,
mobileIdentity := ts_NAS_MobileIdLV(mobile_id)
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_IdentityResp(template (present) MobileIdentityV mobile_id := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_IdentityResponse := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01010110'B,
mobileIdentity := tr_NAS_MobileIdLV(mobile_id)
}
}
}
}
/* 8.2.20 Security Mode Command */
template (value) PDU_NAS_EPS
ts_NAS_SecModeCmd(template (value) NAS_SecurityAlgorithmsV alg,
template (value) NAS_KeySetIdentifierV kset_id,
template (value) UESecurityCapabilityLV ue_sec_cap) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_SecurityModeCommand := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01011101'B,
selected_NAS_SecurityAlgorithms := alg,
nasKeySetId := kset_id,
spareHalfOctet := '0000'B,
replayed_UE_SecurityCapability := ue_sec_cap,
iMEISV_Request := omit,
replayedNonceUE := omit,
nonceMME := omit,
hashMME := omit,
uEAdditionalSecurityCapability := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_SecModeCmd(template (present) NAS_SecurityAlgorithmsV alg := ?,
template (present) NAS_KeySetIdentifierV kset_id := ?,
template (present) UESecurityCapabilityLV ue_sec_cap := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_SecurityModeCommand := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01011101'B,
selected_NAS_SecurityAlgorithms := alg,
nasKeySetId := kset_id,
spareHalfOctet := ?,
replayed_UE_SecurityCapability := ue_sec_cap,
iMEISV_Request := *,
replayedNonceUE := *,
nonceMME := *,
hashMME := *,
uEAdditionalSecurityCapability := *
}
}
}
}
/* 8.2.21 Security Mode Complete */
template (value) PDU_NAS_EPS
ts_NAS_SecModeCmpl := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_SecurityModeComplete := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01011110'B,
iMEISV := omit,
replayedNASMessageContainer := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_SecModeCmpl := {
protocolDiscriminator := c_EPS_NAS_PD_EMM,
ePS_messages := {
ePS_MobilityManagement := {
pDU_NAS_EPS_SecurityModeComplete := {
securityHeaderType := c_EPS_SEC_NONE,
messageType := '01011110'B,
iMEISV := *,
replayedNASMessageContainer := *
}
}
}
}
/*********************************************************************************
* Session Management
*********************************************************************************/
/* 9.9.4.11 - 10.5.6.3/24.008 */
private function ts_NAS_PCO_TLV(template (omit) ProtocolConfigOptionsV pco)
return template (omit) ProtocolConfigOptionsTLV {
var template (value) ProtocolConfigOptionsTLV ret;
if (istemplatekind(pco, "omit")) {
return omit;
}
ret := {
elementIdentifier := '27'O,
protocolConfigOptions := {
lengthIndicator := 0,
protocolConfigOptionsV := pco
}
}
return ret;
}
private function tr_NAS_PCO_TLV(template ProtocolConfigOptionsV pco := ?)
return template ProtocolConfigOptionsTLV {
var template ProtocolConfigOptionsTLV ret := {
elementIdentifier := '27'O,
protocolConfigOptions := {
lengthIndicator := ?,
protocolConfigOptionsV := pco
}
}
if (istemplatekind(pco, "omit")) {
return omit;
} else if (istemplatekind(pco, "*")) {
return *;
} else {
return ret;
}
}
/* 8.3.20 PDN Connectivity Request */
template (value) PDU_NAS_EPS
ts_NAS_PdnConnReq(template (value) BIT4 bearer_id,
template (value) BIT8 proc_tid,
template (value) BIT3 pdn_type,
template (value) BIT3 req_type) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_PDN_ConnectivityRequest := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11010000'B,
requestType := {
requestTypeValue := req_type,
spare := '0'B
},
pDN_Type := {
pDN_TypeValue := pdn_type,
spare := '0'B
},
eSM_InformationTransferFlag := omit,
accessPointName := omit,
protocolConfigOptions := omit,
deviceProperties := omit,
nBIFOMContainer := omit,
headerCompressinConfiguration := omit,
extendedProtocolConfigurationOptions := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_PdnConnReq(template (present) BIT4 bearer_id := ?,
template (present) BIT8 proc_tid := ?,
template (present) BIT3 pdn_type := ?,
template (present) BIT3 req_type := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_PDN_ConnectivityRequest := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11010000'B,
requestType := {
requestTypeValue := req_type,
spare := '0'B
},
pDN_Type := {
pDN_TypeValue := pdn_type,
spare := '0'B
},
eSM_InformationTransferFlag := omit,
accessPointName := omit,
protocolConfigOptions := omit,
deviceProperties := omit,
nBIFOMContainer := omit,
headerCompressinConfiguration := omit,
extendedProtocolConfigurationOptions := omit
}
}
}
}
/* 8.3.19 PDN Connectivity Reject */
template (value) PDU_NAS_EPS
ts_NAS_PdnConnRej(template (value) BIT4 bearer_id,
template (value) BIT8 proc_tid,
template (value) ESM_CauseV cause) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_PDN_ConnectivityReject := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11010001'B,
esmCause := cause,
protocolConfigOptions := omit,
backOffTimer := omit,
reAttemptIndicator := omit,
nBIFOMContainer := omit,
extendedProtocolConfigurationOptions := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_PdnConnRej(template (present) BIT4 bearer_id := ?,
template (present) BIT8 proc_tid := ?,
template (present) ESM_CauseV cause := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_PDN_ConnectivityReject := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11010001'B,
esmCause := cause,
protocolConfigOptions := *,
backOffTimer := *,
reAttemptIndicator := *,
nBIFOMContainer := *,
extendedProtocolConfigurationOptions := *
}
}
}
}
/* 8.3.6 Activate Default EPS Bearer Context Request */
template (value) PDU_NAS_EPS
ts_NAS_ActDefEpsBearCtxReq(template (value) BIT4 bearer_id,
template (value) BIT8 proc_tid,
template (value) EPS_QualityOfServiceV qos,
template (value) octetstring apn,
template (value) BIT3 addr_type,
template (value) octetstring addr_info) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_ActDefEPSBearerContextRequest := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11000001'B,
ePS_QoS := {
lengthIndicator := 0,
ePS_QualityOfServiceV := qos
},
accessPointName := {
lengthIndicator := 0,
accessPointNameValue := apn
},
pDN_Address := {
lengthIndicator := 0,
typeValue := addr_type,
spare := '00000'B,
addressInformation := addr_info
},
transactionIdentifier := omit,
negotiatedQoS := omit,
negotiated_LLC_SAPI := omit,
radioPriority := omit,
packetFlowID := omit,
aPN_AMBR := omit,
esmCause := omit,
protocolConfigOptions := omit,
connectivityType := omit,
wLANOffloadIndication := omit,
nBIFOMContainer := omit,
headerCompressinConfiguration := omit,
controlPlaneOnlyIndication := omit,
extendedProtocolConfigurationOptions := omit,
servingPLMNRateControl := omit,
extended_APN_AMBR := omit,
extendedQoS := omit
}
}
}
}
/* 8.3.4 Activate Default EPS Bearer Context Accept */
template (value) PDU_NAS_EPS
ts_NAS_ActDefEpsBearCtxAck(template (value) BIT4 bearer_id,
template (value) BIT8 proc_tid,
template (omit) ProtocolConfigOptionsV pco) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_ActDefEPSBearerContextAccept := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11000010'B,
protocolConfigOptions := ts_NAS_PCO_TLV(pco),
extendedProtocolConfigurationOptions := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_ActDefEpsBearCtxAck(template (present) BIT4 bearer_id := ?,
template (present) BIT8 proc_tid := ?,
template ProtocolConfigOptionsV pco := *) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_ActDefEPSBearerContextAccept := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11000010'B,
protocolConfigOptions := tr_NAS_PCO_TLV(pco),
extendedProtocolConfigurationOptions := *
}
}
}
}
/* 8.3.5 Activate Default EPS Bearer Context Reject */
template (value) PDU_NAS_EPS
ts_NAS_ActDefEpsBearCtxRej(template (value) BIT4 bearer_id,
template (value) BIT8 proc_tid,
template (value) ESM_CauseV cause) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_ActDefEPSBearerContextReject := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11000011'B,
esmCause := cause,
protocolConfigOptions := omit,
extendedProtocolConfigurationOptions := omit
}
}
}
}
template (present) PDU_NAS_EPS
tr_NAS_ActDefEpsBearCtxRej(template (present) BIT4 bearer_id := ?,
template (present) BIT8 proc_tid := ?,
template (present) ESM_CauseV cause := ?) := {
protocolDiscriminator := c_EPS_NAS_PD_ESM,
ePS_messages := {
ePS_SessionManagement := {
pDU_NAS_EPS_ActDefEPSBearerContextReject := {
ePSBearerIdentity := bearer_id,
procedureTransactionIdentifier := proc_tid,
messageType := '11000011'B,
esmCause := cause,
protocolConfigOptions := *,
extendedProtocolConfigurationOptions := *
}
}
}
}
}