diff options
Diffstat (limited to 'epan/dissectors/packet-dect-aastra.c')
-rw-r--r-- | epan/dissectors/packet-dect-aastra.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/epan/dissectors/packet-dect-aastra.c b/epan/dissectors/packet-dect-aastra.c index 974848f4e6..b126a92446 100644 --- a/epan/dissectors/packet-dect-aastra.c +++ b/epan/dissectors/packet-dect-aastra.c @@ -28,6 +28,7 @@ static gint hf_xdlc_subfield = -1; static gint ett_aamide = -1; static dissector_handle_t data_handle; +static dissector_handle_t dlc_handle; #define AAMIDE_ETH_T_XDLC 0xA000 #define AAMIDE_ETH_T_DOWNLOAD 0xA002 @@ -150,10 +151,14 @@ static int dissect_aamide_xdlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr col_append_fstr(pinfo->cinfo, COL_INFO, "MCEI=%02x ", mcei); proto_tree_add_item(tree, hf_xdlc_mcei, tvb, offset+4, 1, ENC_NA); break; + case AAMIDE_P_LC_DTR_IND: + mcei = tvb_get_guint8(tvb, offset+4); + col_append_fstr(pinfo->cinfo, COL_INFO, "MCEI=%02x ", mcei); + proto_tree_add_item(tree, hf_xdlc_mcei, tvb, offset+4, 1, ENC_NA); + proto_tree_add_item(tree, hf_xdlc_subfield, tvb, offset+5, 1, ENC_NA); + break; case AAMIDE_P_LC_DATA_REQ: case AAMIDE_P_LC_DATA_IND: - case AAMIDE_P_LC_DTR_IND: - default: mcei = tvb_get_guint8(tvb, offset+4); col_append_fstr(pinfo->cinfo, COL_INFO, "MCEI=%02x ", mcei); proto_tree_add_item(tree, hf_xdlc_mcei, tvb, offset+4, 1, ENC_NA); @@ -161,6 +166,11 @@ static int dissect_aamide_xdlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr payload_len = tvb_get_guint8(tvb, offset+6); payload_len = tvb_get_guint8(tvb, offset+6); payload_tvb = tvb_new_subset_length(tvb, offset+7, payload_len); + if (payload_tvb) + call_dissector(dlc_handle, payload_tvb, pinfo, tree); + payload_tvb = NULL; + break; + default: break; } @@ -225,6 +235,7 @@ void proto_reg_handoff_dect_aastra(void) dissector_add_uint("ethertype", AAMIDE_ETH_T_XDLC, xdlc_handle); data_handle = find_dissector("data"); + dlc_handle = find_dissector("dect_dlc"); } /* |