summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorTomas Kukosa <tomas.kukosa@siemens.com>2007-05-07 11:25:21 +0000
committerTomas Kukosa <tomas.kukosa@siemens.com>2007-05-07 11:25:21 +0000
commita8c10b431f3037639ed1d6d59617d7f5c1d4dc4b (patch)
treeef857c51aaa7cc887e3bdc6ffa1a3a25de0bcbce /epan
parent0eae1cc0bd70dc4f1374ddbc68aaab7a2cab09e0 (diff)
downloadwireshark-a8c10b431f3037639ed1d6d59617d7f5c1d4dc4b.tar.gz
changes in external structure of asn1_ctx_t
svn path=/trunk/; revision=21714
Diffstat (limited to 'epan')
-rw-r--r--epan/asn1.h12
-rw-r--r--epan/dissectors/packet-per.c32
2 files changed, 29 insertions, 15 deletions
diff --git a/epan/asn1.h b/epan/asn1.h
index 33a93cd89f..0b9ca717c4 100644
--- a/epan/asn1.h
+++ b/epan/asn1.h
@@ -43,6 +43,12 @@ typedef struct _asn1_ctx_t {
struct {
tvbuff_t *data_value_descriptor;
int hf_index;
+ tvbuff_t *direct_reference;
+ gint32 indirect_reference;
+ guint32 encoding;
+ tvbuff_t *single_asn1_type;
+ tvbuff_t *octet_aligned;
+ tvbuff_t *arbitrary;
union {
struct {
int (*ber_callback)(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, struct _asn1_ctx_t*);
@@ -55,12 +61,6 @@ typedef struct _asn1_ctx_t {
} ber;
struct {
int (*type_cb)(tvbuff_t*, int, struct _asn1_ctx_t*, proto_tree*, int);
- tvbuff_t *direct_reference;
- gint32 indirect_reference;
- guint32 encoding;
- tvbuff_t *single_asn1_type;
- tvbuff_t *octet_aligned;
- tvbuff_t *arbitrary;
} per;
};
} external;
diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c
index 470aef7b53..af96db9494 100644
--- a/epan/dissectors/packet-per.c
+++ b/epan/dissectors/packet-per.c
@@ -1791,9 +1791,23 @@ DEBUG_ENTRY("dissect_per_octet_string");
/* 26 Encoding of a value of the external type */
/* code generated from definition in 26.1 */
+/*
+[UNIVERSAL 8] IMPLICIT SEQUENCE {
+ direct-reference OBJECT IDENTIFIER OPTIONAL,
+ indirect-reference INTEGER OPTIONAL,
+ data-value-descriptor ObjectDescriptor OPTIONAL,
+ encoding CHOICE {
+ single-ASN1-type [0] ABSTRACT-SYNTAX.&Type,
+ octet-aligned [1] IMPLICIT OCTET STRING,
+ arbitrary [2] IMPLICIT BIT STRING
+ }
+}
+*/
+/* NOTE – This sequence type differs from that in ITU-T Rec. X.680 | ISO/IEC 8824-1 for historical reasons. */
+
static int
dissect_per_T_direct_reference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, &actx->external.per.direct_reference);
+ offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, &actx->external.direct_reference);
return offset;
}
@@ -1802,7 +1816,7 @@ dissect_per_T_direct_reference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_per_T_indirect_reference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &actx->external.per.indirect_reference);
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &actx->external.indirect_reference);
return offset;
}
@@ -1830,12 +1844,12 @@ dissect_per_T_single_ASN1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_per_T_octet_aligned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, &actx->external.per.octet_aligned);
+ NO_BOUND, NO_BOUND, &actx->external.octet_aligned);
if (actx->external.per.type_cb) {
- actx->external.per.type_cb(actx->external.per.octet_aligned, 0, actx, tree, actx->external.hf_index);
+ actx->external.per.type_cb(actx->external.octet_aligned, 0, actx, tree, actx->external.hf_index);
} else {
- actx->created_item = proto_tree_add_text(tree, actx->external.per.octet_aligned, 0, -1, "Unknown EXTERNAL Type");
+ actx->created_item = proto_tree_add_text(tree, actx->external.octet_aligned, 0, -1, "Unknown EXTERNAL Type");
}
return offset;
}
@@ -1845,12 +1859,12 @@ dissect_per_T_octet_aligned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_per_T_arbitrary(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, &actx->external.per.arbitrary);
+ NO_BOUND, NO_BOUND, FALSE, &actx->external.arbitrary);
if (actx->external.per.type_cb) {
- actx->external.per.type_cb(actx->external.per.arbitrary, 0, actx, tree, actx->external.hf_index);
+ actx->external.per.type_cb(actx->external.arbitrary, 0, actx, tree, actx->external.hf_index);
} else {
- actx->created_item = proto_tree_add_text(tree, actx->external.per.arbitrary, 0, -1, "Unknown EXTERNAL Type");
+ actx->created_item = proto_tree_add_text(tree, actx->external.arbitrary, 0, -1, "Unknown EXTERNAL Type");
}
return offset;
}
@@ -1874,7 +1888,7 @@ static int
dissect_per_External_encoding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_per_External_encoding, External_encoding_choice,
- &actx->external.per.encoding);
+ &actx->external.encoding);
return offset;
}