NS_Emulation: Delay Tx of first NS-RESET until Provider tells us it's up

Change-Id: I300cfeb120540940990a834596b0a83a539df080
This commit is contained in:
Harald Welte 2020-09-14 11:38:01 +02:00
parent 4a6a663654
commit 3dd8355d7d
1 changed files with 15 additions and 5 deletions

View File

@ -108,10 +108,6 @@ module NS_Emulation {
}
f_change_state(NSE_S_DEAD_BLOCKED);
/* Send the first NS-ALIVE to test the connection */
if (not config.role_sgsn) {
f_sendReset();
}
}
type component NS_Provider_CT {
@ -151,6 +147,7 @@ module NS_Emulation {
timer Tns_alive := 3.0;
timer Tns_test := 10.0;
timer Tns_block := 10.0;
timer Tns_reset := 10.0;
}
type record NSConfigurationIP {
@ -185,6 +182,7 @@ module NS_Emulation {
private function f_sendReset() runs on NS_CT {
NSCP.send(ts_NS_RESET(NS_CAUSE_OM_INTERVENTION, config.nsvci, config.nsei));
Tns_reset.start;
g_state := NSE_S_WAIT_RESET;
}
@ -219,12 +217,17 @@ module NS_Emulation {
f_sendAlive();
}
[] NSCP.receive(NS_Provider_Evt:{link_status:=NS_PROV_LINK_STATUS_UP}) {
[config.role_sgsn] NSCP.receive(NS_Provider_Evt:{link_status:=NS_PROV_LINK_STATUS_UP}) {
log("Provider Link came up: sending NS-ALIVE");
f_sendAlive();
Tns_test.start;
}
[not config.role_sgsn] NSCP.receive(NS_Provider_Evt:{link_status:=NS_PROV_LINK_STATUS_UP}) {
log("Provider Link came up: sending NS-RESET");
f_sendReset();
}
/* Stop t_alive when receiving ALIVE-ACK */
[Tns_alive.running] NSCP.receive(t_NS_ALIVE_ACK) {
log("NS-ALIVE-ACK received: stopping Tns-alive; starting Tns-test");
@ -363,7 +366,14 @@ module NS_Emulation {
private altstep as_wait_reset() runs on NS_CT {
var PDU_NS rf;
[] Tns_reset.timeout {
/* If the sending entity of an NS-RESET PDU receives no NS-RESET-ACK PDU before timer
* Tns-reset expires the corresponding NS-VCs shall remain blocked and dead and the
* entire reset procedure shall be repeated */
f_sendReset();
}
[] NSCP.receive(tr_NS_RESET_ACK(config.nsvci, config.nsei)) -> value rf {
Tns_reset.stop;
f_change_state(NSE_S_ALIVE_BLOCKED);
f_sendAlive();
f_sendUnblock();