More ASN.1...
Bertil Karlsson
bertil.karlsson@REDACTED
Mon Nov 25 13:27:36 CET 2002
You are absolutely right! The asn1 compiler should have generated a
'TransportAddress_ipAddress' record, and so also for each SEQUENCE/SET
that is defined inside a "constructed type" (SEQUENCE, CHOICE, SET,
SEQUENCE OF, SET OF) like in:
MyType ::= CHOICE {
a SEQUENCE {a INTEGER, b INTEGER}
}
This will result in a record 'MyType_a'.
Due to a bug in the compiler no record is generated for a SEQUENCE in a
CHOICE that has extensionmarks, like in:
MyType2 ::= CHOICE {
a SEQUENCE {a INTEGER, b INTEGER},
...
}
The TransportAddress is a CHOICE with an extension mark.
There will be a fix of this bug in the next release.
Maybe the easiest workaround is to define missing records by hand.
Bruce Fitzsimons wrote:
>
> I have a few more questions about the Erlang ASN.1 compiler/runtime.
>
> Given an H.323 TransportAddress definition (used for addressing
> packets'n'stuff, definition below) I can get packets decoded with items such
> as:
>
> {ipAddress,
> {'TransportAddress_ipAddress',
> [10,151,33,220],
> 2634}},
>
> However there doesn't seem to be any way of decoding/interpreting this
> directly, inasmuch as there is no auto-generated record definition
> 'TransportAddress_ipAddress' (or for any of the other choices). This is
> contrary to what I would have expected given that other choices do end up
> with records for their sub-sequences (such as, for example, the RasMessage
> choice - gives 'GatekeeperRequest' etc).
>
> I feel I must be missing something fundamental. I can of course define a
> record for myself, but I thought I should ask the question.
>
> Thanks in advance
>
> /Bruce
>
> H323 ASN.1 definition:
>
> TransportAddress ::= CHOICE
> {
> ipAddress SEQUENCE
> {
> ip OCTET STRING (SIZE(4)),
> port INTEGER(0..65535)
> },
> ipSourceRoute SEQUENCE
> {
> ip OCTET STRING (SIZE(4)),
> port INTEGER(0..65535),
> route SEQUENCE OF OCTET STRING (SIZE(4)),
> routing CHOICE
> {
> strict NULL,
> loose NULL,
> ...
> },
> ...
> },
> ipxAddress SEQUENCE
> {
> node OCTET STRING (SIZE(6)),
> netnum OCTET STRING (SIZE(4)),
> port OCTET STRING (SIZE(2))
> },
> ip6Address SEQUENCE
> {
> ip OCTET STRING (SIZE(16)),
> port INTEGER(0..65535),
> ...
> },
> netBios OCTET STRING (SIZE(16)),
> nsap OCTET STRING (SIZE(1..20)),
> nonStandardAddress NonStandardParameter,
> ...
> }
--
/ Bertil Karlsson
More information about the erlang-questions
mailing list