diff options
author | Jeff Morriss <jeff.morriss@ulticom.com> | 2007-07-26 20:05:54 +0000 |
---|---|---|
committer | Jeff Morriss <jeff.morriss@ulticom.com> | 2007-07-26 20:05:54 +0000 |
commit | 45ee7230cce7dd5f178dfb5dc0c55ed4aa4ad688 (patch) | |
tree | 87386f1f250d2659a91e69fd5cf671a2aa3b7d43 | |
parent | 1af3ee0936d875a6485deb5ad3c99c6af7ec80b9 (diff) |
Change a bunch of calls to col_append_*() to col_add_*() in places where we
_want_ what's currently in the INFO column (usually a more generic message
type from a lower level dissector) replaced (usually with a more
specific--higher level--message type from the currect dissector). Add a
comment there not to change it back and to explain the use of col_set_fence()
in case someone finds data there that they _don't_ want replaced.
svn path=/trunk/; revision=22409
-rw-r--r-- | asn1/tcap/tcap.cnf | 85 | ||||
-rw-r--r-- | epan/dissectors/packet-sccp.c | 63 | ||||
-rw-r--r-- | epan/dissectors/packet-tcap.c | 93 |
3 files changed, 131 insertions, 110 deletions
diff --git a/asn1/tcap/tcap.cnf b/asn1/tcap/tcap.cnf index 8a610cc08c..f17dc267df 100644 --- a/asn1/tcap/tcap.cnf +++ b/asn1/tcap/tcap.cnf @@ -2,7 +2,7 @@ # $Id$ # tcap conformation file -# +# #.MODULE_IMPORT @@ -30,13 +30,13 @@ gint8 class; 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; @@ -62,7 +62,7 @@ gint8 class; gint tag; guint32 len; gint ind_field; - + /* Calculate the correct length, Tags will be shown in DialoguePDU */ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); offset = get_ber_length(tree, tvb, offset, &len, &ind_field); @@ -83,10 +83,10 @@ gint8 class; 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)); + next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field)); if (!next_tvb) - return offset; + return offset; dissect_tcap_param(actx,tree,tvb,0); offset += len; return offset; @@ -102,19 +102,19 @@ gint8 class; 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)); +next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field)); if (!next_tvb) - return offset+len; + return offset+len; dissect_tcap_UserInformation(TRUE, next_tvb, 0, actx, tree, -1); - - + + return offset+len; #.FN_BODY Component dissect_tcap_TheComponent(implicit_tag, tvb, offset, actx, tree, hf_index); #.FN_BODY Applicationcontext FN_VARIANT = _str VAL_PTR = &cur_oid %(DEFAULT_BODY)s - tcap_private.oid= (void*) cur_oid; + tcap_private.oid= (void*) cur_oid; tcap_private.acv=TRUE; # Do not overwrite the ApplicationContext with the UserInfoOID ! @@ -138,23 +138,23 @@ offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, 0, hf_index, NULL); -#.FN_BODY ComponentPDU +#.FN_BODY ComponentPDU tvbuff_t *next_tvb; dissector_handle_t subdissector_handle; -next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset)); +next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset)); if (! (subdissector_handle = get_ansi_tcap_subdissector(actx->pinfo->match_port))) { subdissector_handle = data_handle; -} - +} + tcap_subdissector_used=TRUE; call_dissector(subdissector_handle, next_tvb, actx->pinfo, tcap_top_tree); - + offset = dissect_ber_old_choice(actx, tree, tvb, offset, ComponentPDU_choice, hf_index, ett_tcap_ComponentPDU,NULL); - + #.FN_BODY OrigTransactionID tvbuff_t *parameter_tvb; guint8 len, i; @@ -190,7 +190,7 @@ if (parameter_tvb){ col_append_fstr(actx->pinfo->cinfo, COL_INFO, ") "); } -} +} #.FN_BODY DestTransactionID @@ -215,12 +215,12 @@ if (parameter_tvb){ break; case 4: gp_tcapsrt_info->dst_tid=tvb_get_ntohl(parameter_tvb, 0); - break; + break; default: gp_tcapsrt_info->dst_tid=0; break; } - + if ((len)&&(check_col(actx->pinfo->cinfo, COL_INFO))){ col_append_fstr(actx->pinfo->cinfo, COL_INFO, "dtid("); for(i=0;i<len;i++) @@ -231,8 +231,15 @@ if (parameter_tvb){ #.FN_BODY Begin gp_tcapsrt_info->ope=TC_BEGIN; +/* Do not change col_add_str() to col_append_str() here: we _want_ this call + * to overwrite whatever's currently in the INFO column (e.g., "UDT" from + * the SCCP dissector). + * + * If there's something there that should not be overwritten, whoever + * put that info there should call col_set_fence() to protect it. + */ if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Begin "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "Begin "); %(DEFAULT_BODY)s @@ -240,7 +247,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO)) gp_tcapsrt_info->ope=TC_END; if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " End "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "End "); %(DEFAULT_BODY)s @@ -248,7 +255,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO)) gp_tcapsrt_info->ope=TC_CONT; if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Continue "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "Continue "); %(DEFAULT_BODY)s @@ -256,33 +263,33 @@ if (check_col(actx->pinfo->cinfo, COL_INFO)) gp_tcapsrt_info->ope=TC_ABORT; if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Abort "); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "Abort "); + %(DEFAULT_BODY)s - + #.FN_BODY AbortPDU if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Abort "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "Abort "); %(DEFAULT_BODY)s #.FN_BODY TransactionPDU if ((hf_index == hf_tcap_ansiqueryWithPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " QueryWithPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "QueryWithPerm "); + if ((hf_index == hf_tcap_ansiqueryWithoutPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " QueryWithOutPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "QueryWithOutPerm "); + if ((hf_index == hf_tcap_ansiresponse)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Response"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "Response "); + if ((hf_index == hf_tcap_ansiconversationWithPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ConversationWithPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithPerm "); + if ((hf_index == hf_tcap_ansiconversationWithoutPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ConversationWithoutPerm"); - -%(DEFAULT_BODY)s + col_add_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithoutPerm "); + +%(DEFAULT_BODY)s #.FN_BODY TransactionID VAL_PTR = &next_tvb diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c index 0aa3ebda03..529a2255a2 100644 --- a/epan/dissectors/packet-sccp.c +++ b/epan/dissectors/packet-sccp.c @@ -818,15 +818,15 @@ sccp_assoc_info_t* get_sccp_assoc(packet_info* pinfo, guint offset, guint32 src_ emem_tree_key_t bw_key[] = { {1, &dpck}, {1, &opck}, {1, &src_lr}, {0, NULL} }; - + if (! ( assoc = se_tree_lookup32_array(assocs,bw_key) ) && ! pinfo->fd->flags.visited ) { assoc = new_assoc(opck,dpck); se_tree_insert32_array(assocs,bw_key,assoc); assoc->has_bw_key = TRUE; } - + pinfo->p2p_dir = P2P_DIR_SENT; - + break; } case SCCP_MSG_TYPE_CC: @@ -837,7 +837,7 @@ sccp_assoc_info_t* get_sccp_assoc(packet_info* pinfo, guint offset, guint32 src_ emem_tree_key_t bw_key[] = { {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL} }; - + if ( ( assoc = se_tree_lookup32_array(assocs,bw_key) ) ) { goto got_assoc; } @@ -849,9 +849,9 @@ sccp_assoc_info_t* get_sccp_assoc(packet_info* pinfo, guint offset, guint32 src_ assoc = new_assoc(dpck,opck); got_assoc: - + pinfo->p2p_dir = P2P_DIR_RECV; - + if ( ! pinfo->fd->flags.visited && ! assoc->has_bw_key ) { se_tree_insert32_array(assocs,bw_key,assoc); assoc->has_bw_key = TRUE; @@ -869,17 +869,17 @@ sccp_assoc_info_t* get_sccp_assoc(packet_info* pinfo, guint offset, guint32 src_ emem_tree_key_t key[] = { {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL} }; - + assoc = se_tree_lookup32_array(assocs,key); - + if (assoc) { if (assoc->calling_dpc == dpck) { pinfo->p2p_dir = P2P_DIR_RECV; } else { pinfo->p2p_dir = P2P_DIR_SENT; - } + } } - + break; } } @@ -1506,7 +1506,7 @@ dissect_sccp_data_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) guint8 other_ssn = INVALID_SSN; const mtp3_addr_pc_t* dpc; const mtp3_addr_pc_t* opc; - + if (trace_sccp && assoc && assoc != &no_assoc) { pinfo->sccp_info = assoc->curr_msg; } else { @@ -1532,22 +1532,22 @@ dissect_sccp_data_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; } - + if (num_sccp_users && pinfo->src.type == AT_SS7PC) { guint i; dissector_handle_t handle = NULL; gboolean uses_tcap = FALSE; - + for (i=0; i < num_sccp_users; i++) { sccp_user_t* u = &(sccp_users[i]); - + if (dpc->ni != u->ni) continue; - - if (value_is_in_range(u->called_ssn, ssn) && value_is_in_range(u->called_pc, dpc->pc) ) { + + if (value_is_in_range(u->called_ssn, ssn) && value_is_in_range(u->called_pc, dpc->pc) ) { handle = *(u->handlep); uses_tcap = u->uses_tcap; break; - } else if (value_is_in_range(u->called_ssn, other_ssn) && value_is_in_range(u->called_pc, opc->pc) ) { + } else if (value_is_in_range(u->called_ssn, other_ssn) && value_is_in_range(u->called_pc, opc->pc) ) { handle = *(u->handlep); uses_tcap = u->uses_tcap; break; @@ -1564,7 +1564,7 @@ dissect_sccp_data_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } - + if (ssn != INVALID_SSN && dissector_try_port(sccp_ssn_dissector_table, ssn, tvb, pinfo, tree)) { return; } @@ -1959,7 +1959,14 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree, offset = SCCP_MSG_TYPE_LENGTH; if (check_col(pinfo->cinfo, COL_INFO)) { - col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", + /* Do not change col_add_fstr() to col_append_fstr() here: we _want_ + * this call to overwrite whatever's currently in the INFO column (e.g., + * "DATA" from the SCTP dissector). + * + * If there's something there that should not be overwritten, whoever + * put that info there should call col_set_fence() to protect it. + */ + col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(message_type, sccp_message_type_acro_values, "Unknown")); }; @@ -2164,7 +2171,7 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree, case SCCP_MSG_TYPE_UDT: pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type); - + offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree, PARAMETER_CLASS, offset, PROTOCOL_CLASS_LENGTH); @@ -2187,7 +2194,7 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree, case SCCP_MSG_TYPE_UDTS: pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type); - + offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree, PARAMETER_RETURN_CAUSE, offset, RETURN_CAUSE_LENGTH); @@ -2480,7 +2487,7 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree, PROTO_ITEM_SET_GENERATED(pi); if (assoc->msgs) { sccp_msg_info_t* m; - for(m = assoc->msgs; m ; m = m->data.co.next) { + for(m = assoc->msgs; m ; m = m->data.co.next) { pi = proto_tree_add_uint( pt,hf_sccp_assoc_msg,tvb,0,0,m->framenum); if (assoc->payload != SCCP_PLOAD_NONE) @@ -2607,7 +2614,7 @@ static struct _sccp_ul { static void sccp_users_update_cb(void* r, const char** err _U_) { sccp_user_t* u = r; struct _sccp_ul* c; - + for (c=user_list; c->handlep; c++) { if (c->id == u->user) { u->uses_tcap = c->uses_tcap; @@ -2615,7 +2622,7 @@ static void sccp_users_update_cb(void* r, const char** err _U_) { return; } } - + u->uses_tcap = FALSE; u->handlep = &data_handle; } @@ -2623,14 +2630,14 @@ static void sccp_users_update_cb(void* r, const char** err _U_) { static void* sccp_users_copy_cb(void* n, const void* o, unsigned siz _U_) { const sccp_user_t* u = o; sccp_user_t* un = n; - + un->ni = u->ni; un->user = u->user; un->uses_tcap = u->uses_tcap; un->handlep = u->handlep; if (u->called_pc) un->called_pc = range_copy(u->called_pc); if (u->called_ssn) un->called_ssn = range_copy(u->called_ssn); - + return n; } @@ -3055,7 +3062,7 @@ proto_register_sccp(void) &ett_sccp_assoc }; - + static uat_field_t users_flds[] = { UAT_FLD_DEC(sccp_users,ni,"Network Indicator"), UAT_FLD_RANGE(sccp_users,called_pc,65535,"DPCs for which this protocol is to be used"), @@ -3076,7 +3083,7 @@ proto_register_sccp(void) sccp_users_update_cb, sccp_users_free_cb, users_flds ); - + /* Register the protocol name and description */ proto_sccp = proto_register_protocol("Signalling Connection Control Part", "SCCP", "sccp"); diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c index 39282b83d6..c8cdf986ca 100644 --- a/epan/dissectors/packet-tcap.c +++ b/epan/dissectors/packet-tcap.c @@ -364,7 +364,7 @@ dissect_tcap_Applicationcontext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in #line 116 "tcap.cnf" offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &cur_oid); - tcap_private.oid= (void*) cur_oid; + tcap_private.oid= (void*) cur_oid; tcap_private.acv=TRUE; @@ -390,12 +390,12 @@ gint8 class; 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)); +next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field)); if (!next_tvb) - return offset+len; + return offset+len; dissect_tcap_UserInformation(TRUE, next_tvb, 0, actx, tree, -1); - - + + return offset+len; @@ -639,7 +639,7 @@ gint8 class; gint tag; guint32 len; gint ind_field; - + /* Calculate the correct length, Tags will be shown in DialoguePDU */ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); offset = get_ber_length(tree, tvb, offset, &len, &ind_field); @@ -870,13 +870,13 @@ gint8 class; 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; @@ -990,10 +990,10 @@ gint8 class; 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)); + next_tvb = tvb_new_subset(tvb, offset, len-(2*ind_field), len-(2*ind_field)); if (!next_tvb) - return offset; + return offset; dissect_tcap_param(actx,tree,tvb,0); offset += len; return offset; @@ -1401,7 +1401,7 @@ if (parameter_tvb){ col_append_fstr(actx->pinfo->cinfo, COL_INFO, ") "); } -} +} @@ -1425,8 +1425,15 @@ dissect_tcap_Begin(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, #line 232 "tcap.cnf" gp_tcapsrt_info->ope=TC_BEGIN; +/* Do not change col_add_str() to col_append_str() here: we _want_ this call + * to overwrite whatever's currently in the INFO column (e.g., "UDT" from + * the SCCP dissector). + * + * If there's something there that should not be overwritten, whoever + * put that info there should call col_set_fence() to protect it. + */ if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Begin "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "Begin "); offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, Begin_sequence, hf_index, ett_tcap_Begin); @@ -1466,12 +1473,12 @@ if (parameter_tvb){ break; case 4: gp_tcapsrt_info->dst_tid=tvb_get_ntohl(parameter_tvb, 0); - break; + break; default: gp_tcapsrt_info->dst_tid=0; break; } - + if ((len)&&(check_col(actx->pinfo->cinfo, COL_INFO))){ col_append_fstr(actx->pinfo->cinfo, COL_INFO, "dtid("); for(i=0;i<len;i++) @@ -1497,11 +1504,11 @@ static const ber_old_sequence_t End_sequence[] = { static int dissect_tcap_End(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 240 "tcap.cnf" +#line 247 "tcap.cnf" gp_tcapsrt_info->ope=TC_END; if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " End "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "End "); offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, End_sequence, hf_index, ett_tcap_End); @@ -1526,11 +1533,11 @@ static const ber_old_sequence_t Continue_sequence[] = { static int dissect_tcap_Continue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 248 "tcap.cnf" +#line 255 "tcap.cnf" gp_tcapsrt_info->ope=TC_CONT; if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Continue "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "Continue "); offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, Continue_sequence, hf_index, ett_tcap_Continue); @@ -1600,16 +1607,16 @@ static const ber_old_sequence_t Abort_sequence[] = { static int dissect_tcap_Abort(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 256 "tcap.cnf" +#line 263 "tcap.cnf" gp_tcapsrt_info->ope=TC_ABORT; if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Abort "); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "Abort "); + offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, Abort_sequence, hf_index, ett_tcap_Abort); - + return offset; @@ -1622,7 +1629,7 @@ static int dissect_abort_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offse static int dissect_tcap_TransactionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 288 "tcap.cnf" +#line 295 "tcap.cnf" tvbuff_t *next_tvb; @@ -2104,19 +2111,19 @@ dissect_tcap_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs tvbuff_t *next_tvb; dissector_handle_t subdissector_handle; -next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset)); +next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset)); if (! (subdissector_handle = get_ansi_tcap_subdissector(actx->pinfo->match_port))) { subdissector_handle = data_handle; -} - +} + tcap_subdissector_used=TRUE; call_dissector(subdissector_handle, next_tvb, actx->pinfo, tcap_top_tree); - + offset = dissect_ber_old_choice(actx, tree, tvb, offset, ComponentPDU_choice, hf_index, ett_tcap_ComponentPDU,NULL); - + return offset; @@ -2170,25 +2177,25 @@ static const ber_old_sequence_t TransactionPDU_sequence[] = { static int dissect_tcap_TransactionPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 270 "tcap.cnf" +#line 277 "tcap.cnf" if ((hf_index == hf_tcap_ansiqueryWithPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " QueryWithPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "QueryWithPerm "); + if ((hf_index == hf_tcap_ansiqueryWithoutPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " QueryWithOutPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "QueryWithOutPerm "); + if ((hf_index == hf_tcap_ansiresponse)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Response"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "Response "); + if ((hf_index == hf_tcap_ansiconversationWithPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ConversationWithPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithPerm "); + if ((hf_index == hf_tcap_ansiconversationWithoutPerm)&&(check_col(actx->pinfo->cinfo, COL_INFO))) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ConversationWithoutPerm"); - + col_add_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithoutPerm "); + offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, TransactionPDU_sequence, hf_index, ett_tcap_TransactionPDU); - + @@ -2272,9 +2279,9 @@ static const ber_old_sequence_t AbortPDU_sequence[] = { static int dissect_tcap_AbortPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 264 "tcap.cnf" +#line 271 "tcap.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Abort "); + col_add_str(actx->pinfo->cinfo, COL_INFO, "Abort "); offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, AbortPDU_sequence, hf_index, ett_tcap_AbortPDU); |