dissect_dtpt_conversation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint offset = 0;
- guint rest_length;
/* First try to decode it as "normal" DTPT packets. */
offset = dissect_dtpt(tvb, pinfo, tree);
offset = dissect_dtpt_data(tvb, pinfo, tree);
}
- /* Handle the rest ... */
- rest_length = tvb_reported_length(tvb) - offset;
- if (rest_length > 0) {
- tvbuff_t *next_tvb;
+ /* Handle any remaining bytes ... */
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
/* ... as data. */
call_dissector(data_handle,
tvb_new_subset_remaining(tvb, offset), pinfo, tree);
- next_tvb = tvb_new_subset(tvb, offset, rest_length, rest_length);
}
return tvb_reported_length(tvb);
}
if (tree) {
dtpt_item = proto_tree_add_item(tree, proto_dtpt,
- tvb, 0, -1, FALSE);
+ tvb, 0, -1, ENC_NA);
if (dtpt_item)
dtpt_tree = proto_item_add_subtree(dtpt_item, ett_dtpt);
}
if (dtpt_blob_tree) {
proto_tree_add_uint(dtpt_blob_tree, hf_dtpt_blob_data_length,
tvb, offset+0, 4, blob_data_length);
- proto_tree_add_bytes(dtpt_blob_tree, hf_dtpt_blob_data,
- tvb, offset+4, blob_data_length,
- tvb_get_ptr(tvb, offset+4, blob_data_length));
+ proto_tree_add_item(dtpt_blob_tree, hf_dtpt_blob_data,
+ tvb, offset+4, blob_data_length, ENC_NA);
}
}
offset += 4+blob_data_length;
if (tree) {
dtpt_item = proto_tree_add_item(tree, proto_dtpt,
- tvb, 0, -1, FALSE);
+ tvb, 0, -1, ENC_NA);
if (dtpt_item)
dtpt_tree = proto_item_add_subtree(dtpt_item, ett_dtpt);
}
data_handle = find_dissector("data");
Initialized=TRUE;
} else {
- dissector_delete("tcp.port", ServerPort, dtpt_handle);
+ dissector_delete_uint("tcp.port", ServerPort, dtpt_handle);
}
/* set port for future deletes */
ServerPort=gbl_dtptServerPort;
- dissector_add("tcp.port", gbl_dtptServerPort, dtpt_handle);
+ dissector_add_uint("tcp.port", gbl_dtptServerPort, dtpt_handle);
}