Add data parameter to call_dissector_only.

svn path=/trunk/; revision=44872
This commit is contained in:
Jakub Zawadzki 2012-09-11 08:28:07 +00:00
parent dee4443809
commit 9f92dc93c5
21 changed files with 55 additions and 55 deletions

View File

@ -1491,7 +1491,7 @@ dissect_kerberos_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(krb4_handle){
gboolean res;
res=call_dissector_only(krb4_handle, tvb, pinfo, tree);
res=call_dissector_only(krb4_handle, tvb, pinfo, tree, NULL);
return res;
}else{
return 0;

View File

@ -1217,7 +1217,7 @@ try_conversation_dissector(const address *addr_a, const address *addr_b, const p
if (conversation->dissector_handle == NULL)
return FALSE;
ret=call_dissector_only(conversation->dissector_handle, tvb, pinfo,
tree);
tree, NULL);
if(!ret) {
/* this packet was rejected by the dissector
* so return FALSE in case our caller wants

View File

@ -835,7 +835,7 @@ static void dissect_rlc_umts(tvbuff_t *tvb, gint offset,
/* Call UMTS RLC dissector */
if (rlc_umts_handle != 0) {
rlc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
call_dissector_only(rlc_umts_handle, rlc_tvb, pinfo, tree);
call_dissector_only(rlc_umts_handle, rlc_tvb, pinfo, tree, NULL);
}
}
}
@ -1034,7 +1034,7 @@ static void dissect_rrc_lte(tvbuff_t *tvb, gint offset,
/* Send to RRC dissector, if got here, have sub-dissector and some data left */
if ((protocol_handle != NULL) && (tvb_length_remaining(tvb, offset) > 0)) {
rrc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree);
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree, NULL);
}
}
@ -1097,7 +1097,7 @@ static void dissect_ccpri_lte(tvbuff_t *tvb, gint offset,
protocol_handle = find_dissector("lapb");
if ((protocol_handle != NULL) && (tvb_length_remaining(tvb, offset) > 0)) {
ccpri_tvb = tvb_new_subset(tvb, offset, length, length);
call_dissector_only(protocol_handle, ccpri_tvb, pinfo, tree);
call_dissector_only(protocol_handle, ccpri_tvb, pinfo, tree, NULL);
}
}
@ -1292,7 +1292,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, gint offset,
/* Call PDCP LTE dissector */
pdcp_lte_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
call_dissector_only(pdcp_lte_handle, pdcp_lte_tvb, pinfo, tree);
call_dissector_only(pdcp_lte_handle, pdcp_lte_tvb, pinfo, tree, NULL);
break;
@ -2085,7 +2085,7 @@ static void check_for_oob_mac_lte_events(packet_info *pinfo, tvbuff_t *tvb, prot
/* Call MAC dissector */
mac_lte_tvb = tvb_new_subset(tvb, 0, 0, 0);
call_dissector_only(mac_lte_handle, mac_lte_tvb, pinfo, tree);
call_dissector_only(mac_lte_handle, mac_lte_tvb, pinfo, tree, NULL);
}
@ -2865,7 +2865,7 @@ dissect_catapult_dct2000(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (protocol_handle != 0) {
/* Dissect the remainder of the frame using chosen protocol handle */
next_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
sub_dissector_result = call_dissector_only(protocol_handle, next_tvb, pinfo, tree);
sub_dissector_result = call_dissector_only(protocol_handle, next_tvb, pinfo, tree, NULL);
}

View File

@ -954,7 +954,7 @@ dissect_dtls_record(tvbuff_t *tvb, packet_info *pinfo,
ssl_debug_printf("dissect_dtls_record found association %p\n", (void *)association);
ssl_print_text_data("decrypted app data",appl_data->plain_data.data, appl_data->plain_data.data_len);
dissected = call_dissector_only(association->handle, next_tvb, pinfo, top_tree);
dissected = call_dissector_only(association->handle, next_tvb, pinfo, top_tree, NULL);
}
else {
/* try heuristic subdissectors */

View File

@ -1357,7 +1357,7 @@ dissect_gadu_gadu_userlist_xml_compressed(tvbuff_t *tvb, packet_info *pinfo, pro
add_new_data_source(pinfo, uncomp_tvb, "Uncompressed userlist");
/* XXX add DTD (pinfo->match_string) */
call_dissector_only(xml_handle, uncomp_tvb, pinfo, tree);
call_dissector_only(xml_handle, uncomp_tvb, pinfo, tree, NULL);
} else
proto_tree_add_text(tree, tvb, offset, remain, "Userlist XML data: [Error: Decompression failed] (or no libz)");
@ -1605,7 +1605,7 @@ dissect_gadu_gadu_xml_action(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
xml_tvb = tvb_new_subset_remaining(tvb, offset);
/* XXX add DTD (pinfo->match_string) */
ret = call_dissector_only(xml_handle, xml_tvb, pinfo, tree);
ret = call_dissector_only(xml_handle, xml_tvb, pinfo, tree, NULL);
return offset + ret;
}

View File

@ -1102,7 +1102,7 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
*/
if (conv_data->upgrade != NULL &&
g_ascii_strcasecmp(conv_data->upgrade, "WebSocket") == 0) {
call_dissector_only(websocket_handle, next_tvb, pinfo, tree);
call_dissector_only(websocket_handle, next_tvb, pinfo, tree, NULL);
goto body_dissected;
}
/*
@ -1293,7 +1293,7 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
/*
* We have a subdissector - call it.
*/
dissected = call_dissector_only(handle, next_tvb, pinfo, tree);
dissected = call_dissector_only(handle, next_tvb, pinfo, tree, NULL);
if (!dissected)
expert_add_info_format(pinfo, http_tree, PI_MALFORMED, PI_NOTE,
"HTTP body subdissector failed, trying heuristic subdissector");

View File

@ -2036,7 +2036,7 @@ static int dissect_media( const gchar* fullmediatype, tvbuff_t * tvb, packet_inf
if(0 == dissected) {
/* display it as raw data */
dissected = call_dissector_only(data_handle, tvb, pinfo, tree);
dissected = call_dissector_only(data_handle, tvb, pinfo, tree, NULL);
}
return dissected;

View File

@ -4616,7 +4616,7 @@ dissect_kerberos_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
if(krb4_handle){
gboolean res;
res=call_dissector_only(krb4_handle, tvb, pinfo, tree);
res=call_dissector_only(krb4_handle, tvb, pinfo, tree, NULL);
return res;
}else{
return 0;

View File

@ -88,7 +88,7 @@ static void dissect_mac_lte_framed(tvbuff_t *tvb, packet_info *pinfo,
/* Create tvb that starts at actual MAC PDU */
mac_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
call_dissector_only(mac_lte_handle, mac_tvb, pinfo, tree);
call_dissector_only(mac_lte_handle, mac_tvb, pinfo, tree, NULL);
}
void proto_register_mac_lte_framed(void)

View File

@ -1115,7 +1115,7 @@ static void call_with_catch_all(dissector_handle_t handle, tvbuff_t* tvb, packet
{
/* Call it (catch exceptions so that stats will be updated) */
TRY {
call_dissector_only(handle, tvb, pinfo, tree);
call_dissector_only(handle, tvb, pinfo, tree, NULL);
}
CATCH_ALL {
}
@ -1808,7 +1808,7 @@ static void dissect_pch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Call it (catch exceptions so that stats will be updated) */
TRY {
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree);
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree, NULL);
}
CATCH_ALL {
}
@ -1918,7 +1918,7 @@ static void call_rlc_dissector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
/* Call it (catch exceptions so that stats will be updated) */
TRY {
call_dissector_only(protocol_handle, srb_tvb, pinfo, tree);
call_dissector_only(protocol_handle, srb_tvb, pinfo, tree, NULL);
}
CATCH_ALL {
}

View File

@ -1048,7 +1048,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
/* We always want to see this in the info column */
col_set_writable(pinfo->cinfo, TRUE);
call_dissector_only(rrc_handle, payload_tvb, pinfo, pdcp_tree);
call_dissector_only(rrc_handle, payload_tvb, pinfo, pdcp_tree, NULL);
/* Restore to whatever it was */
col_set_writable(pinfo->cinfo, was_writable);
@ -1238,13 +1238,13 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
switch (tvb_get_guint8(tvb, offset) & 0xf0) {
case 0x40:
call_dissector_only(ip_handle, payload_tvb, pinfo, pdcp_tree);
call_dissector_only(ip_handle, payload_tvb, pinfo, pdcp_tree, NULL);
break;
case 0x60:
call_dissector_only(ipv6_handle, payload_tvb, pinfo, pdcp_tree);
call_dissector_only(ipv6_handle, payload_tvb, pinfo, pdcp_tree, NULL);
break;
default:
call_dissector_only(data_handle, payload_tvb, pinfo, pdcp_tree);
call_dissector_only(data_handle, payload_tvb, pinfo, pdcp_tree, NULL);
break;
}
@ -1269,7 +1269,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
tvb_length_remaining(tvb, offset),
tvb_length_remaining(tvb, offset));
call_dissector_only(rrc_handle, payload_tvb, pinfo, pdcp_tree);
call_dissector_only(rrc_handle, payload_tvb, pinfo, pdcp_tree, NULL);
}
else {
/* Just show data */

View File

@ -4557,7 +4557,7 @@ dissect_iphc_crtp_fh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (!dissector_try_uint(ppp_subdissector_table, PPP_IP, next_tvb, pinfo,
info_tree)) {
call_dissector_only(data_handle, next_tvb, pinfo, info_tree);
call_dissector_only(data_handle, next_tvb, pinfo, info_tree, NULL);
}
}

View File

@ -2505,7 +2505,7 @@ dissect_q931_user_user_ie(tvbuff_t *tvb, packet_info *pinfo, int offset, int len
next_tvb = tvb_new_subset(tvb, offset, len, len);
proto_tree_add_text(tree, tvb, offset, len, "User information: %d octets", len);
if (!dissector_try_heuristic(q931_user_heur_subdissector_list, next_tvb, pinfo, tree, NULL)) {
call_dissector_only(data_handle, next_tvb, pinfo, tree);
call_dissector_only(data_handle, next_tvb, pinfo, tree, NULL);
}
break;

View File

@ -332,7 +332,7 @@ dissect_reload_framing_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN, "Can not find reload dissector");
return tvb_length(tvb);
}
call_dissector_only(reload_handle, next_tvb, pinfo, tree);
call_dissector_only(reload_handle, next_tvb, pinfo, tree, NULL);
}
break;

