diff options
Diffstat (limited to 'epan/dissectors/packet-lapdm.c')
-rw-r--r-- | epan/dissectors/packet-lapdm.c | 11 |
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); |