From cc7e4dc40e688b0e51035727030e20522b71d597 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 14 Dec 2017 21:55:10 +0100 Subject: BSSMAP_Templates: Enable use for AoIP, not just E1-CIC Change-Id: I421ade4ae1c0c19c9c2b1172cdcf8d6c4cd55205 --- bsc-nat/MSC_ConnectionHandler.ttcn | 4 ++-- bsc/BSC_Tests.ttcn | 2 +- bsc/MSC_ConnectionHandler.ttcn | 6 ++++-- library/BSSMAP_Templates.ttcn | 30 ++++++++++++++++++++++-------- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/bsc-nat/MSC_ConnectionHandler.ttcn b/bsc-nat/MSC_ConnectionHandler.ttcn index 6a9a57f9..3fc11e9b 100644 --- a/bsc-nat/MSC_ConnectionHandler.ttcn +++ b/bsc-nat/MSC_ConnectionHandler.ttcn @@ -86,9 +86,9 @@ function main(integer connection_id, integer e1_timeslot) runs on MSC_ConnHdlr { [g_state == MSC_STATE_NONE] BSSAP.receive(tr_BSSMAP_ComplL3) -> value bssap { /* respond with ASSIGNMENT CMD */ g_state := MSC_STATE_WAIT_ASS_COMPL; - BSSAP.send(ts_BSSMAP_AssignmentReq(0, e1_timeslot)); + BSSAP.send(ts_BSSMAP_AssignmentReq(ts_BSSMAP_IE_CIC(0, e1_timeslot))); } - [g_state == MSC_STATE_WAIT_ASS_COMPL] BSSAP.receive(tr_BSSMAP_AssignmentComplete) { + [g_state == MSC_STATE_WAIT_ASS_COMPL] BSSAP.receive(tr_BSSMAP_AssignmentComplete(?,*)) { /* FIXME: Send MGCP CRCX */ g_state := MSC_STATE_WAIT_CRCX_ACK; var MgcpTransId trans_id := f_mgcp_alloc_tid(); diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index faf1a6ef..090ed0c3 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -392,7 +392,7 @@ testcase TC_assignment_cic_only() runs on test_CT { dt := f_est_dchan('23'O, 23, '00000000'O); /* send assignment without AoIP IEs */ - BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_AssignmentReq(0, 1))); + BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_AssignmentReq(ts_BSSMAP_IE_CIC(0, 1)))); alt { [] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentComplete)) { setverdict(fail, "AoIP BSC cannot accept ASSIGNMENT without AoIP Transport IE"); diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index 6a9a57f9..8fa71fba 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -86,9 +86,11 @@ function main(integer connection_id, integer e1_timeslot) runs on MSC_ConnHdlr { [g_state == MSC_STATE_NONE] BSSAP.receive(tr_BSSMAP_ComplL3) -> value bssap { /* respond with ASSIGNMENT CMD */ g_state := MSC_STATE_WAIT_ASS_COMPL; - BSSAP.send(ts_BSSMAP_AssignmentReq(0, e1_timeslot)); + var BSSMAP_IE_AoIP_TransportLayerAddress tla; + tla := valueof(ts_BSSMAP_IE_AoIP_TLA({ipv4:='01020304'O}, 12345)); + BSSAP.send(ts_BSSMAP_AssignmentReq(omit, tla)); } - [g_state == MSC_STATE_WAIT_ASS_COMPL] BSSAP.receive(tr_BSSMAP_AssignmentComplete) { + [g_state == MSC_STATE_WAIT_ASS_COMPL] BSSAP.receive(tr_BSSMAP_AssignmentComplete(*,?)) { /* FIXME: Send MGCP CRCX */ g_state := MSC_STATE_WAIT_CRCX_ACK; var MgcpTransId trans_id := f_mgcp_alloc_tid(); diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn index 6e7813f8..0d2db3da 100644 --- a/library/BSSMAP_Templates.ttcn +++ b/library/BSSMAP_Templates.ttcn @@ -256,7 +256,17 @@ template (value) BSSMAP_IE_CircuitIdentityCode ts_BSSMAP_IE_CIC(uint11_t span, u cicLow := bit2oct((substr(int2bit(span, 11), 8, 3) << 5) & int2bit(ts, 5)) } -template (value) PDU_BSSAP ts_BSSMAP_AssignmentReq(uint11_t span, uint5_t ts) +template (value) BSSMAP_IE_AoIP_TransportLayerAddress ts_BSSMAP_IE_AoIP_TLA(BSSMAP_FIELD_IPAddress addr, + uint16_t udp_port) := { + elementIdentifier := '7C'O, + lengthIndicator := 0, /* overwritten */ + ipAddress := addr, + uDPPortValue := udp_port +} + +template PDU_BSSAP +ts_BSSMAP_AssignmentReq(template BSSMAP_IE_CircuitIdentityCode cic := omit, + template BSSMAP_IE_AoIP_TransportLayerAddress aoip := omit) modifies ts_BSSAP_BSSMAP := { pdu := { bssmap := { @@ -265,7 +275,7 @@ modifies ts_BSSAP_BSSMAP := { channelType := ts_BSSMAP_IE_ChannelType, layer3HeaderInfo := omit, priority := omit, - circuitIdentityCode := ts_BSSMAP_IE_CIC(span, ts), + circuitIdentityCode := cic, downLinkDTX_Flag := omit, interferenceBandToBeUsed := omit, classmarkInformationType2 := omit, @@ -276,7 +286,7 @@ modifies ts_BSSAP_BSSMAP := { serviceHandover := omit, encryptionInformation := omit, talkerPriority := omit, - aoIPTransportLayer := omit, + aoIPTransportLayer := aoip, codecList := omit, callIdentifier := omit, kC128 := omit, @@ -321,7 +331,9 @@ template PDU_BSSAP tr_BSSMAP_AssignmentReq modifies tr_BSSAP_BSSMAP := { } } -template (value) PDU_BSSAP ts_BSSMAP_AssignmentComplete(BSSMAP_IE_CircuitIdentityCode cic) +template PDU_BSSAP +ts_BSSMAP_AssignmentComplete(template BSSMAP_IE_CircuitIdentityCode cic := omit, + template BSSMAP_IE_AoIP_TransportLayerAddress aoip := omit) modifies ts_BSSAP_BSSMAP := { pdu := { bssmap := { @@ -336,7 +348,7 @@ modifies ts_BSSAP_BSSMAP := { speechVersion := omit, lSAIdentifier := omit, talkerPriority := omit, - aoIPTransportLayer := omit, + aoIPTransportLayer := aoip, speechCodec := omit, codecList := omit, lCLS_BSS_Status := omit @@ -345,13 +357,15 @@ modifies ts_BSSAP_BSSMAP := { } } -template PDU_BSSAP tr_BSSMAP_AssignmentComplete modifies tr_BSSAP_BSSMAP := { +template PDU_BSSAP tr_BSSMAP_AssignmentComplete(template BSSMAP_IE_CircuitIdentityCode cic := *, + template BSSMAP_IE_AoIP_TransportLayerAddress aoip := *) +modifies tr_BSSAP_BSSMAP := { pdu := { bssmap := { assignmentComplete := { messageType := '02'O, /* overwritten */ rR_Cause := *, - circuitIdentityCode := ?, + circuitIdentityCode := cic, cellIdentifier := *, chosenChannel := *, chosenEncryptionAlgorithm := *, @@ -359,7 +373,7 @@ template PDU_BSSAP tr_BSSMAP_AssignmentComplete modifies tr_BSSAP_BSSMAP := { speechVersion := *, lSAIdentifier := *, talkerPriority := *, - aoIPTransportLayer := *, + aoIPTransportLayer := aoip, speechCodec := *, codecList := *, lCLS_BSS_Status := * -- cgit v1.2.3