aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2021-02-05 21:01:09 +0100
committerHarald Welte <laforge@osmocom.org>2021-02-05 21:05:14 +0100
commit49f3ea818b66d9ee49c7142ce514c3927243b21e (patch)
tree3e38c48426d83d0a8e31a74474fdd4cd1a09aaa3
parente4a98dab7895fa2a129f04f90dea8f2011be53d4 (diff)
NS_Provider_FR: Drop received messages until limk+pvc are up
-rw-r--r--library/NS_Provider_FR.ttcn17
1 files changed, 15 insertions, 2 deletions
diff --git a/library/NS_Provider_FR.ttcn b/library/NS_Provider_FR.ttcn
index 5138d824..30aadef3 100644
--- a/library/NS_Provider_FR.ttcn
+++ b/library/NS_Provider_FR.ttcn
@@ -50,8 +50,21 @@ function main(NSVCConfiguration config, NSConfiguration nsconfig, charstring id)
var PDU_NS rx_pdu;
alt {
- [] FR.receive(FrameRelayFrame:?) -> value rx_fr {
- NSE.send(dec_PDU_NS(rx_fr.payload));
+ [not link_available] FR.receive(FrameRelayFrame:?) -> value rx_fr {
+ log("Dropoing Rx Msg because FR link not yet available", rx_fr);
+ /* this can happen if the remote side has not yet recognized the
+ * link is dead; don' fail here */
+ }
+ [link_available and pvc_active] FR.receive(tr_FR(config.provider.fr.dlci)) -> value rx_fr {
+ var PDU_NS ns := dec_PDU_NS(rx_fr.payload);
+ NSE.send(ns);
+ }
+ [not pvc_active] FR.receive(tr_FR(config.provider.fr.dlci)) -> value rx_fr {
+ log("Dropoing Rx Msg because FR DLC not yet available", rx_fr);
+ }
+ [] FR.receive(tr_FR(?)) -> value rx_fr {
+ log("Dropoing Rx Msg because DLCI unknown", rx_fr);
+ setverdict(fail);
}
[] FR.receive(FRemu_Event:{link_status:=FR_LINK_STS_AVAILABLE}) -> value rx_frevt {