Change in titan.TestPorts.AF_PACKET[master]: FrameRelay_Emulation: Fix network side 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
Tue Feb 16 19:00:31 UTC 2021


laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/titan.TestPorts.AF_PACKET/+/22934 )


Change subject: FrameRelay_Emulation: Fix network side emulation
......................................................................

FrameRelay_Emulation: Fix network side emulation

On the network side, by definition all PVCs are always active.  Only the
user side detects the active PVCs from the network side.  In order to
make higher-layer code agnostic, we need to spoof the related status
events up the stack.

Change-Id: I791a7739e5ee6301ee5c24e5824a15a7b380a655
---
M src/FrameRelay_Emulation.ttcn
1 file changed, 31 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/titan.TestPorts.AF_PACKET refs/changes/34/22934/1

diff --git a/src/FrameRelay_Emulation.ttcn b/src/FrameRelay_Emulation.ttcn
index fbca3bd..bc581c6 100644
--- a/src/FrameRelay_Emulation.ttcn
+++ b/src/FrameRelay_Emulation.ttcn
@@ -80,7 +80,7 @@
 };
 
 
-/* FR Emulation user/client component/dispatcher. Exists once per FR_CODEC_PT */
+/* FR Emulation user/client component/dispatcher. Exists once per DLC */
 type component FR_Client_CT {
 	/* message port towards the Frame Relay Emulation */
 	port FRemu_PT	FR;
@@ -198,6 +198,10 @@
 			q933em.service_affecting_condition := false;
 			log("Detecting no more service affecting condition after N392 consecutive good cycles");
 			notify_all_clients(FRemu_Event:{link_status:=FR_LINK_STS_AVAILABLE});
+			if (not q933em.cfg.ats_is_user) {
+				/* on the network side, all DLCs are active immediately */
+				notify_all_clients_pvc_state();
+			}
 		}
 	}
 
@@ -349,7 +353,17 @@
 runs on FR_Emulation_CT {
 	for (var integer i:= 0; i < sizeof(ConnectionTable); i := i + 1) {
 		if (ConnectionTable[i].vc_conn != null) {
-			CLIENT.send(evt) to ConnectionTable[i].vc_conn;
+			notify_client(ConnectionTable[i].vc_conn, evt);
+		}
+	}
+}
+
+private function notify_all_clients_pvc_state()
+runs on FR_Emulation_CT {
+	for (var integer i:= 0; i < sizeof(ConnectionTable); i := i + 1) {
+		if (ConnectionTable[i].vc_conn != null) {
+			notify_client(ConnectionTable[i].vc_conn,
+				      FRemu_Event:{pvc_status:=ConnectionTable[i].q933_status});
 		}
 	}
 }
@@ -437,9 +451,22 @@
 					   " when ", vc_conn, " tries to register for it");
 				mtc.stop;
 			}
-			ConnectionTable[dlci].vc_conn := vc_conn;
-			/* optionally send async Q.933 STATUS? */
+			/* on the network side, every DLC is immediately active */
+			ConnectionTable[dlci] := {
+				vc_conn := vc_conn,
+				q933_status := {
+					dlci := dlci,
+					new := true,
+					delete := false,
+					active := true
+				}
+			};
 			PROC.reply(FRemu_register:{dlci}) to vc_conn;
+			if (not q933em.cfg.ats_is_user) {
+				notify_client(vc_conn,
+					      FRemu_Event:{pvc_status:=ConnectionTable[dlci].q933_status});
+			}
+			/* optionally send async Q.933 STATUS? */
 			}
 
 		[] PROC.getcall(FRemu_unregister:{?}) -> param(dlci) sender vc_conn {

-- 
To view, visit https://gerrit.osmocom.org/c/titan.TestPorts.AF_PACKET/+/22934
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: titan.TestPorts.AF_PACKET
Gerrit-Branch: master
Gerrit-Change-Id: I791a7739e5ee6301ee5c24e5824a15a7b380a655
Gerrit-Change-Number: 22934
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210216/0a7dcfbf/attachment.htm>


More information about the gerrit-log mailing list