aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Kukosa <tomas.kukosa@siemens.com>2007-10-22 12:25:56 +0000
committerTomas Kukosa <tomas.kukosa@siemens.com>2007-10-22 12:25:56 +0000
commit10a6ffc497000013477084f7467431c1a2610b06 (patch)
tree7cbbd887cd0b64a93375dd1e5729d7921c1383a8
parent07faab5ec29b942f3461b57b84ad96d98ca70ab9 (diff)
add flags for optional fields of EXTERNAL type into asn1_ctx_t struct
svn path=/trunk/; revision=23238
-rw-r--r--epan/asn1.h8
-rw-r--r--epan/dissectors/packet-per.c3
2 files changed, 9 insertions, 2 deletions
diff --git a/epan/asn1.h b/epan/asn1.h
index aafad94e8a..0f792bd482 100644
--- a/epan/asn1.h
+++ b/epan/asn1.h
@@ -81,8 +81,11 @@ typedef struct _asn1_ctx_t {
void *value_ptr;
void *private_data;
struct {
- tvbuff_t *data_value_descriptor;
int hf_index;
+ gboolean data_value_descr_present;
+ gboolean direct_ref_present;
+ gboolean indirect_ref_present;
+ tvbuff_t *data_value_descriptor;
const char *direct_reference;
gint32 indirect_reference;
gint encoding;
@@ -104,8 +107,9 @@ typedef struct _asn1_ctx_t {
} u;
} external;
struct {
- tvbuff_t *data_value_descriptor;
int hf_index;
+ gboolean data_value_descr_present;
+ tvbuff_t *data_value_descriptor;
gint identification;
/*
0 : syntaxes,
diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c
index 8be56f4ee4..c5d6568a28 100644
--- a/epan/dissectors/packet-per.c
+++ b/epan/dissectors/packet-per.c
@@ -1899,6 +1899,7 @@ 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_str(tvb, offset, actx, tree, hf_index, &actx->external.direct_reference);
+ actx->external.direct_ref_present = TRUE;
return offset;
}
@@ -1908,6 +1909,7 @@ 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.indirect_reference);
+ actx->external.indirect_ref_present = TRUE;
return offset;
}
@@ -1917,6 +1919,7 @@ static int
dissect_per_T_data_value_descriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_object_descriptor(tvb, offset, actx, tree, hf_index, &actx->external.data_value_descriptor);
+ actx->external.data_value_descr_present = TRUE;
return offset;
}