summaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2020-09-14 11:38:01 +0200
committerHarald Welte <laforge@osmocom.org>2020-10-03 18:27:05 +0200
commit3dd8355d7db8d3f204f9871cff2ce419c2d0785b (patch)
tree208285472e9344c0d4b4b36e8e896f41aaf5602a /library
parent4a6a663654f59b8a4db9906bd1cd2cfb7746b608 (diff)
NS_Emulation: Delay Tx of first NS-RESET until Provider tells us it's up
Diffstat (limited to 'library')
-rw-r--r--library/NS_Emulation.ttcnpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/library/NS_Emulation.ttcnpp b/library/NS_Emulation.ttcnpp
index dcc0e17..ee25d3e 100644
--- a/library/NS_Emulation.ttcnpp
+++ b/library/NS_Emulation.ttcnpp
@@ -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();