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 {
/* 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();

View File

@ -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");

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 {
/* 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();

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))
}
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 := *