Error in BER encoding of Megaco messages? What am I missing?

Jason Walton <>
Thu Mar 16 18:40:02 CET 2006


I'm new to the world of H.248, so this is probably just me missing
something, but it looks to me like the erlang BER encoder is writing 
strange values for package IDs.

I was looking at the example messages provided from the H.248 Erlang
encoding/decoding performance comparison
(http://www.erlang.org/project/megaco/encoding_comparison-v4/encoded_messages). 

Specifically, I was looking at ber/msg08a.bin.  The text version of the
message (pretty/msg08a.txt) contains an events descriptor, containing
events "al/on" and "dd/ce", and a signals descriptor, containing the
signal "cg/rt".

When I look at the BER encoded message (with a program using asn1c, an
open source C-based ASN.1 compiler), however, I'm seeing events with
pkgdName 0x0009/0x0004, 0x0004/0x0004, and a signal with pkgdName
0x0005/0x0031.  In all cases, the second half of the pkgdName is what I
would expect it to be, but the (with the exception of al/on) the
pacakgeID (the first half) looks wrong to me.

Take the "dd/ce" to start with.  The packageID for dd is 0x0006.  The
packageID in the BER encoded message is 0x0004, which is tonedet (dd
extends tonedet).  According to RFC 3525 6.2.3, I should be able to
refer to events in a base package using the extended package name (so I
should be able to reference dd/tl or tonedet/tl, for example), but it
makes no reference of doing the reverse; accessing an event defined in
one package using the name of the base package.

The Signal "cg/rt" is right out; 0x0005 is the package ID for dg, not
cg, and dg doesn't define an event 0x0031.  The only common link I can
find between these two packages is that they both extend tonegen.

What's going on here?  Is the Erlang Megaco stack horribly broken, or
(more likely) am I just completely missing something here?





More information about the erlang-questions mailing list