View File

@ -3589,7 +3589,7 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
proto_tree_add_item(config_data_tree, hf_reload_length_uint24, tvb, offset+local_offset, 3, ENC_BIG_ENDIAN);
call_dissector_only(xml_handle,
tvb_new_subset(tvb, offset+local_offset+3, config_length, length-offset-local_offset-3),
pinfo, config_data_tree);
pinfo, config_data_tree, NULL);
}
}

View File

@ -788,7 +788,7 @@ static void show_PDU_in_tree(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb
protocol_handle = find_dissector("pdcp-lte");
TRY {
call_dissector_only(protocol_handle, pdcp_tvb, pinfo, tree);
call_dissector_only(protocol_handle, pdcp_tvb, pinfo, tree, NULL);
}
CATCH_ALL {
}
@ -1856,7 +1856,7 @@ static void dissect_rlc_lte_tm(tvbuff_t *tvb, packet_info *pinfo,
/* Call it (catch exceptions) */
TRY {
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree);
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree, NULL);
}
CATCH_ALL {
}

View File

@ -1744,7 +1744,7 @@ start_over:
}
/*proto_tree_add_text(rohc_tree, tvb, offset, -1, "Data");*/
payload_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_only(data_handle, payload_tvb, pinfo, rohc_tree);
call_dissector_only(data_handle, payload_tvb, pinfo, rohc_tree, NULL);
return;
}
if((oct&0xff) == 0xf8){
@ -1756,7 +1756,7 @@ start_over:
}
/*proto_tree_add_text(rohc_tree, tvb, offset, -1, "Data");*/
payload_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_only(data_handle, payload_tvb, pinfo, rohc_tree);
call_dissector_only(data_handle, payload_tvb, pinfo, rohc_tree, NULL);
return;
}

