From 3311b341064403b9098d0db51d2732a271ffbbeb Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 2 Dec 2022 16:49:20 +0100 Subject: [PATCH] gsmtap: Support V5-in-GSMTAP GSMTAP has had support for various other ISDN related protocols as sub-types of the GSMTAP_TYPE_E1T1 type. We've recently started to work on V5 (ITU-T G.964/G.965) and introduced a new sub-type for this. Let's add the related dispatch from packet-gsmtap.c to packet-v5ef.c --- epan/dissectors/packet-gsmtap.c | 12 ++++++++++++ epan/dissectors/packet-gsmtap.h | 1 + 2 files changed, 13 insertions(+) diff --git a/epan/dissectors/packet-gsmtap.c b/epan/dissectors/packet-gsmtap.c index ea1aa47cc5..8df252ccfc 100644 --- a/epan/dissectors/packet-gsmtap.c +++ b/epan/dissectors/packet-gsmtap.c @@ -110,6 +110,7 @@ enum { GSMTAP_SUB_LTE_NAS, GSMTAP_SUB_LAPD, GSMTAP_SUB_FR, + GSMTAP_SUB_V5EF, GSMTAP_SUB_MAX }; @@ -465,6 +466,7 @@ static const value_string gsmtap_um_e1t1_types[] = { { GSMTAP_E1T1_RAW, "RAW" }, /* RAW/transparent B-channels */ { GSMTAP_E1T1_TRAU16, "TRAU 16k" }, /* 16k/s sub-channels (I.460) with GSM TRAU frames */ { GSMTAP_E1T1_TRAU8, "TRAU 8k" }, /* 8k/s sub-channels (I.460) with GSM TRAU frames */ + { GSMTAP_E1T1_V5EF, "V5-EF" }, /* V5 Envelope Function */ { 0, NULL }, }; @@ -1083,6 +1085,15 @@ dissect_gsmtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _ case GSMTAP_E1T1_FR: sub_handle = GSMTAP_SUB_FR; break; + case GSMTAP_E1T1_V5EF: + sub_handle = GSMTAP_SUB_V5EF; + 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); default: sub_handle = GSMTAP_SUB_DATA; break; @@ -1222,6 +1233,7 @@ proto_reg_handoff_gsmtap(void) sub_handles[GSMTAP_SUB_UMTS_RRC] = find_dissector_add_dependency("rrc", 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); + sub_handles[GSMTAP_SUB_V5EF] = find_dissector_add_dependency("v5ef", proto_gsmtap); rrc_sub_handles[GSMTAP_RRC_SUB_DL_DCCH_Message] = find_dissector_add_dependency("rrc.dl.dcch", proto_gsmtap); rrc_sub_handles[GSMTAP_RRC_SUB_UL_DCCH_Message] = find_dissector_add_dependency("rrc.ul.dcch", proto_gsmtap); diff --git a/epan/dissectors/packet-gsmtap.h b/epan/dissectors/packet-gsmtap.h index c097d114ee..d286b19a1a 100644 --- a/epan/dissectors/packet-gsmtap.h +++ b/epan/dissectors/packet-gsmtap.h @@ -130,6 +130,7 @@ #define GSMTAP_E1T1_RAW 0x03 /* raw/transparent B-channel */ #define GSMTAP_E1T1_TRAU16 0x04 /* 16k TRAU frames; sub-slot 0-3 */ #define GSMTAP_E1T1_TRAU8 0x05 /* 8k TRAU frames; sub-slot 0-7 */ +#define GSMTAP_E1T1_V5EF 0x06 /* V5 Envelope Function */ #define GSMTAP_ARFCN_F_PCS 0x8000 #define GSMTAP_ARFCN_F_UPLINK 0x4000