[asterisk-commits] trunk r36298 - in /trunk: channels/ channels/misdn/ configs/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Jun 29 13:12:19 MST 2006


Author: crichter
Date: Thu Jun 29 15:12:19 2006
New Revision: 36298

URL: http://svn.digium.com/view/asterisk?rev=36298&view=rev
Log:
added better L2 handling for ptp, if it's down we don't try to call on that port in groupdial anymore, also we try to get it up then. Additionally added the configoptions  ntdebugflags and ntdebugfile to debug the mISDNuser NT Stack (should have done that ages before..). isdn_lib.c compiles again.

Modified:
    trunk/channels/chan_misdn.c
    trunk/channels/misdn/chan_misdn_config.h
    trunk/channels/misdn/isdn_lib.c
    trunk/channels/misdn/isdn_lib.h
    trunk/channels/misdn/isdn_lib_intern.h
    trunk/channels/misdn_config.c
    trunk/configs/misdn.conf.sample

Modified: trunk/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_misdn.c?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/channels/chan_misdn.c (original)
+++ trunk/channels/chan_misdn.c Thu Jun 29 15:12:19 2006
@@ -691,6 +691,14 @@
 		misdn_debug[i] = cfg_debug;
 		misdn_debug_only[i] = 0;
 	}
+
+	int ntflags=0;
+	char ntfile[BUFFERSIZE+1];
+
+	misdn_cfg_get( 0, MISDN_GEN_NTDEBUGFLAGS, &ntflags, sizeof(int));
+	misdn_cfg_get( 0, MISDN_GEN_NTDEBUGFILE, &ntfile, BUFFERSIZE);
+
+	misdn_lib_nt_debug_init(ntflags,ntfile);
 }
 
 static int misdn_reload (int fd, int argc, char *argv[])
@@ -4125,6 +4133,9 @@
 	}
 
 
