Title: Asn1 question
Hi,
BTW I have found that it is not optional in later
specifications (Capability Set 2-4)
If I
undestand it well later Capbility Sets are supersets of previous ones, i.e. it
would be enough to implement CS-4 (Q.1248.x).
Am I
right?
Regards,
Tomas
Hi,
In inap the
following asn1 is used:
EXTENSION ::= CLASS
{
&id
ExtensionType UNIQUE,
&Type OPTIONAL,
&absent &Type OPTIONAL,
&criticality Criticality DEFAULT
ignored
}
WITH SYNTAX {
[EXTENSION-SYNTAX
&Type
[IF ABSENT
&absent]]
[CRITICALITY
&criticality]
IDENTIFIED BY
&id
}
ExtensionType ::= INTEGER(0..MAX)
Criticality ::= ENUMERATED {ignored(0),
abort(1)}
ExtensionField{EXTENSION:ChosenFrom} ::= SEQUENCE
{
type
EXTENSION.&id({ChosenFrom}),
criticality Criticality DEFAULT ignored,
value [1]
EXTENSION.&Type({ChosenFrom}{@type})
}
In the current inap.asn this is translated to:
Extensions ::= SEQUENCE SIZE (1..10) OF
SEQUENCE
{
type INTEGER,
criticality ENUMERATED {
ignore (0),
abort (1)} DEFAULT ignore ,
value [1] IMPLICIT OCTET STRING
}
Asn2wrs translates it to:
static const ber_sequence_t
Extensions_item_sequence[] = {
{
&hf_inap_type ,
BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_inap_INTEGER
},
{
&hf_inap_criticality , BER_CLASS_UNI,
BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG,
dissect_inap_T_criticality },
{
&hf_inap_value ,
BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_inap_OCTET_STRING },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_inap_Extensions_item(gboolean implicit_tag _U_, tvbuff_t *tvb
_U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index
_U_) {
offset = dissect_ber_sequence(implicit_tag,
actx, tree, tvb, offset,
Extensions_item_sequence, hf_index, ett_inap_Extensions_item);
return offset;
}
static const ber_sequence_t Extensions_sequence_of[1]
= {
{ &hf_inap_Extensions_item,
BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG,
dissect_inap_Extensions_item },
};
static int
dissect_inap_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_)
{
offset = dissect_ber_sequence_of(implicit_tag,
actx, tree, tvb, offset,
Extensions_sequence_of, hf_index, ett_inap_Extensions);
return offset;
}
Which looks OK but I'm wondering about the OPTIONAL
in the original statements does that mean that that value should be
OPTIONAL?
Regards
Anders