[asterisk-dev] q931 decoding question

Hans Petter Selasky hselasky at c2i.net
Thu Jan 10 10:10:30 CST 2008


On Thursday 10 January 2008, Klaus Darilion wrote:
> Hi!
>
> Please take a look at the following incoming SETUP message:
>
> < Protocol Discriminator: Q.931 (8)  len=42
> < Call Ref: len= 2 (reference 5566/0x15BE) (Originator)
> < Message type: SETUP (5)
> < [04 02 88 90]
> < Bearer Capability (len= 4) [ Ext: 1  Q.931 Std: 0  Info transfer
> capability: Unrestricted digital information (8)
> <                              Ext: 1  Trans mode/rate: 64kbps,
> circuit-mode (16)
> <                              Ext: 0  User information layer 1: Unknown
> (24)
>
> lets decode it:
>
>        bearer capability IE
>       /
>      /  length
>
>     |  /
>     |
>     |  |   ext=1, coding standard=0 0=ITU, information tranfer
>
> capability=0 1 0 0 0=Unrestricted digital information
>
>     |  |  /
>     |  |
>     |  |  |    ext=1, transfer mode=0 0=circuit mode, information
>     |  |  |    transfer rate=0 0 0 0 0
>     |  |  |  /
>
> < [04 02 88 90]
>
> this means the bearer capability IE does not include the user
> information layer 1 octet. Nevertheless it gets parsed.
>
> <                     Ext: 0  User information layer 1: Unknown (24)
>
> My questions: Why does it gets parsed? Why is it set to 24? I checked
> libpri source code but could not find the relevant code. Maybe someone
> can point to the corresponding code.

Hi,

Maybe there is a decoding error in libpri, for example a missing length check 
or missing extension (mask=0x80) check. If the second byte has the 7th bit 
set, then there should be no fifth byte.

If this is repeatable you could try decoding the package using "isdndecode" 
from FreeBSD:

http://www.selasky.org/hans_petter/isdn4bsd/sources/src/usr.sbin/i4b/isdndecode/

--HPS



More information about the asterisk-dev mailing list