+
+	reload_config();
+
 	{
 		if (ast_channel_register(&misdn_tech)) {
 			ast_log(LOG_ERROR, "Unable to register channel class %s\n", misdn_type);

Modified: trunk/channels/misdn/chan_misdn_config.h
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/chan_misdn_config.h?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/channels/misdn/chan_misdn_config.h (original)
+++ trunk/channels/misdn/chan_misdn_config.h Thu Jun 29 15:12:19 2006
@@ -74,6 +74,8 @@
 	MISDN_GEN_CRYPT_PREFIX,        /* char[] */
 	MISDN_GEN_CRYPT_KEYS,          /* char[] */
 	MISDN_GEN_L1_TIMEOUT,          /* int */
+	MISDN_GEN_NTDEBUGFLAGS,          /* int */
+	MISDN_GEN_NTDEBUGFILE,          /* char[] */
 	MISDN_GEN_LAST
 };
 

Modified: trunk/channels/misdn/isdn_lib.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/isdn_lib.c?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/channels/misdn/isdn_lib.c (original)
+++ trunk/channels/misdn/isdn_lib.c Thu Jun 29 15:12:19 2006
@@ -20,6 +20,7 @@
 
 int queue_cleanup_bc(struct misdn_bchannel *bc) ;
 
+int misdn_lib_get_l2_up(struct misdn_stack *stack);
 
 struct misdn_stack* get_misdn_stack( void );
 
@@ -1642,12 +1643,21 @@
 		if ( !stack->ptp && !check) return 1;
 		
 		if (stack->port == port) {
-			if (stack->l1link)
-				return 1;
-			else {
-				cb_log(-1,port, "Port down [%s]\n",
-				       stack->ptp?"PP":"PMP");
-				return 0;
+			if (stack->ptp ) {
+				if (stack->l1link && stack->l2link) {
+					return 1;
+				} else {
+					cb_log(-1,port, "Port Down L2:%d L1:%d\n",
+						stack->l2link, stack->l1link);
+					return 0;
+				}
+			} else {
+				if ( stack->l1link)
+					return 1;
+				else {
+					cb_log(-1,port, "Port down PMP\n");
+					return 0;
+				}
 			}
 		}
 	}
@@ -1894,6 +1904,7 @@
 		{
 			cb_log(4, stack->port, "%% GOT L2 Activate Info.\n");
 			stack->l2link = 1;
+			stack->l2upcnt=0;
 			
 			free_msg(msg);
 			return 0;
@@ -1904,9 +1915,19 @@
 		case DL_RELEASE | INDICATION:
 		case DL_RELEASE | CONFIRM:
 		{
-			cb_log(4, stack->port, "%% GOT L2 DeActivate Info.\n");
+			if (stack->ptp) {
+				cb_log(-1 , stack->port, "%% GOT L2 DeActivate Info.\n");
+				if (stack->l2upcnt>3) {
+					cb_log(-1 , stack->port, "!!! Could not Get the L2 up after 3 Attemps!!!\n");
+				}  else {
+					misdn_lib_get_l2_up(stack);
+					stack->l2upcnt++;
+				}
+				
+			} else 
+				cb_log(4, stack->port, "%% GOT L2 DeActivate Info.\n");
+			
 			stack->l2link = 0;
-			
 			free_msg(msg);
 			return 0;
 		}
@@ -1945,7 +1966,7 @@
 
 					} else {
 
-						bc->channel = find_free_chan_in_stack(stack, 0);
+						bc->channel = find_free_chan_in_stack(stack, bc, 0);
 						if (!bc->channel) {
 							cb_log(-1, stack->port, " No free channel at the moment\n");
 					
@@ -3604,6 +3625,21 @@
 	return max;
 }
 
+
+void misdn_lib_nt_debug_init( int flags, char *file ) 
+{
+	int static init=0;
+
+	if (!init) {
+		debug_init( flags , file, file, file);
+		init=1;
+	} else {
+		debug_close();
+		debug_init( flags , file, file, file);
+	}
+}
+
+
 int misdn_lib_init(char *portlist, struct misdn_lib_iface *iface, void *user_data)
 {
 	struct misdn_lib *mgr=calloc(1, sizeof(struct misdn_lib));
@@ -3619,13 +3655,9 @@
 	glob_mgr = mgr;
   
 	msg_init();
-#if 0
-	int flags=0xff;
-	flags &= ~DBGM_MSG;
-	debug_init( flags , NULL, NULL, NULL);
-#else
-	debug_init(0 , NULL, NULL, NULL);
-#endif	
+
+	misdn_lib_nt_debug_init(0,NULL);
+	
 	if (!portlist || (*portlist == 0) ) return 1;
 	
 	init_flip_bits();

Modified: trunk/channels/misdn/isdn_lib.h
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/isdn_lib.h?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/channels/misdn/isdn_lib.h (original)
+++ trunk/channels/misdn/isdn_lib.h Thu Jun 29 15:12:19 2006
@@ -347,6 +347,8 @@
 
 /***** USER IFACE **********/
 
+void misdn_lib_nt_debug_init( int flags, char *file );
+
 int misdn_lib_init(char *portlist, struct misdn_lib_iface* iface, void *user_data);
 int misdn_lib_send_event(struct misdn_bchannel *bc, enum event_e event );
 void misdn_lib_destroy(void);

Modified: trunk/channels/misdn/isdn_lib_intern.h
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/isdn_lib_intern.h?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/channels/misdn/isdn_lib_intern.h (original)
+++ trunk/channels/misdn/isdn_lib_intern.h Thu Jun 29 15:12:19 2006
@@ -55,6 +55,8 @@
   
 	int ptp;
 
+	int l2upcnt;
+
 	int l2_id;
 	int lower_id;
 	int upper_id;

Modified: trunk/channels/misdn_config.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn_config.c?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/channels/misdn_config.c (original)
+++ trunk/channels/misdn_config.c Thu Jun 29 15:12:19 2006
@@ -136,8 +136,9 @@
 	{ "dynamic_crypt", MISDN_GEN_DYNAMIC_CRYPT, MISDN_CTYPE_BOOL, "no", NONE },
 	{ "crypt_prefix", MISDN_GEN_CRYPT_PREFIX, MISDN_CTYPE_STR, NO_DEFAULT, NONE },
 	{ "crypt_keys", MISDN_GEN_CRYPT_KEYS, MISDN_CTYPE_STR, NO_DEFAULT, NONE },
-	{ "l1watcher_timeout", MISDN_GEN_L1_TIMEOUT, MISDN_CTYPE_INT, "0", NONE }
-	
+	{ "l1watcher_timeout", MISDN_GEN_L1_TIMEOUT, MISDN_CTYPE_INT, "0", NONE },
+	{ "ntdebugflags", MISDN_GEN_NTDEBUGFLAGS, MISDN_CTYPE_INT, "0", NONE },
+	{ "ntdebugfile", MISDN_GEN_NTDEBUGFILE, MISDN_CTYPE_STR, "/var/log/misdn-nt.log", NONE }
 };
 
 /* array of port configs, default is at position 0. */
@@ -543,11 +544,18 @@
 		}
 		break;
 	case MISDN_CTYPE_INT:
-		if (sscanf(value, "%d", &tmp)) {
+	{
+		char *pat;
+		if (strchr(value,'x')) 
+			pat="%x";
+		else
+			pat="%d";
+		if (sscanf(value, pat, &tmp)) {
 			dest->num = (int *)malloc(sizeof(int));
 			memcpy(dest->num, &tmp, sizeof(int));
 		} else
 			re = -1;
+	}
 		break;
 	case MISDN_CTYPE_BOOL:
 		dest->num = (int *)malloc(sizeof(int));

Modified: trunk/configs/misdn.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/misdn.conf.sample?rev=36298&r1=36297&r2=36298&view=diff
==============================================================================
--- trunk/configs/misdn.conf.sample (original)
+++ trunk/configs/misdn.conf.sample Thu Jun 29 15:12:19 2006
@@ -24,6 +24,37 @@
 ;
 debug=0
 
+
+
+; set debugging file and flags for mISDNuser (NT-Stack) 
+; 
+; flags can be or'ed with the following values:
+;
+; DBGM_NET        0x00000001
+; DBGM_MSG        0x00000002
+; DBGM_FSM        0x00000004
+; DBGM_TEI        0x00000010
+; DBGM_L2         0x00000020
+; DBGM_L3         0x00000040
+; DBGM_L3DATA     0x00000080
+; DBGM_BC         0x00000100
+; DBGM_TONE       0x00000200
+; DBGM_BCDATA     0x00000400
+; DBGM_MAN        0x00001000
+; DBGM_APPL       0x00002000
+; DBGM_ISDN       0x00004000
+; DBGM_SOCK       0x00010000
+; DBGM_CONN       0x00020000
+; DBGM_CDATA      0x00040000
+; DBGM_DDATA      0x00080000
+; DBGM_SOUND      0x00100000
+; DBGM_SDATA      0x00200000
+; DBGM_TOPLEVEL   0x40000000
+; DBGM_ALL        0xffffffff
+;
+
+ntdebugflags=0
+ntdebugfile=/var/log/misdn-nt.log
 
 ; the big trace
 ;



More information about the asterisk-commits mailing list