diff options
author | Anders Broman <anders.broman@ericsson.com> | 2006-10-03 19:24:22 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2006-10-03 19:24:22 +0000 |
commit | 699c5c66b680ce3b648746a6229a3c22db47395c (patch) | |
tree | e368546a87bb2df168bac794d6a3dfc41df586a4 /asn1 | |
parent | 9e6c7b11ae8eac1bcf50fc904e2e426f7c9d28f3 (diff) |
From Florent.Drouin@alcatel.fr:
I did improve the OID management in the tcap dissector.
Now, when a tcap message is reveived, without upper layer, the ACN is saved in the TCAP context, and can be used for the next messages of the dialogue. It is used only when the upper layer session is opened with Tcap only messages.
svn path=/trunk/; revision=19414
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/tcap/packet-tcap-template.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/asn1/tcap/packet-tcap-template.c b/asn1/tcap/packet-tcap-template.c index c619929398..a1f272d032 100644 --- a/asn1/tcap/packet-tcap-template.c +++ b/asn1/tcap/packet-tcap-template.c @@ -158,6 +158,7 @@ dissect_tcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) proto_item *stat_item=NULL; proto_tree *stat_tree=NULL; struct tcaphash_context_t * p_tcap_context; + dissector_handle_t subdissector_handle; tcap_top_tree = parent_tree; if (check_col(pinfo->cinfo, COL_PROTOCOL)) @@ -190,6 +191,21 @@ dissect_tcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) } p_tcap_context=tcapsrt_call_matching(tvb, pinfo, stat_tree, gp_tcapsrt_info); tcap_private.context=p_tcap_context; + + /* If the current message is TCAP only, + save the Application contexte name for the next messages */ + if ( p_tcap_context && + cur_oid && + !p_tcap_context->oid_present ) { + /* Save the application context and the sub dissector */ + ber_oid_dissector_table = find_dissector_table("ber.oid"); + strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + if ( (subdissector_handle + = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { + p_tcap_context->subdissector_handle=subdissector_handle; + p_tcap_context->oid_present=TRUE; + } + } if (gtcap_HandleSRT && p_tcap_context && |