[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

default MSN

On Tue, Apr 27, 2004 at 06:31:05PM +0200, nox wrote:
> Hi!  I'm having trouble dialing out on a pbx where the msn is unknown
> (userland ppp, FreeBSD 5.2.1), as expected (isdntrace) i get
> Q931: pd=Q.931/I.451, cr=0x2a (from destination), message=RELEASE COMPLETE: 
>      [cause: 1: Unallocated (unassigned) number (Q.850) 
>           (location=private network serving local user, std=CCITT)]
>  An existing Win98 box dials out on the same line without problems but
> a quick look on it didnt reveal a msn (avm fritzcard, no msn setting
> in the menus...)
>  On the previous installation (office has moved) suse linux 8.1
> was able to dial out with a `msn' of 0 (1&1 usb device using a patched
> fritz x usb driver called fxusb_CZ), but trying that with i4b
> (passive isa avm a1) doesnt work with the above result.  Now the
> question for the isdn gurus: is this (accepting 0 as meaning
> `use default msn') a feature of the pbx (which may have changed
> with the move) or of linux' isdn stack...

[Answering myself, for the archives:]

 I since looked at the linux source and found it does indeed special-case
the 0 as msn in the kernel when dialing out: it simply doesnt send a msn
in that case.  Looking at i4b's i4b_l3_tx_setup() i see it already
has a check for the source msn being empty, in which case it doesnt
send one (IEI_CALLINGPN), that code path was just never taken because
isdnd insists on getting a source msn configured (local-phone-dialout).

 So, i special-cased the 0 as in linux,

--- /usr/src/sys/i4b/layer3/i4b_l2if.c.orig	Wed Jun 11 01:59:33 2003
+++ /usr/src/sys/i4b/layer3/i4b_l2if.c	Wed Apr 28 19:57:27 2004
@@ -423,6 +423,13 @@
 	int dslen = strlen(cd->dst_subaddr);
 	int klen = strlen(cd->keypad);	
+#if 1
+	/* src msn "0" -> don't send one (tells other end to use default) */
+	if (!strcmp(cd->src_telno, "0"))
+		slen = 0;
+	printf("i4b_l3_tx_setup: src_telno = \"%s\", slen = %d\n",
+		cd->src_telno, slen);
 	 * there is one additional octet if cd->bprot == BPROT_NONE
 	 * NOTE: the selection of a bearer capability by a B L1

and, now i can indeed dial out!

 I'll leave it to others to decide if this is the way it
should be done (capi then still needs to be patched similarly)
or if isdnd should be changed instead to simply accept no
local-phone-dialout configured...  At least this should help
the next person trying to dial out without knowing what to
put in for the local msn.