From 38575a753b155d26fb6ba1ddd51983273833caca Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 15 Feb 2018 20:41:37 +0100 Subject: L3_Templates: Add various GMM related templates ... needed for upcoming SGSN testing Change-Id: I2026c5db3d709566dc3764515d3711b361d82a06 --- library/L3_Templates.ttcn | 318 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 317 insertions(+), 1 deletion(-) diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index b506865b..a3db409d 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -10,12 +10,13 @@ module L3_Templates { */ import from General_Types all; +import from Osmocom_Types all; import from MobileL3_Types all; import from MobileL3_CommonIE_Types all; import from MobileL3_MM_Types all; import from MobileL3_RRM_Types all; import from MobileL3_CC_Types all; -//import from MobileL3_GMM_SM_Types all; +import from MobileL3_GMM_SM_Types all; //import from MobileL3_SMS_Types all; @@ -63,6 +64,13 @@ template MobileIdentityLV ts_MI_TMSI_LV(OCT4 tmsi) := { } } +/* send template fro Mobile Identity (TMSI) */ +template MobileIdentityTLV ts_MI_TMSI_TLV(OCT4 tmsi) := { + elementIdentifier := '0000000'B, /* overwritten */ + spare1 := '0'B, + mobileIdentityLV := ts_MI_TMSI_LV(tmsi) +} + private function f_enc_IMSI_L3(hexstring digits) return IMSI_L3 { var IMSI_L3 l3; var integer len := lengthof(digits); @@ -1155,6 +1163,314 @@ template PDU_ML3_NW_MS tr_ML3_MT_CC_SETUP(integer tid, template hexstring called } } +/*********************************************************************** + * GPRS Mobility Management + ***********************************************************************/ + +template (value) MSNetworkCapabilityV ts_GMM_MsNetCapV := { + gea1bit := '1'B, + smCapabilitiesviaDedicatedChannels := '1'B, + smCapabilitiesviaGPRSChannels := '0'B, + ucs2Support := '1'B, + ssScreeningIndicator := '01'B, + solSACapability := omit, + revisionLevelIndicatior := omit, + pFCFeatureMode := omit, + extendedGEAbits := omit, + lcsVAcapability := omit, + pSInterRATHOtoUTRANIuModeCapability := omit, + pSInterRATHOtoEUTRANS1ModeCapability := omit, + eMMCombinedProceduresCapability := omit, + iSRSupport := omit, + sRVCCtoGERANUTRANCapability := omit, + ePCCapability := omit, + nFCapability := omit, + gERANNertworkSharingCapability := omit, + spare_octets := omit +}; + +template (value) MSNetworkCapabilityLV ts_GMM_MsNetCapLV := { + lengthIndicator := 0, /* overwritten */ + msNetworkCapabilityV := ts_GMM_MsNetCapV +}; + +type enumerated GprsAttachType { + GPRS_ATT_T_GPRS, + GPRS_ATT_T_GPRS_IMSI_COMBINED +}; + +function ts_GMM_AttachType(boolean combined := false, boolean follow_on_pending := false) +return AttachTypeV { + var AttachTypeV att; + if (combined) { + att.attachType := '011'B; + } else { + att.attachType := '001'B; + } + att.for_l3 := bool2bit(combined); + return att; +} + +type enumerated GprsUpdateType { + GPRS_UPD_T_RA ('000'B), + GPRS_UPD_T_RA_LA_COMBINED ('001'B), + GPRS_UPD_T_RA_LA_COMBINED_IMSI_ATT ('010'B), + GPRS_UPD_T_PERIODIC ('011'B) +}; + +/* 10.5.5.18 Update Type */ +template UpdateTypeV ts_GMM_UpdateType(GprsUpdateType upd_t, boolean combined := false, + boolean follow_on_pending := false) := { + valueField := int2bit(enum2int(upd_t), 3), + for_l3 := bool2bit(combined) +} + +template (value) DRXParameterV ts_DrxParameterV := { + splitPGCycleCode := '00'O, /* no DRX */ + nonDRXTimer := '000'B, /* no non-DRX mode */ + splitOnCCCH := '0'B, /* not supported */ + cnSpecificDRXCycleLength := '0000'B /* SI value used */ +}; + +template (value) AccessCapabilitiesStruct ts_AccesssCap := { + lengthIndicator := 0, /* overwritten */ + accessCapabilities := { + rfPowerCapability := '001'B, /* FIXME */ + presenceBitA5 := '0'B, + a5bits := omit, + esind := '1'B, + psbit := '0'B, + vgcs := '0'B, + vbs := '0'B, + presenceBitMultislot := '0'B, + multislotcap := omit, + accessCapAdditionsAfterRel97 := omit + }, + spare_bits := omit +} + +template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att) := { + mSRACapabilityValues := { + mSRACapabilityValuesExclude1111 := { + accessTechnType := '0001'B, /* E-GSM */ + accessCapabilities := ts_AccesssCap + } + }, + presenceBitMSRACap := '0'B +}; + +template (value) MSRadioAccessCapabilityLV ts_MS_RaCapa := { + lengthIndicator := 0, /* overwritten */ + msRadioAccessCapabilityV := { + ts_RaCapRec('0001'B) /* E-GSM */ + } +} + +template (value) PDU_L3_MS_SGSN + ts_GMM_ATTACH_REQ(MobileIdentityLV mi_lv, RoutingAreaIdentificationV old_ra, + boolean combined := false, boolean follow_on_pending := false, + template (omit) MobileStationClassmark2_TLV cm2_tlv, + template (omit) MobileStationClassmark3_TLV cm3_tlv + ) := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + attachRequest := { + messageType := '00000000'B, /* overwritten */ + msNetworkCapability := ts_GMM_MsNetCapLV, + attachType := valueof(ts_GMM_AttachType(combined, follow_on_pending)), + gprsCKSN := { '111'B, '0'B }, + drxParam := ts_DrxParameterV, + mobileIdentity := mi_lv, + oldRoutingAreaID := old_ra, + msRACap := ts_MS_RaCapa, + ptmsiSignature := omit, /* TODO */ + reqGPRStimer := omit, + tmsiStatus := omit, + pC_LCSCapability := omit, + mobileStationClassmark2 := cm2_tlv, + mobileStationClassmark3 := cm3_tlv, + supportedCodecs := omit, + uENetworkCapability := omit, + additionalMobileIdentity := omit, + routingAreaIdentification2 := omit, + voiceDomainandUEsUsageSetting := omit, + deviceProperties := omit, + p_TMSI_Type := omit, + mS_NetworkFeatureSupport := omit, + oldLocationAreaIdentification := omit, + additionalUpdateType := omit, + tMSIBasedNRIcontainer := omit, + t3324 := omit, + t3312_ExtendedValue := omit, + extendedDRXParameters := omit + } + } + } +} + + +template (value) PDU_L3_MS_SGSN ts_GMM_ATTACH_COMPL := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + attachComplete := { + messageType := '00000000'B, /* overwritten */ + interRATHandoverInformation := omit, + eUTRANinterRATHandoverInformation := omit + } + } + } +} + +template (value) PDU_L3_MS_SGSN + ts_GMM_RAU_REQ(MobileIdentityLV mi_lv, GprsUpdateType upd_type, + RoutingAreaIdentificationV old_ra, + boolean follow_on_pending := false, + template (omit) MobileStationClassmark2_TLV cm2_tlv, + template (omit) MobileStationClassmark3_TLV cm3_tlv + ) := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + routingAreaUpdateRequest := { + messageType := '00000000'B, /* overwritten */ + updateType := ts_GMM_UpdateType(upd_type, follow_on_pending), + gprsCKSN := { '111'B, '0'B }, + oldRoutingAreaId := old_ra, + msRACap := ts_MS_RaCapa, + oldPTMSISignature := omit, /* TODO */ + readyTimerValue := omit, + drxParameter := omit, + tmsiStatus := omit, + ptmsi := omit, + mSNetworkCapability := omit, + pdpContextStatus := omit, /* TODO */ + pC_LCSCapability := omit, + uENetworkCapability := omit, + additionalMobileIdentity := omit, + oldRoutingAreaIdentification2 := omit, + mobileStationClassmark2 := cm2_tlv, + mobileStationClassmark3 := cm3_tlv, + supportedCodecs := omit, + voiceDomainUEUsageSetting := omit, + p_TMSI_Type := omit, + deviceProperties := omit, + mS_NetworkFeatureSupport := omit, + oldLocationAreaIdentification := omit, + additionalUpdateType := omit, + tMSIBasedNRIcontainer := omit, + t3324 := omit, + t3312_ExtendedValue := omit, + extendedDRXParameters := omit + } + } + } +} + +template (value) PDU_L3_MS_SGSN ts_GMM_RAU_COMPL := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + routingAreaUpdateComplete := { + messageType := '00000000'B, /* overwritten */ + receiveNPDUNumbers := omit, + interRATHandoverInformation := omit, + eUTRANinterRATHandoverInformation := omit + } + } + } +} + +template (value) PDU_L3_MS_SGSN ts_GMM_PTMSI_REALL_COMPL := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + p_TMSIReallocationComplete := { + messageType := '00000000'B /* overwritten */ + } + } + } +} + +template (value) PDU_L3_MS_SGSN ts_GMM_AUTH_CIPH_COMPL(ACReferenceNumberV ref, OCT4 res) := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + authenticationAndCipheringResponse := { + messageType := '00000000'B, /* overwritten */ + acReferenceNumber := ref, + spare := '0000'B, + authenticationParResp := { + elementIdentifier := '22'O, + valueField := res + }, + imeisv := omit, + authenticationRespParExt := omit + } + } + } +} + +template (value) PDU_L3_MS_SGSN ts_GMM_ID_RESP(MobileIdentityLV mi_lv) := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + identityResponse := { + messageType := '00000000'B, /* overwritten */ + mobileIdentity := mi_lv + } + } + } +} + +const BIT3 c_GMM_DTT_MO_GPRS := '001'B; +const BIT3 c_GMM_DTT_MO_IMSI := '010'B; +const BIT3 c_GMM_DTT_MO_GPRS_IMSI_COMBINED := '011'B; + +template (value) DetachTypeV ts_GMM_DetType(BIT3 dtt) := { + detachType := dtt, + powerOffFlag := '0'B +} + +template (value) PDU_L3_MS_SGSN ts_GMM_DET_REQ_MO(BIT3 dtt := c_GMM_DTT_MO_GPRS) := { + discriminator := '0000'B, /* overwritten */ + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + gprs_mm := { + detachRequest_MS_SGSN := { + messageType := '00000000'B, /* overwritten */ + detachType := valueof(ts_GMM_DetType(dtt)), + spare := '0000'B, + ptmsi := omit, /* TODO */ + ptmsiSignature := omit /* TODO */ + } + } + } +} } -- cgit v1.2.3