[Pkg-voip-commits] [dahdi-tools] 09/285: Fixed up the loss of crc4-multiframe alignment logic

tzafrir at debian.org tzafrir at debian.org
Thu Jul 7 19:18:19 UTC 2016


This is an automated email from the git hooks/post-receive script.

tzafrir pushed a commit to branch master
in repository dahdi-tools.

commit 3140dfc482140e3732b89a51a57e2ae2d702800c
Author: Russ Meyerriecks <rmeyerriecks at digium.com>
Date:   Mon Oct 25 18:58:17 2010 +0000

    Fixed up the loss of crc4-multiframe alignment logic
    
    Loss of crc4-multiframe alignment on an E1 link is not a condition which
    brings the span down. The span will continue to run as long as it can
    maintain double frame alignment. Because of this, we cannot place the
    LMFA alarm in the usual spaninfo.alarms member, due to userspace
    programs using this as a catch-all for a span being up or down.
    
    We can detect the alarm by watching the frame error counter (fecount).
    If it continuously increments, the span is configured for crc4, and the
    span remains OK (alarms = 0), then we are in loss of crc4-multiframe
    state.
    
    In order to test this alarm, you'll need to synthesize a loss of crc4
    alignment on the span. You can usually do this by configuring the local
    span to use crc4 and the remote end to not use crc4. I used the Fireberd
    6000 in my lab to do this.
    
    dahdi-743 & dahdi-420
    
    Acked-by: Shaun Ruffell <sruffell at digium.com>
    
    git-svn-id: http://svn.astersk.org/svn/dahdi/tools/trunk@9458 17933a7a-c749-41c5-a318-cba88f637d49
---
 dahdi_scan.c | 37 ++++++++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 5 deletions(-)

diff --git a/dahdi_scan.c b/dahdi_scan.c
index 582f44d..1a30d18 100644
--- a/dahdi_scan.c
+++ b/dahdi_scan.c
@@ -95,11 +95,13 @@ int main(int argc, char *argv[])
 				strcat(alarms, "YEL/");
 			if (s.alarms & DAHDI_ALARM_RED) {
 				strcat(alarms, "RED/");
+
+/* Extended alarm feature test. Allows compilation with
+ * versions of dahdi-linux prior to 2.4
+ */
 #ifdef DAHDI_ALARM_LFA
 				if (s.alarms & DAHDI_ALARM_LFA)
 					strcat(alarms, "LFA/");
-				if (s.alarms & DAHDI_ALARM_LMFA)
-					strcat(alarms, "LMFA/");
 #endif /* ifdef DAHDI_ALARM_LFA */
 			}
 			if (s.alarms & DAHDI_ALARM_LOOPBACK)
@@ -115,10 +117,35 @@ int main(int argc, char *argv[])
 				alarms[strlen(alarms)-1]='\0';
 			}
 		} else {
-			if (s.numchans)
-				strcpy(alarms, "OK");
-			else
+			if (s.numchans) {
+#ifdef DAHDI_ALARM_LFA
+				/* If we continuously receive framing errors
+				 * but our span is still in service, and we
+				 * are configured for E1 & crc4. We've lost
+				 * crc4-multiframe alignment
+				 */
+				if ((s.linecompat & DAHDI_CONFIG_CRC4) &&
+				    (s.fecount > 0)) {
+					struct dahdi_spaninfo t;
+					memset(&t, 0, sizeof(t));
+					t.spanno = x;
+					sleep(1);
+					if (ioctl(ctl, DAHDI_SPANSTAT, &t))
+						continue;
+
+					/* Test fecount at two separate time
+					 * intervals, if they differ, throw LMFA
+					 */
+					if ((t.fecount > s.fecount) &&
+						!t.alarms) {
+						strcat(alarms, "LMFA/");
+					}
+				}
+#endif /* ifdef DAHDI_ALARM_LFA */
+				strcat(alarms, "OK");
+			} else {
 				strcpy(alarms, "UNCONFIGURED");
+			}
 		}
 
 		fprintf(stdout, "[%d]\n", x);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/dahdi-tools.git



More information about the Pkg-voip-commits mailing list