aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-lapdm.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-lapdm.c')
-rw-r--r--epan/dissectors/packet-lapdm.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/epan/dissectors/packet-lapdm.c b/epan/dissectors/packet-lapdm.c
index 8f81127fe7..fffe40d43c 100644
--- a/epan/dissectors/packet-lapdm.c
+++ b/epan/dissectors/packet-lapdm.c
@@ -216,8 +216,8 @@ lapdm_defragment_cleanup (void)
}
-static void
-dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
proto_tree *lapdm_tree, *addr_tree, *length_tree;
proto_item *lapdm_ti, *addr_ti, *length_ti;
@@ -230,7 +230,7 @@ dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Check that there's enough data */
if (tvb_captured_length(tvb) < LAPDM_HEADER_LEN)
- return;
+ return 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "LAPDm");
@@ -285,7 +285,7 @@ dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* No point in doing anything if no payload
*/
if( !MIN(len, available_length) )
- return;
+ return 2;
payload = tvb_new_subset(tvb, LAPDM_HEADER_LEN, MIN(len,available_length), len);
@@ -344,6 +344,7 @@ dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
payload, pinfo, tree))
call_dissector(data_handle,payload, pinfo, tree);
}
+ return tvb_captured_length(tvb);
}
void
@@ -489,7 +490,7 @@ proto_register_lapdm(void)
proto_register_field_array (proto_lapdm, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- register_dissector("lapdm", dissect_lapdm, proto_lapdm);
+ new_register_dissector("lapdm", dissect_lapdm, proto_lapdm);
lapdm_sapi_dissector_table = register_dissector_table("lapdm.sapi", "LAPDm SAPI", FT_UINT8, BASE_DEC, DISSECTOR_TABLE_NOT_ALLOW_DUPLICATE);