@ -521,20 +521,28 @@ runs on RAN_Emulation_CT return template PDU_BSSAP {
function f_bssap_reset(SCCP_PAR_Address peer, SCCP_PAR_Address own) runs on RAN_Emulation_CT {
timer T := 5.0;
var boolean append_osmux_support := append_osmux_ie();
var integer attempts := g_ran_ops.bssap_reset_retries;
BSSAP.send(ts_BSSAP_UNITDATA_req(peer, own, ts_BSSMAP_Reset(0, append_osmux_support)));
T.start;
alt {
[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(own, peer, tr_BSSMAP_ResetAck(append_osmux_support))) {
log("BSSMAP: Received RESET-ACK in response to RESET, we're ready to go!");
}
[] as_reset_ack(append_osmux_support);
[] BSSAP.receive { repeat };
[] T.timeout {
setverdict(fail, "BSSMAP: Timeout waiting for RESET-ACK after sending RESET");
mtc.stop;
while (attempts > 0) {
attempts := attempts - 1;
BSSAP.send(ts_BSSAP_UNITDATA_req(peer, own, ts_BSSMAP_Reset(0, append_osmux_support)));
T.start;
alt {
[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(own, peer, tr_BSSMAP_ResetAck(append_osmux_support))) {
log("BSSMAP: Received RESET-ACK in response to RESET, we're ready to go!");
return;
}
[] as_reset_ack(append_osmux_support);
[] BSSAP.receive { repeat };
[] T.timeout {
continue;
}
}
}
setverdict(fail, "BSSMAP: Timeout waiting for RESET-ACK after sending RESET");
mtc.stop;
}
private function f_bssap_l3_is_rr(PDU_BSSAP bssap) return boolean {
@ -713,6 +721,7 @@ type record RanOps {
RanProtocol protocol,
RAN_Transport transport,
boolean use_osmux,
integer bssap_reset_retries,
/* needed for performing BSSMAP RESET */
SCCP_PAR_Address sccp_addr_local optional,
SCCP_PAR_Address sccp_addr_peer optional