View File

@ -712,20 +712,20 @@ dissect_rtp_heur_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gbo
if (version == 0) {
if (!(tvb_memeql(tvb, 4, "ZRTP", 4)))
{
call_dissector_only(zrtp_handle, tvb, pinfo, tree);
call_dissector_only(zrtp_handle, tvb, pinfo, tree, NULL);
return TRUE;
} else {
switch (global_rtp_version0_type) {
case RTP0_CLASSICSTUN:
return call_dissector_only(classicstun_heur_handle, tvb, pinfo, tree);
return call_dissector_only(classicstun_heur_handle, tvb, pinfo, tree, NULL);
case RTP0_T38:
/* XXX: Should really be calling a heuristic dissector for T38 ??? */
call_dissector_only(t38_handle, tvb, pinfo, tree);
call_dissector_only(t38_handle, tvb, pinfo, tree, NULL);
return TRUE;
case RTP0_SPRT:
call_dissector_only(sprt_handle, tvb, pinfo, tree);
call_dissector_only(sprt_handle, tvb, pinfo, tree, NULL);
return TRUE;
case RTP0_INVALID:

View File

@ -370,7 +370,7 @@ dissect_stun_message_channel_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree
next_tvb = tvb_new_subset_remaining(tvb, CHANNEL_DATA_HDR_LEN);
if (!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)) {
call_dissector_only(data_handle, next_tvb, pinfo, tree);
call_dissector_only(data_handle, next_tvb, pinfo, tree, NULL);
}
return reported_length;
@ -931,7 +931,7 @@ case EVEN_PORT:
next_tvb = tvb_new_subset(tvb, offset, att_length, att_length);
if (!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, att_tree, NULL)) {
call_dissector_only(data_handle, next_tvb, pinfo, att_tree);
call_dissector_only(data_handle, next_tvb, pinfo, att_tree, NULL);
}
}

