From 6dc2ac471b14849fe9e4d41b6bce4f18c443f72d Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 16 Nov 2020 09:16:17 +0100 Subject: gbproxy: Test for RA Capability procedure Change-Id: If7e5a5cab1e445e0b4ef0466990e352143c31245 --- library/Osmocom_Gb_Types.ttcn | 141 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 140 insertions(+), 1 deletion(-) (limited to 'library') diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn index 8271ced5..82fdb07b 100644 --- a/library/Osmocom_Gb_Types.ttcn +++ b/library/Osmocom_Gb_Types.ttcn @@ -929,6 +929,43 @@ octetstring sdu) := { return ret; } +template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := { + iEI := '1E'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + unstructured_Value := tag +} + +template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := { + iEI := '1E'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + unstructured_Value := tag +} + +template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := { + iEI := '1A'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + rA_CAP_UPD_Cause_value := cause +} + +template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := { + iEI := '1A'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + rA_CAP_UPD_Cause_value := cause +} + + template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci, template BssgpCellId cell_id) := { pDU_BSSGP_BVC_RESET := { @@ -1204,6 +1241,48 @@ octetstring sdu) := { }, presenceBitMSRACap := '0'B }; + template (present) MSRACapabilityValuesRecord_BSSGP + tr_RaCapRec_BSSGP(template (present) BIT4 att := '0001'B /* E-GSM */, template MultislotCap_GPRS_BSSGP mscap_gprs := *, + template MultislotCap_EGPRS_BSSGP mscap_egprs := *) := { + mSRACapabilityValues := { + mSRACapabilityValuesExclude1111 := { + accessTechnType := att, /* E-GSM */ + accessCapabilities := { + lengthIndicator := ?, /* overwritten */ + accessCapabilities := { + rfPowerCapability := '001'B, /* FIXME */ + presenceBitA5 := ?, + a5bits := *, + esind := '1'B, + psbit := '0'B, + vgcs := '0'B, + vbs := '0'B, + presenceBitMultislot := '1'B, + multislotcap := { + presenceBitHscsd := '0'B, + hscsdmultislotclass := omit, + presenceBitGprs := ?, + gprsmultislot := mscap_gprs, + presenceBitSms := '0'B, + multislotCap_SMS := omit, + multislotCapAdditionsAfterRel97 := { + presenceBitEcsdmulti := '0'B, + ecsdmultislotclass := *, + presenceBitEgprsmulti := ?, + multislotCap_EGPRS := mscap_egprs, + presenceBitDtmGprsmulti := ?, + multislotCapdtmgprsmultislotsubclass := * + } + }, + accessCapAdditionsAfterRel97 := * + }, + spare_bits := * + } + } + }, + presenceBitMSRACap := '0'B + }; + template QoS_Profile_V t_defaultQos := { peak_Bit_Rate := int2oct(80, 2), @@ -1253,7 +1332,7 @@ octetstring sdu) := { return omit; } else { ret := { - iEI := '00'O, + iEI := '13'O, ext := '1'B, lengthIndicator := { length1 := 1 @@ -1264,6 +1343,21 @@ octetstring sdu) := { } } + function tr_BSSGP_IE_MSRAcap(template MSRadioAccessCapabilityV_BSSGP racap) return template MS_Radio_Access_Capability { + var template MS_Radio_Access_Capability ret; + if (istemplatekind(racap, "omit")) { + return omit; + } else { + ret := { + iEI := '13'O, + ext := ?, + lengthIndicator := ?, + mSRadioAccessCapabilityV_BSSGP := racap + } + return ret; + } + } + template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu, template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit, template (omit) IMSI_BSSGP imsi := omit) := { @@ -1589,6 +1683,51 @@ octetstring sdu) := { } } +/* 10.2.3 */ +template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli, + template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := { + pDU_BSSGP_RA_CAPABILITY := { + bssgpPduType := '02'O, + tLLI := ts_BSSGP_TLLI(tlli), + mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap) + } +} +template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli, + template MSRadioAccessCapabilityV_BSSGP racap) := { + pDU_BSSGP_RA_CAPABILITY := { + bssgpPduType := '02'O, + tLLI := ts_BSSGP_TLLI(tlli), + mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap) + } +} + + +/* 10.3.3 */ +template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := { + pDU_BSSGP_RA_CAPABILITY_UPDATE := { + bssgpPduType := '08'O, + tLLI := ts_BSSGP_TLLI(tlli), + tag := ts_BSSGP_IE_Tag(tag) + } +} + +/* 10.3.4 */ +template (value) PDU_BSSGP +ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause, + template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := { + pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := { + bssgpPduType := '09'O, + tLLI := ts_BSSGP_TLLI(tlli), + tag := ts_BSSGP_IE_Tag(tag), + iMSI := omit, + rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause), + mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap) + } +} + + + + /* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := ( -- cgit v1.2.3