aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-bt-utp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-02-05 13:51:50 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-02-05 13:51:50 +0000
commitd226f4de96d6331d09380f9c3884e444bd199093 (patch)
tree06d2bb70291ec1ce980d704d39440e52bff3280d /epan/dissectors/packet-bt-utp.c
parent6893eac318341bfe16451bde821e4ff97c9fc58f (diff)
From Xiao Xiangquan:
bt-dht and bt-utp should also be common dissectors while not only heuristic ones. So we can use them with "Decode As..." command. Applying the missing part as this seems to be an owerlapping patch. svn path=/trunk/; revision=40868
Diffstat (limited to 'epan/dissectors/packet-bt-utp.c')
-rw-r--r--epan/dissectors/packet-bt-utp.c70
1 files changed, 33 insertions, 37 deletions
diff --git a/epan/dissectors/packet-bt-utp.c b/epan/dissectors/packet-bt-utp.c
index 58318d3827..078a56ee69 100644
--- a/epan/dissectors/packet-bt-utp.c
+++ b/epan/dissectors/packet-bt-utp.c
@@ -335,50 +335,43 @@ dissect_utp_extension(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree, in
static int
dissect_bt_utp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *sub_tree = NULL;
- int decoded_length = 0;
- guint8 extension_type;
+ conversation_t *conversation;
- /* set the protocol column */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "BT-uTP");
- /* set the info column */
- col_set_str( pinfo->cinfo, COL_INFO, "uTorrent Transport Protocol" );
-
- if(tree)
+ /* try dissecting */
+ if( tvb_get_guint8(tvb,0)=='d' )
{
- proto_item *ti;
- ti = proto_tree_add_item(tree, proto_bt_utp, tvb, 0, -1, ENC_NA);
- sub_tree = proto_item_add_subtree(ti, ett_bt_utp);
- }
+ proto_tree *sub_tree = NULL;
+ int decoded_length = 0;
+ guint8 extension_type;
+
+ conversation = find_or_create_conversation(pinfo);
+ conversation_set_dissector(conversation, bt_utp_handle);
+
+ /* set the protocol column */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "BT-uTP");
+ /* set the info column */
+ col_set_str( pinfo->cinfo, COL_INFO, "uTorrent Transport Protocol" );
+
+ if(tree)
+ {
+ proto_item *ti;
+ ti = proto_tree_add_item(tree, proto_bt_utp, tvb, 0, -1, ENC_NA);
+ sub_tree = proto_item_add_subtree(ti, ett_bt_utp);
+ }
- /* Determine header version */
+ /* Determine header version */
- if (!utp_is_v1(tvb)) {
+ if (!utp_is_v1(tvb)) {
decoded_length = dissect_utp_header_v0(tvb, pinfo, sub_tree, decoded_length, &extension_type);
- } else {
+ } else {
decoded_length = dissect_utp_header_v1(tvb, pinfo, sub_tree, decoded_length, &extension_type);
- }
-
- decoded_length = dissect_utp_extension(tvb, pinfo, sub_tree, decoded_length, &extension_type);
-
- return decoded_length;
-}
-
-static gboolean test_bt_utp_packet (tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree)
-{
- conversation_t *conversation;
+ }
- /* try dissecting */
- if( tvb_get_guint8(tvb,0)=='d' )
- {
- conversation = find_or_create_conversation(pinfo);
- conversation_set_dissector(conversation, bt_utp_handle);
+ decoded_length = dissect_utp_extension(tvb, pinfo, sub_tree, decoded_length, &extension_type);
- dissect_bt_utp(tvb, pinfo, tree);
- return TRUE;
- }
- return FALSE;
+ return decoded_length;
+ }
+ return 0;
}
void
@@ -489,7 +482,10 @@ proto_register_bt_utp(void)
void
proto_reg_handoff_bt_utp(void)
{
- heur_dissector_add("udp", test_bt_utp_packet, proto_bt_utp);
+ heur_dissector_add("udp", dissect_bt_utp, proto_bt_utp);
+
+ bt_utp_handle = new_create_dissector_handle(dissect_bt_utp, proto_bt_utp);
+ dissector_add_handle("udp.port", bt_utp_handle);
}
/*
* Editor modelines