aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/tcap
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-11-13 21:59:53 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-11-13 21:59:53 +0000
commit524db0a082832121241cef58775902aeec8e1b08 (patch)
tree8957b4c2daf6cb7f0087d39716f82443ebf97424 /asn1/tcap
parent923630d743aea204021420fde5b3310b8e45177a (diff)
From Florent DROUIN:
Since the use of the function 'dissect_ber_tagged_type' for DialoguePortion, the file tcap.cnf must be updated to remove the decoding of the tag and length. This decoding is now done in the new function 'dissect_ber_tagged_type'. The file tcap.cnf has been updated to take into account this change. But this leads to a change in tcap.asn too, for the definition of the ExternalPDU. I think this part of the ASN1 file is specific to Wireshark and can be modified. In the meantime, I did update the DEBUG part for packet_ber.c for the function (dissect_ber_tagged_type) svn path=/trunk/; revision=23442
Diffstat (limited to 'asn1/tcap')
-rw-r--r--asn1/tcap/tcap.asn2
-rw-r--r--asn1/tcap/tcap.cnf75
2 files changed, 7 insertions, 70 deletions
diff --git a/asn1/tcap/tcap.asn b/asn1/tcap/tcap.asn
index b9b15e5ae3..0ebd11030e 100644
--- a/asn1/tcap/tcap.asn
+++ b/asn1/tcap/tcap.asn
@@ -20,7 +20,7 @@ DialoguePDU ::= CHOICE {
dialogueAbort ABRT-apdu }
-ExternalPDU ::= [UNIVERSAL 8] SEQUENCE
+ExternalPDU ::= [UNIVERSAL 8] IMPLICIT SEQUENCE
{
oid OBJECT IDENTIFIER,
dialog [0] IMPLICIT Dialog1
diff --git a/asn1/tcap/tcap.cnf b/asn1/tcap/tcap.cnf
index c9a893abc8..c5d43b3243 100644
--- a/asn1/tcap/tcap.cnf
+++ b/asn1/tcap/tcap.cnf
@@ -25,91 +25,28 @@ UniDialoguePDU B "0.0.17.773.1.2.1" "uniDialogue-as-id"
#----------------------------------------------------------------------------------------
#.FN_BODY DialogueOC
-tvbuff_t *next_tvb;
-gint8 class;
- gboolean pc;
- gint tag;
- guint32 len;
- gint ind_field;
-
-
-offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
-offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind_field);
- next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field));
-
-
- if (!next_tvb)
- return offset;
-
- dissect_tcap_ExternalPDU(TRUE, next_tvb, 0, actx, tree, -1);
-
-return offset+len;
+return dissect_tcap_ExternalPDU(FALSE /*implicit_tag*/, tvb, offset, actx, tree, -1);
#----------------------------------------------------------------------------------------
#.FN_BODY ExternalPDU
-gint8 class;
- gboolean pc;
- gint tag;
- guint32 len;
- gint ind_field;
- /* Workaround for tagged fields */
-offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
-offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind_field);
-%(DEFAULT_BODY)s
-
-#----------------------------------------------------------------------------------------
-#.FN_BODY Dialog1 VAL_PTR = &parameter_tvb
- tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
- if (!parameter_tvb)
- return offset;
-
- dissect_tcap_DialoguePDU(TRUE, tvb, 0, actx, tree, -1);
+#----------------------------------------------------------------------------------------
+#.FN_BODY Dialog1
-#.END
+return dissect_tcap_DialoguePDU(TRUE, tvb, offset, actx, tree, -1);
#----------------------------------------------------------------------------------------
#.FN_BODY Parameter
-tvbuff_t *next_tvb;
-gint8 class;
- gboolean pc;
- gint tag;
- guint32 len;
- gint ind_field;
-
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind_field);
- /* need to strip the EOC off the next_tvb */
- next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field));
-
-if (!next_tvb)
- return offset;
- dissect_tcap_param(actx,tree,tvb,0);
-
- return offset+len;
+return dissect_tcap_param(actx,tree,tvb,offset);
#----------------------------------------------------------------------------------------
#.FN_BODY User-information
-tvbuff_t *next_tvb;
-gint8 class;
- gboolean pc;
- gint tag;
- guint32 len;
- gint ind_field;
-
-
-offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
-offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind_field);
-next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field));
-if (!next_tvb)
- return offset+len;
-dissect_tcap_UserInformation(TRUE, next_tvb, 0, actx, tree, -1);
-return offset+len;
+return dissect_tcap_UserInformation(FALSE, tvb, offset, actx, tree, -1);
#----------------------------------------------------------------------------------------
#.FN_BODY Component