diff options
author | Anders Broman <anders.broman@ericsson.com> | 2007-11-13 21:59:53 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2007-11-13 21:59:53 +0000 |
commit | 524db0a082832121241cef58775902aeec8e1b08 (patch) | |
tree | 8957b4c2daf6cb7f0087d39716f82443ebf97424 /asn1/tcap | |
parent | 923630d743aea204021420fde5b3310b8e45177a (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.asn | 2 | ||||
-rw-r--r-- | asn1/tcap/tcap.cnf | 75 |
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 = ¶meter_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 |