Summary:ASTERISK-03470: [patch] The ISDN Baerer Capability Information is not properly passed on a bridged channel
Reporter:Frank Sautter (xylome)Labels:
Date Opened:2005-02-10 07:14:50.000-0600Date Closed:2011-06-07 14:10:19
Versions:Frequency of
Environment:Attachments:( 0) ast_caps.diff
( 1) bearercapability-patch-v1.diff
( 2) transfercapability-patch-asterisk-v2.diff
( 3) transfercapability-patch-asterisk-v3.diff
( 4) transfercapability-patch-asterisk-v4.diff
( 5) transfercapability-patch-asterisk-v5.diff
( 6) transfercapability-patch-asterisk-v6.diff
( 7) transfercapability-patch-libpri-v2-.diff
( 8) transfercapability-patch-libpri-v3.diff
Description:When bridging calls between two PRIs, the Bearer Capability Info in the ISDN Setup IE is not passed to the outgoing call.
Currently only UNRESTRICTED DIGITAL calls are handled correct. all others are set to SPEECH which make problems or makes it even imposible to call some devices like faxmachines or videophones.


* a new unsigned short variable 'bcap' is added to ast_channel in addition to the already existing AST_FLAG_DIGITAL.
* app_dial has a new option 'B(x)', which is to set the bearer capability to the desired value.
Comments:By: Olle Johansson (oej) 2005-02-14 01:35:43.000-0600

Do you have a disclaimer on file or do you need to submit one?

By: Frank Sautter (xylome) 2005-02-14 07:28:15.000-0600

disclaimer is on file

By: Frank Sautter (xylome) 2005-02-14 07:35:21.000-0600

OK, after i now have the Q.931 specs on hand, I revised my patch, as I now know that it's not the bearer capability but the transfercapability that has to be passed.... (the patch still is the same, but the names of the variables and the debug output have changed).
i also noticed that 7k audio is depriciated since 05/1998 and has been replaced by 'unrestricted digital information with tones/announcements'. therefore i also patched libpri to reflect this change in the ITU recommendation (has 7k ever been used?!?)
the new option of app_dial has also been changed from 'B(x)' to 'X(x)' (X stands for Trans(X)fer capability).

By: Frank Sautter (xylome) 2005-02-14 07:39:08.000-0600

i wanted to add, that this patch is in production use in our company since 2005-02-09 with over 3000 calls (1200 of them faxes).
all problems we had with faxes not going through are now history (faxes were accidentally routed to voice DTEs or the calls were not accepted by the DTE).

By: Mark Spencer (markster) 2005-02-14 09:39:33.000-0600

I would like to recommend that instead of adding a new option to dial, this should be handled transparently, with the possible addition of SetTransferCapability app, so that it looks a lot like callingpres, etc.

By: Frank Sautter (xylome) 2005-02-14 10:22:33.000-0600

ok, good point!
i will create app_SetTransferCapability and remove it from app_dial. I was't very happy with this solution, but couldn't think of any other solution.
the remaining parts are currently handled completly transparent. the dial option was just to set the transfer capability explicitly.
btw: could someone change the subject of this bug to 'transfer capability' just to rectify things.

By: Frank Sautter (xylome) 2005-02-14 12:56:40.000-0600

created app_setTransferCapability
removed Dial option 'X(x)'
variable CALLTYPE depriciated -> replaced through TRANSFERCAPABILITY
patch V3 is in production use (so far > 50 calls) so far no problems

edited on: 02-14-05 12:57

By: Mark Spencer (markster) 2005-02-28 00:38:45.000-0600

Merged the PRI portion.  If transfercapability is going to be asterisk-wide, shouldn't the routines to convert capability numbers to names and back also be elsewhere in asterisk (e.g. channel.c)?

By: Olle Johansson (oej) 2005-02-28 02:27:49.000-0600

Just out of curiousity: What is ISDN bearer capability?

By: Olle Johansson (oej) 2005-02-28 02:28:54.000-0600

