BSSMAP_Templates: Enable use for AoIP, not just E1-CIC

Change-Id: I421ade4ae1c0c19c9c2b1172cdcf8d6c4cd55205
This commit is contained in:
Harald Welte 2017-12-14 21:55:10 +01:00
parent 9958a4d7c8
commit cc7e4dc40e
4 changed files with 29 additions and 13 deletions

View File

@ -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 { [g_state == MSC_STATE_NONE] BSSAP.receive(tr_BSSMAP_ComplL3) -> value bssap {
/* respond with ASSIGNMENT CMD */ /* respond with ASSIGNMENT CMD */
g_state := MSC_STATE_WAIT_ASS_COMPL; 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 */ /* FIXME: Send MGCP CRCX */
g_state := MSC_STATE_WAIT_CRCX_ACK; g_state := MSC_STATE_WAIT_CRCX_ACK;
var MgcpTransId trans_id := f_mgcp_alloc_tid(); var MgcpTransId trans_id := f_mgcp_alloc_tid();

View File

@ -392,7 +392,7 @@ testcase TC_assignment_cic_only() runs on test_CT {
dt := f_est_dchan('23'O, 23, '00000000'O); dt := f_est_dchan('23'O, 23, '00000000'O);
/* send assignment without AoIP IEs */ /* 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 { alt {
[] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentComplete)) { [] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentComplete)) {
setverdict(fail, "AoIP BSC cannot accept ASSIGNMENT without AoIP Transport IE"); setverdict(fail, "AoIP BSC cannot accept ASSIGNMENT without AoIP Transport IE");

View File

@ -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 { [g_state == MSC_STATE_NONE] BSSAP.receive(tr_BSSMAP_ComplL3) -> value bssap {
/* respond with ASSIGNMENT CMD */ /* respond with ASSIGNMENT CMD */
g_state := MSC_STATE_WAIT_ASS_COMPL; 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 */ /* FIXME: Send MGCP CRCX */
g_state := MSC_STATE_WAIT_CRCX_ACK; g_state := MSC_STATE_WAIT_CRCX_ACK;
var MgcpTransId trans_id := f_mgcp_alloc_tid(); var MgcpTransId trans_id := f_mgcp_alloc_tid();

View File

@ -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)) 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 := { modifies ts_BSSAP_BSSMAP := {
pdu := { pdu := {
bssmap := { bssmap := {
@ -265,7 +275,7 @@ modifies ts_BSSAP_BSSMAP := {
channelType := ts_BSSMAP_IE_ChannelType, channelType := ts_BSSMAP_IE_ChannelType,
layer3HeaderInfo := omit, layer3HeaderInfo := omit,
priority := omit, priority := omit,
circuitIdentityCode := ts_BSSMAP_IE_CIC(span, ts), circuitIdentityCode := cic,
downLinkDTX_Flag := omit, downLinkDTX_Flag := omit,
interferenceBandToBeUsed := omit, interferenceBandToBeUsed := omit,
classmarkInformationType2 := omit, classmarkInformationType2 := omit,
@ -276,7 +286,7 @@ modifies ts_BSSAP_BSSMAP := {
serviceHandover := omit, serviceHandover := omit,
encryptionInformation := omit, encryptionInformation := omit,
talkerPriority := omit, talkerPriority := omit,
aoIPTransportLayer := omit, aoIPTransportLayer := aoip,
codecList := omit, codecList := omit,
callIdentifier := omit, callIdentifier := omit,
kC128 := 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 := { modifies ts_BSSAP_BSSMAP := {
pdu := { pdu := {
bssmap := { bssmap := {
@ -336,7 +348,7 @@ modifies ts_BSSAP_BSSMAP := {
speechVersion := omit, speechVersion := omit,
lSAIdentifier := omit, lSAIdentifier := omit,
talkerPriority := omit, talkerPriority := omit,
aoIPTransportLayer := omit, aoIPTransportLayer := aoip,
speechCodec := omit, speechCodec := omit,
codecList := omit, codecList := omit,
lCLS_BSS_Status := 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 := { pdu := {
bssmap := { bssmap := {
assignmentComplete := { assignmentComplete := {
messageType := '02'O, /* overwritten */ messageType := '02'O, /* overwritten */
rR_Cause := *, rR_Cause := *,
circuitIdentityCode := ?, circuitIdentityCode := cic,
cellIdentifier := *, cellIdentifier := *,
chosenChannel := *, chosenChannel := *,
chosenEncryptionAlgorithm := *, chosenEncryptionAlgorithm := *,
@ -359,7 +373,7 @@ template PDU_BSSAP tr_BSSMAP_AssignmentComplete modifies tr_BSSAP_BSSMAP := {
speechVersion := *, speechVersion := *,
lSAIdentifier := *, lSAIdentifier := *,
talkerPriority := *, talkerPriority := *,
aoIPTransportLayer := *, aoIPTransportLayer := aoip,
speechCodec := *, speechCodec := *,
codecList := *, codecList := *,
lCLS_BSS_Status := * lCLS_BSS_Status := *