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
This commit is contained in:
parent
1af3ee0936
commit
45ee7230cc
|
@ -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
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue