aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-teredo.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-teredo.c')
-rw-r--r--epan/dissectors/packet-teredo.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/epan/dissectors/packet-teredo.c b/epan/dissectors/packet-teredo.c
index a07117804b..9d4ef1837c 100644
--- a/epan/dissectors/packet-teredo.c
+++ b/epan/dissectors/packet-teredo.c
@@ -201,8 +201,8 @@ decode_teredo_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,proto_tree *tr
call_dissector(data_handle,next_tvb, pinfo, tree);
}
-static void
-dissect_teredo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_teredo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
proto_tree *teredo_tree;
proto_item *ti;
@@ -219,12 +219,8 @@ dissect_teredo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Teredo");
col_clear(pinfo->cinfo, COL_INFO);
- if (tree) {
- ti = proto_tree_add_item(tree, proto_teredo, tvb, 0, -1, ENC_NA);
- teredo_tree = proto_item_add_subtree(ti, ett_teredo);
- }
- else
- teredo_tree = NULL;
+ ti = proto_tree_add_item(tree, proto_teredo, tvb, 0, -1, ENC_NA);
+ teredo_tree = proto_item_add_subtree(ti, ett_teredo);
teredoh->th_header = tvb_get_ntohs(tvb, offset);
@@ -245,6 +241,7 @@ dissect_teredo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
decode_teredo_ports(tvb, offset, pinfo, tree, teredoh->th_header /* , teredoh->th_orgport*/);
tap_queue_packet(teredo_tap, pinfo, teredoh);
+ return tvb_captured_length(tvb);
}
@@ -308,7 +305,7 @@ dissect_teredo_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *d
if (tvb_reported_length_remaining(tvb, offset) != val)
return FALSE; /* length mismatch */
- dissect_teredo (tvb, pinfo, tree);
+ dissect_teredo (tvb, pinfo, tree, data);
return TRUE;
}
@@ -400,7 +397,7 @@ proto_reg_handoff_teredo(void)
{
dissector_handle_t teredo_handle;
- teredo_handle = create_dissector_handle(dissect_teredo, proto_teredo);
+ teredo_handle = new_create_dissector_handle(dissect_teredo, proto_teredo);
data_handle = find_dissector("ipv6");
teredo_tap = register_tap("teredo");