From ce93b4d178ec8f8d47d2063387465dff1be822d7 Mon Sep 17 00:00:00 2001 From: Piotr Tulpan Date: Tue, 6 Jun 2017 16:26:02 +0200 Subject: packet-lapd.c: Replace heuristic UDP dissector with "deterministic" one with prefs. Remove the heuristic dissector that checks for arbitrary UDP ports in favor of adding a preference for the range of UDP ports that can be used for LAPD. Change-Id: Ib85fbee4a433727af24279fffb0cbf2c25f7d292 Reviewed-on: https://code.wireshark.org/review/21985 Petri-Dish: Michael Mann Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann --- epan/dissectors/packet-lapd.c | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) (limited to 'epan/dissectors/packet-lapd.c') diff --git a/epan/dissectors/packet-lapd.c b/epan/dissectors/packet-lapd.c index 5f91173504..b686daae68 100644 --- a/epan/dissectors/packet-lapd.c +++ b/epan/dissectors/packet-lapd.c @@ -569,28 +569,6 @@ dissect_lapd_full(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean call_data_dissector(next_tvb, pinfo, tree); } -static gboolean -dissect_udp_lapd(tvbuff_t *tvb, packet_info *pinfo _U_ , proto_tree *tree, void *data _U_) -{ - if (pinfo->srcport < 3001 || pinfo->srcport > 3015 - || pinfo->destport < 3001 || pinfo->destport > 3015 - || pinfo->destport != pinfo->srcport) - return FALSE; - - /* - * XXX - check for a valid LAPD address field. - */ - - /* - * OK, check whether the control field looks valid. - */ - if (!check_xdlc_control(tvb, 2, NULL, NULL, FALSE, FALSE)) - return FALSE; - - dissect_lapd(tvb, pinfo, tree, data); - return TRUE; -} - void proto_register_lapd(void) { @@ -748,10 +726,10 @@ proto_reg_handoff_lapd(void) dissector_add_uint("wtap_encap", WTAP_ENCAP_LINUX_LAPD, lapd_handle); dissector_add_uint("wtap_encap", WTAP_ENCAP_LAPD, lapd_handle); dissector_add_uint("l2tp.pw_type", L2TPv3_PROTOCOL_LAPD, lapd_handle); - heur_dissector_add("udp", dissect_udp_lapd, "LAPD over UDP", "lapd_udp", proto_lapd, HEURISTIC_ENABLE); dissector_add_for_decode_as("sctp.ppi", lapd_handle); dissector_add_for_decode_as("sctp.port", lapd_handle); + dissector_add_uint_range_with_preference("udp.port", "", lapd_handle); init = TRUE; } else { @@ -769,6 +747,7 @@ proto_reg_handoff_lapd(void) lapd_sctp_ppi = pref_lapd_sctp_ppi; if (lapd_sctp_ppi > 0) dissector_add_uint("sctp.ppi", lapd_sctp_ppi, lapd_handle); + } /* -- cgit v1.2.3