View File

@ -398,7 +398,7 @@ struct dissector_handle {
*/
static int
call_dissector_through_handle(dissector_handle_t handle, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree)
packet_info *pinfo, proto_tree *tree, void *data)
{
const char *saved_proto;
int ret;
@ -412,7 +412,7 @@ call_dissector_through_handle(dissector_handle_t handle, tvbuff_t *tvb,
if (handle->is_new) {
EP_CHECK_CANARY(("before calling handle->dissector.new for %s",handle->name));
ret = (*handle->dissector.new)(tvb, pinfo, tree, NULL);
ret = (*handle->dissector.new)(tvb, pinfo, tree, data);
EP_CHECK_CANARY(("after calling handle->dissector.new for %s",handle->name));
} else {
EP_CHECK_CANARY(("before calling handle->dissector.old for %s",handle->name));
@ -445,11 +445,11 @@ call_dissector_through_handle(dissector_handle_t handle, tvbuff_t *tvb,
static int
call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb,
packet_info *pinfo_arg, proto_tree *tree);
packet_info *pinfo_arg, proto_tree *tree, void *);
static int
call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb,
packet_info *pinfo_arg, proto_tree *tree, gboolean add_proto_name)
call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo_arg,
proto_tree *tree, gboolean add_proto_name, void *data)
{
packet_info *pinfo = pinfo_arg;
const char *saved_proto;
@ -502,12 +502,12 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb,
}
if (pinfo->flags.in_error_pkt) {
ret = call_dissector_work_error(handle, tvb, pinfo, tree);
ret = call_dissector_work_error(handle, tvb, pinfo, tree, data);
} else {
/*
* Just call the subdissector.
*/
ret = call_dissector_through_handle(handle, tvb, pinfo, tree);
ret = call_dissector_through_handle(handle, tvb, pinfo, tree, data);
}
if (ret == 0) {
/*
@ -527,7 +527,7 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb,
static int
call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb,
packet_info *pinfo_arg, proto_tree *tree)
packet_info *pinfo_arg, proto_tree *tree, void *data)
{
packet_info *pinfo = pinfo_arg;
const char *saved_proto;
@ -572,7 +572,7 @@ call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb,
/* Dissect the contained packet. */
TRY {
ret = call_dissector_through_handle(handle, tvb,pinfo, tree);
ret = call_dissector_through_handle(handle, tvb,pinfo, tree, data);
}
CATCH(BoundsError) {
/*
@ -926,7 +926,7 @@ dissector_try_uint_new(dissector_table_t sub_dissectors, const guint32 uint_val,
*/
saved_match_uint = pinfo->match_uint;
pinfo->match_uint = uint_val;
ret = call_dissector_work(handle, tvb, pinfo, tree, add_proto_name);
ret = call_dissector_work(handle, tvb, pinfo, tree, add_proto_name, NULL);
pinfo->match_uint = saved_match_uint;
/*
@ -1185,7 +1185,7 @@ dissector_try_string(dissector_table_t sub_dissectors, const gchar *string,
*/
saved_match_string = pinfo->match_string;
pinfo->match_string = string;
ret = call_dissector_work(handle, tvb, pinfo, tree, TRUE);
ret = call_dissector_work(handle, tvb, pinfo, tree, TRUE, NULL);
pinfo->match_string = saved_match_string;
/*
@ -2015,12 +2015,12 @@ new_register_dissector(const char *name, new_dissector_t dissector, const int pr
*/
int
call_dissector_only(dissector_handle_t handle, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree)
packet_info *pinfo, proto_tree *tree, void *data)
{
int ret;
g_assert(handle != NULL);
ret = call_dissector_work(handle, tvb, pinfo, tree, TRUE);
ret = call_dissector_work(handle, tvb, pinfo, tree, TRUE, data);
return ret;
}
@ -2033,7 +2033,7 @@ call_dissector(dissector_handle_t handle, tvbuff_t *tvb,
{
int ret;
ret = call_dissector_only(handle, tvb, pinfo, tree);
ret = call_dissector_only(handle, tvb, pinfo, tree, NULL);
if (ret == 0) {
/*
* The protocol was disabled, or the dissector rejected
@ -2041,7 +2041,7 @@ call_dissector(dissector_handle_t handle, tvbuff_t *tvb,
*/
g_assert(data_handle != NULL);
g_assert(data_handle->protocol != NULL);
call_dissector_work(data_handle, tvb, pinfo, tree, TRUE);
call_dissector_work(data_handle, tvb, pinfo, tree, TRUE, NULL);
return tvb_length(tvb);
}
return ret;
@ -2142,7 +2142,7 @@ call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
for(i = 0; i < num_of_postdissectors; i++) {
call_dissector_only((dissector_handle_t) g_ptr_array_index(post_dissectors,i),
tvb,pinfo,tree);
tvb,pinfo,tree, NULL);
}
}

View File

@ -383,7 +383,7 @@ extern int call_dissector(dissector_handle_t handle, tvbuff_t *tvb,
* it and return the length of the tvbuff pointed to by the argument.
*/
extern int call_dissector_only(dissector_handle_t handle, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree);
packet_info *pinfo, proto_tree *tree, void *data);
/* Do all one-time initialization. */
extern void dissect_init(void);