aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-19 14:58:46 +0100
committerHarald Welte <laforge@gnumonks.org>2018-09-26 07:27:24 +0000
commitbd0ef93d4fd84da20565a26f1bbaa7d737c2be77 (patch)
tree065a24cf4d2caeb9b6822546a9659fef7aed7520 /library
parent6b3e4ab4b71e4089302c1338512b7e1684e0e755 (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.ttcn6
-rw-r--r--library/BSSMAP_Templates.ttcn133
-rw-r--r--library/L3_Templates.ttcn70
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;