Change in osmo-ttcn3-hacks[master]: NS_Emulation: Introduce status events from provider -> emulation

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Sun Oct 4 11:33:02 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20122 )

Change subject: NS_Emulation: Introduce status events from provider -> emulation
......................................................................

NS_Emulation: Introduce status events from provider -> emulation

This allows NS_Emulation to react to changes of the underlying
transport layer (e.g. Frame Relay Link/DLCI up).

Change-Id: If00e9c50dc664ce62b6c0cbde99d741e8173169b
---
M library/NS_Emulation.ttcnpp
M library/NS_Provider_FR.ttcn
M library/NS_Provider_IPL4.ttcn
3 files changed, 40 insertions(+), 2 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  fixeria: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/library/NS_Emulation.ttcnpp b/library/NS_Emulation.ttcnpp
index 32746b4..5872b00 100644
--- a/library/NS_Emulation.ttcnpp
+++ b/library/NS_Emulation.ttcnpp
@@ -120,9 +120,17 @@
 		/* lower layer ports (UDP/IP, Frame Relay) are added in derived components */
 	};
 
+	type enumerated NS_Provider_LinkStatus {
+		NS_PROV_LINK_STATUS_UP,
+		NS_PROV_LINK_STATUS_DOWN
+	};
+	type union NS_Provider_Evt {
+		NS_Provider_LinkStatus link_status
+	};
+
 	/* port between NS_Provider and NS_CT */
 	type port NS_PROVIDER_PT message {
-		inout PDU_NS;
+		inout PDU_NS, NS_Provider_Evt;
 	} with { extension "internal" };
 
 	type component NS_CT {
@@ -211,6 +219,12 @@
 			f_sendAlive();
 		}
 
+		[] 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;
+			}
+
 		/* 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");
diff --git a/library/NS_Provider_FR.ttcn b/library/NS_Provider_FR.ttcn
index 851e6c4..afa27d9 100644
--- a/library/NS_Provider_FR.ttcn
+++ b/library/NS_Provider_FR.ttcn
@@ -22,6 +22,9 @@
 type component NS_Provider_FR_CT extends NS_Provider_CT, FR_Client_CT {
 	/* component reference to Frame Relay emulation */
 	var FR_Emulation_CT vc_FREMU;
+
+	var boolean link_available := false;
+	var boolean pvc_active := false;
 };
 
 function main(NSConfiguration config) runs on NS_Provider_FR_CT system af_packet {
@@ -50,8 +53,28 @@
 			NSE.send(dec_PDU_NS(rx_fr.payload));
 			}
 
+		[] FR.receive(FRemu_Event:{link_status:=FR_LINK_STS_AVAILABLE}) -> value rx_frevt {
+			if (link_available == false and pvc_active == true) {
+				NSE.send(NS_Provider_Evt:{link_status := NS_PROV_LINK_STATUS_UP});
+			}
+			link_available := true;
+			}
+		[] FR.receive(FRemu_Event:{link_status:=FR_LINK_STS_UNAVAILABLE}) -> value rx_frevt {
+			link_available := false;
+			NSE.send(NS_Provider_Evt:{link_status := NS_PROV_LINK_STATUS_DOWN});
+			}
+		[] FR.receive(tr_FRemu_PvcStatusAct(config.provider.fr.dlci, true)) -> value rx_frevt {
+			if (pvc_active == false and link_available == true) {
+				NSE.send(NS_Provider_Evt:{link_status := NS_PROV_LINK_STATUS_UP});
+			}
+			pvc_active := true;
+			}
+		[] FR.receive(tr_FRemu_PvcStatusAct(config.provider.fr.dlci, false)) -> value rx_frevt {
+			pvc_active := false;
+			NSE.send(NS_Provider_Evt:{link_status := NS_PROV_LINK_STATUS_DOWN});
+			}
 		[] FR.receive(FRemu_Event:?) -> value rx_frevt {
-			/* TODO: dispatch to user */
+			log("Unhandled FRemu_event: ", rx_frevt);
 			}
 		[] NSE.receive(PDU_NS:?) -> value rx_pdu {
 			FR.send(ts_FR(config.provider.fr.dlci, enc_PDU_NS(rx_pdu), true));
diff --git a/library/NS_Provider_IPL4.ttcn b/library/NS_Provider_IPL4.ttcn
index 1414935..f1fda6c 100644
--- a/library/NS_Provider_IPL4.ttcn
+++ b/library/NS_Provider_IPL4.ttcn
@@ -36,6 +36,7 @@
 		mtc.stop;
 	}
 	g_conn_id := res.connId;
+	NSE.send(NS_Provider_Evt:{link_status := NS_PROV_LINK_STATUS_UP});
 
 	/* transceive beteween user-facing port and UDP socket */
 	while (true) {

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20122
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: If00e9c50dc664ce62b6c0cbde99d741e8173169b
Gerrit-Change-Number: 20122
Gerrit-PatchSet: 11
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis at fe80.eu>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201004/588e663d/attachment.htm>


More information about the gerrit-log mailing list