Google is my friend. Cisco has a good ISDN PRI information page

By: Frank Sautter (xylome) 2005-03-02 05:51:58.000-0600

mark, i took your implicit advise and moved the function to channel.c.
it would be nice to have this patch in the cvs soon, as it's very time consuming to create the appropriate patch files, while developing other patches in the same files...

edited on: 03-02-05 06:00

By: Frank Sautter (xylome) 2005-03-02 06:00:05.000-0600

for all who want to know more about bearer capability, ericsson has some easy readable documents "understanding telecommunications":
and in general:

also the capi documentation is a good reference:

By: Paul Cadach (pcadach) 2005-03-09 01:25:04.000-0600

Very complex. I done it much simpler (without patching libpri), just through _CALLTYPE variable, like:
exten => _X.,2,SetVar(_CALLTYPE=${CALLTYPE})

Possible there is needs to rename CALLTYPE variable prepared at chan_zap.c to _CALLTYPE or __CALLTYPE to be transfered to other leg by existing Dial()'s mechanism.

By: Paul Cadach (pcadach) 2005-03-09 01:33:52.000-0600

PS: Disclaimer is on file (for ast_caps.diff).

2Mark: Because bearer capability option related to TDM (ISDN, SS7) only there isn't need to be supported at Asterisk's core level, just for TDM-related channel drivers only.

And, show channel Zap/xxx isn't shows '_' prefixes before variable so CALLTYPE and _CALLTYPE looks the same. Also, Dial()'s mechanism needs to be checked for updating/leaving existing variables (for example, CALLTYPE is exists anytime on Zap channels, and passing _CALLTYPE to other leg duplicates the variable IMHO). But anyway all works fine.

By: Frank Sautter (xylome) 2005-03-09 01:56:33.000-0600

updated patch to recent cvs version

By: Frank Sautter (xylome) 2005-03-09 02:08:35.000-0600

libpri only was patched because 7k audio is depreceated since 1995.
i made it this complex, because i will soon publish a patch allowing to set/get/bridge High Layer Compatibility (HLC) and Common ISDN Profiles (CIP) as defined in CAPI.

i think your version is also possible for the moment. but i would change CALLTYPE to TRANSFERCAPABILITY just to name things by their names. also i would propose to rename 31KAUDIO to 3K1AUDIO and 7KAUDIO to DIGITAL_W_TONES to be conform with itu spec.

By: Frank Sautter (xylome) 2005-03-31 14:59:12.000-0600

Reminder sent to mattf

Is there a chance to get this into the cvs?

By: Matthew Fredrickson (mattf) 2005-03-31 18:32:17.000-0600

I think that this looks good.  If there is nothing else, I'm going to commit it.

By: Matthew Fredrickson (mattf) 2005-03-31 18:42:27.000-0600

Hrm... Looks like it's not merging.  Xylome, Can you post an updated patch for current CVS?

By: Frank Sautter (xylome) 2005-04-01 04:01:55.000-0600

Reminder sent to mattf

i updated the patch. it should merge now.

By: Matthew Fredrickson (mattf) 2005-04-01 09:31:14.000-0600

I want to go over this with Mark before I commit it.  I'll see if I can talk to him today about it.

By: Matthew Fredrickson (mattf) 2005-04-01 11:07:40.000-0600

Ok, I talked it over with Mark and I think I have just about finished merging this in.  Note to all that use this, this deprecates the AST_FLAG_DIGITAL in the bitflags section of channel.h

By: Matthew Fredrickson (mattf) 2005-04-01 11:08:23.000-0600


By: Michael Jerris (mikej) 2005-04-01 11:51:43.000-0600

Recent apps makefile change causes:

make[1]: *** No rule to make target `app_settransfercapability.so', needed by `all'.  Stop

By: Matthew Fredrickson (mattf) 2005-04-01 12:56:09.000-0600

oops. forgot to add app_settransfercapability.c

By: Matthew Fredrickson (mattf) 2005-04-01 12:56:32.000-0600