diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-03-19 14:58:46 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-09-26 07:27:24 +0000 |
commit | bd0ef93d4fd84da20565a26f1bbaa7d737c2be77 (patch) | |
tree | 065a24cf4d2caeb9b6822546a9659fef7aed7520 /library | |
parent | 6b3e4ab4b71e4089302c1338512b7e1684e0e755 (diff) |
bsc: inter-BSC HO: add TC_ho_out_of_this_bsc, TC_ho_into_this_bsc
Add f_gen_handover_req() like f_gen_ass_req(), to match AoIP or SCCPlite
requirements.
For incoming HO, MSC_ConnHdlr needs to know the SCCP addresses to expect the
incoming SCCP Connection from MSC to BSC. Add 'handover' section to
TestHdlrParams, and pass in the addresses from test_CT via that.
In osmo-bsc.cfg, add a remote neighbor config, so that the VTY command
'handover any to arfcn 123 bsic any' can trigger an outgoing inter-BSC HO.
Add various BSSMAP handover templates to BSSMAP_Templates.ttcn.
Add RR Ho Command template to L3_Templates.ttcn.
Move ts_BSSAP_Conn_Req() from msc/BSC_ConnectionHandler.ttcn to
library/BSSMAP_Emulation.ttcn, so we can also model an SCCP Connection Request
in BSC_Tests.ttcn (this time from MSC to BSC).
Add the two new tests to bsc/expected-results.xml.
Related: OS#2283
Change-Id: Id22852d4be7f127d827e7a8beeec55db27c07f03
Diffstat (limited to 'library')
-rw-r--r-- | library/BSSMAP_Emulation.ttcn | 6 | ||||
-rw-r--r-- | library/BSSMAP_Templates.ttcn | 133 | ||||
-rw-r--r-- | library/L3_Templates.ttcn | 70 |
3 files changed, 209 insertions, 0 deletions
diff --git a/library/BSSMAP_Emulation.ttcn b/library/BSSMAP_Emulation.ttcn index 921ac59b..55ce2fb0 100644 --- a/library/BSSMAP_Emulation.ttcn +++ b/library/BSSMAP_Emulation.ttcn @@ -102,6 +102,12 @@ template PDU_DTAP_MO tr_PDU_DTAP_MO(template PDU_ML3_MS_NW dtap, template OCT1 d dtap := dtap } +template BSSAP_Conn_Req ts_BSSAP_Conn_Req(SCCP_PAR_Address peer, SCCP_PAR_Address own, PDU_BSSAP bssap) := { + addr_peer := peer, + addr_own := own, + bssap := bssap +}; + /* port between individual per-connection components and this dispatcher */ type port BSSAP_Conn_PT message { diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn index 70db2ece..adfcc9e2 100644 --- a/library/BSSMAP_Templates.ttcn +++ b/library/BSSMAP_Templates.ttcn @@ -670,6 +670,139 @@ template PDU_BSSAP tr_BSSMAP_ClearRequest modifies tr_BSSAP_BSSMAP := { } } +template PDU_BSSAP tr_BSSMAP_HandoverRequired modifies tr_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverRequired := { + messageType := '11'O + } + } + } +} + +template (value) PDU_BSSAP ts_BSSMAP_HandoverCommand(octetstring layer3info) +modifies ts_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverCommand := { + messageType := '13'O, + layer3Information := { + elementIdentifier := '17'O, + lengthIndicator := 0, + layer3info := layer3info + }, + cellIdentifier := omit, + newBSSToOldBSSInfo := omit, + talkerPriority := omit + } + } + } +} + +template PDU_BSSAP ts_BSSMAP_HandoverRequest( + template BSSMAP_IE_CircuitIdentityCode cic := omit, + template BSSMAP_IE_AoIP_TransportLayerAddress aoip_tla := omit, + template BSSMAP_IE_CellIdentifier cell_id_target := ts_CellID_LAC_CI(1, 0), + template BSSMAP_IE_CellIdentifier cell_id_source := ts_CellID_LAC_CI(1, 1) + ) +modifies ts_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverRequest := { + messageType := '10'O, + channelType := ts_BSSMAP_IE_ChannelType, + encryptionInformation := + ts_BSSMAP_IE_EncrInfo('0000000000000000'O,'01'O), + classmarkInformationType := { + classmarkInformationType1 := { + elementIdentifier := '1D'O, + rf_PowerCapability := '000'B, + a5_1 := '0'B, + esind := '0'B, + revisionLevel := '10'B, + spare1_1 := '0'B + } + }, + cellIdentifierSource := cell_id_source, + priority := omit, + circuitIdentityCode := cic, + downLinkDTX_Flag := omit, + cellIdentifierTarget := cell_id_target, + interferenceBandToBeUsed := omit, + cause := omit, + classmarkInformationType3 := omit, + currentChannelType1 := omit, + speechVersion := omit, + groupCallReference := omit, + talkerFlag := omit, + configurationEvolutionIndication := omit, + chosenEncryptionAlgorithm := omit, + oldToNewBSSInfo := omit, + lSAInformation := omit, + lSAAccessControlSuppression := omit, + serviceHandover := omit, + iMSI_bssmap := omit, + sourceToTargetRNCTransparentInfo := omit, + sourceToTargetRNCTransparentInfoCDMA := omit, + sNAAccessInformation := omit, + talkerPriority := omit, + aoIPTransportLayer := aoip_tla, + codecList := omit, + callIdentifier := omit, + kC128 := omit, + globalCallReference := omit, + lCLS_Configuration := omit, + connectionStatusControl := omit + } + } + } +} + +template PDU_BSSAP tr_BSSMAP_HandoverRequestAcknowledge(template octetstring layer3info) +modifies tr_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverRequestAck := { + messageType := '12'O, + layer3Information := { + elementIdentifier := '17'O, + lengthIndicator := ?, + layer3info := layer3info + } + } + } + } +} + +template PDU_BSSAP tr_BSSMAP_HandoverDetect +modifies tr_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverDetect := { + messageType := '1B'O, + talkerPriority := * + } + } + } +} + +template PDU_BSSAP tr_BSSMAP_HandoverComplete +modifies tr_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverComplete := { + messageType := '14'O, + rR_Cause := *, + talkerPriority := *, + speechCodec := *, + codecList := *, + chosenEncryptionAlgorithm := *, + chosenChannel := *, + lCLS_BSS_Status := * + } + } + } +} template BSSMAP_IE_IMSI ts_BSSMAP_Imsi(hexstring imsi_digits) := { elementIdentifier := '08'O, diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index 1ce84cf2..a05aba2e 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -496,6 +496,76 @@ template (value) PDU_ML3_MS_NW ts_RRM_HandoverComplete(OCT1 cause) := { } } +template (value) PDU_ML3_NW_MS ts_RR_HandoverCommand := { + discriminator := '0110'B, + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + rrm := { + handoverCommand := { + messageType := '00101011'B, + cellDescription := { + bcc := '001'B, + ncc := '010'B, + BCCHArfcn_HighPart := '11'B, + BCCHArfcn_LowPart := '04'O + }, + channelDescription2 := { + timeslotNumber := '110'B, + channelTypeandTDMAOffset := '00001'B, + octet3 := '00'O, + octet4 := '09'O + }, + handoverReference := { + handoverReferenceValue := '00'O + }, + powerCommandAndAccesstype := { + powerlevel := '00000'B, + fPC_EP := '0'B, + ePC_Mode := '0'B, + aTC := '0'B + }, + synchronizationIndication := omit, + frequencyShortListAfterTime := omit, + frequencyListAfterTime := omit, + cellChannelDescription := omit, + multislotAllocation := omit, + modeOfChannelSet1 := omit, + modeOfChannelSet2 := omit, + modeOfChannelSet3 := omit, + modeOfChannelSet4 := omit, + modeOfChannelSet5 := omit, + modeOfChannelSet6 := omit, + modeOfChannelSet7 := omit, + modeOfChannelSet8 := omit, + descrOf2ndCh_at := omit, + modeOf2ndChannel := omit, + frequencyChannelSequence_at := omit, + mobileAllocation_at := omit, + startingTime := omit, + timeDifference := omit, + timingAdvance := omit, + frequencyShortListBeforeTime := omit, + frequencyListBeforeTime := omit, + descrOf1stCh_bt := omit, + descrOf2ndCh_bt := omit, + frequencyChannelSequence_bt := omit, + mobileAllocation_bt := omit, + cipherModeSetting := omit, + vGCS_TargetModeIndication := omit, + multiRateConfiguration := omit, + dynamicARFCN_Mapping := omit, + vGCS_Ciphering_Parameters := omit, + dedicatedServiceInformation := omit, + pLMNIndex := omit, + extendedTSCSet_afterTime := omit, + extendedTSCSet_beforeTime := omit + } + } + } +} + function ts_CM3_TLV(template (omit) OCTN cm3) return template MobileStationClassmark3_TLV { if (not isvalue(cm3)) { return omit; |