gsmtap: fix dissection of LAPD-in-E1-in-GSMTAP traces

When the ability to dispatch GSMTAP E1/T1 frames to the LAPD dissector
was merged in August 2020, a recent July 2020 change earlier has
restructured and renamed the lapd dissector.  So at the time the GSMTAP
support for LAPD was added, the dissector was no longer called 'lapd'
and hence it never worked.

commit 75c739e4b7
Author: Guy Harris <gharris@sonic.net>
Date:   Sat Jul 25 02:20:10 2020 -0700
ISDN, LAPD: clean up the way they connect to other dissectors.

commit 132d6ec70b
Author: Harald Welte <laforge@osmocom.org>
Date:   Thu Aug 20 19:11:58 2020 +0200

Let's fix this by properly dispatching the LAPD frames from GSMTAP.
This commit is contained in:
Harald Welte 2022-02-27 19:18:46 +01:00 committed by Guy Harris
parent 402bb0ee81
commit 2ca164446d
1 changed files with 8 additions and 2 deletions

View File

@ -1073,7 +1073,13 @@ dissect_gsmtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
switch (sub_type) {
case GSMTAP_E1T1_LAPD:
sub_handle = GSMTAP_SUB_LAPD;
break;
if (sub_handles[sub_handle]) {
struct isdn_phdr isdn;
isdn.uton = pinfo->p2p_dir == P2P_DIR_SENT ? 1 : 0;
isdn.channel = 0;
call_dissector_with_data(sub_handles[sub_handle], payload_tvb, pinfo, tree, &isdn);
}
return tvb_captured_length(tvb);
case GSMTAP_E1T1_FR:
sub_handle = GSMTAP_SUB_FR;
break;
@ -1214,7 +1220,7 @@ proto_reg_handoff_gsmtap(void)
sub_handles[GSMTAP_SUB_GMR1_LAPSAT] = find_dissector_add_dependency("lapsat", proto_gsmtap);
sub_handles[GSMTAP_SUB_GMR1_RACH] = find_dissector_add_dependency("gmr1_rach", proto_gsmtap);
sub_handles[GSMTAP_SUB_UMTS_RRC] = find_dissector_add_dependency("rrc", proto_gsmtap);
sub_handles[GSMTAP_SUB_LAPD] = find_dissector_add_dependency("lapd", proto_gsmtap);
sub_handles[GSMTAP_SUB_LAPD] = find_dissector_add_dependency("lapd-phdr", proto_gsmtap);
sub_handles[GSMTAP_SUB_FR] = find_dissector_add_dependency("fr", proto_gsmtap);
rrc_sub_handles[GSMTAP_RRC_SUB_DL_DCCH_Message] = find_dissector_add_dependency("rrc.dl.dcch", proto_gsmtap);