gsmtap: Add support for E1/T1 traces
GSMTAP has recently gained support for wrapping E1/T1 protocol traces. This is very useful as contrary to pcap/wtap file based protocol traces, GSMTAP can be streamed in real-time. The GSMTAP pseudo-header encodes information such as * the E1/T1 timeslot number * the E1/T1 subeslot number (if I.460 is used) * the E1/T1 line/span number (somewhat awkwardly as 'antenna number') * the payload (LAPD, Frame Relay, TRAU, ...) In this first implementation in wireshark, only FR and LAPD sub-dissectors are added. The other payloads (TRAU) do not have any wireshark dissectors so far. Change-Id: Ib699e9231ef7b9e6c5053e6b920954b3e7b0a4a4 Reviewed-on: https://code.wireshark.org/review/38213 Reviewed-by: Vadim Yanitskiy <vyanitskiy@sysmocom.de> Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
4dac9c2c53
commit
132d6ec70b
|
@ -62,6 +62,7 @@ static int hf_gsmtap_channel_type = -1;
|
|||
static int hf_gsmtap_tetra_channel_type = -1;
|
||||
static int hf_gsmtap_gmr1_channel_type = -1;
|
||||
static int hf_gsmtap_rrc_sub_type = -1;
|
||||
static int hf_gsmtap_e1t1_sub_type = -1;
|
||||
static int hf_gsmtap_antenna = -1;
|
||||
|
||||
static int hf_sacch_l1h_power_lev = -1;
|
||||
|
@ -106,6 +107,8 @@ enum {
|
|||
/* LTE*/
|
||||
GSMTAP_SUB_LTE_RRC,
|
||||
GSMTAP_SUB_LTE_NAS,
|
||||
GSMTAP_SUB_LAPD,
|
||||
GSMTAP_SUB_FR,
|
||||
|
||||
GSMTAP_SUB_MAX
|
||||
};
|
||||
|
@ -434,6 +437,7 @@ static const value_string gsmtap_types[] = {
|
|||
{ GSMTAP_TYPE_OSMOCORE_LOG, "libosmocore logging" },
|
||||
{ GSMTAP_TYPE_QC_DIAG, "Qualcomm DIAG" },
|
||||
{ GSMTAP_TYPE_LTE_NAS, "LTE NAS" },
|
||||
{ GSMTAP_TYPE_E1T1, "E1/T1" },
|
||||
{ 0, NULL },
|
||||
};
|
||||
|
||||
|
@ -454,6 +458,15 @@ static const value_string gsmtap_um_voice_types[] = {
|
|||
{ 0, NULL },
|
||||
};
|
||||
|
||||
static const value_string gsmtap_um_e1t1_types[] = {
|
||||
{ GSMTAP_E1T1_LAPD, "LAPD" }, /* ISDN LAPD Q.921 */
|
||||
{ GSMTAP_E1T1_FR, "FR" }, /* Frame Relay */
|
||||
{ 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 */
|
||||
{ 0, NULL },
|
||||
};
|
||||
|
||||
/* dissect a SACCH L1 header which is included in the first 2 bytes
|
||||
* of every SACCH frame (according to TS 04.04) */
|
||||
static void
|
||||
|
@ -896,6 +909,9 @@ dissect_gsmtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
|
|||
else if (type == GSMTAP_TYPE_UMTS_RRC)
|
||||
proto_tree_add_item(gsmtap_tree, hf_gsmtap_rrc_sub_type,
|
||||
tvb, offset+12, 1, ENC_BIG_ENDIAN);
|
||||
else if (type == GSMTAP_TYPE_E1T1)
|
||||
proto_tree_add_item(gsmtap_tree, hf_gsmtap_e1t1_sub_type,
|
||||
tvb, offset+12, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(gsmtap_tree, hf_gsmtap_antenna,
|
||||
tvb, offset+13, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(gsmtap_tree, hf_gsmtap_subslot,
|
||||
|
@ -1050,6 +1066,19 @@ dissect_gsmtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case GSMTAP_TYPE_E1T1:
|
||||
switch (sub_type) {
|
||||
case GSMTAP_E1T1_LAPD:
|
||||
sub_handle = GSMTAP_SUB_LAPD;
|
||||
break;
|
||||
case GSMTAP_E1T1_FR:
|
||||
sub_handle = GSMTAP_SUB_FR;
|
||||
break;
|
||||
default:
|
||||
sub_handle = GSMTAP_SUB_DATA;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case GSMTAP_TYPE_UM_BURST:
|
||||
default:
|
||||
sub_handle = GSMTAP_SUB_DATA;
|
||||
|
@ -1116,6 +1145,8 @@ proto_register_gsmtap(void)
|
|||
FT_UINT8, BASE_DEC, VALS(gsmtap_gmr1_channels), 0, NULL, HFILL }},
|
||||
{ &hf_gsmtap_rrc_sub_type, { "Message Type", "gsmtap.rrc_sub_type",
|
||||
FT_UINT8, BASE_DEC, VALS(rrc_sub_types), 0, NULL, HFILL }},
|
||||
{ &hf_gsmtap_e1t1_sub_type, { "Channel Type", "gsmtap.e1t1_sub_type",
|
||||
FT_UINT8, BASE_DEC, VALS(gsmtap_um_e1t1_types), 0, NULL, HFILL }},
|
||||
{ &hf_gsmtap_antenna, { "Antenna Number", "gsmtap.antenna",
|
||||
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
|
||||
{ &hf_gsmtap_subslot, { "Sub-Slot", "gsmtap.sub_slot",
|
||||
|
@ -1179,6 +1210,8 @@ 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_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);
|
||||
rrc_sub_handles[GSMTAP_RRC_SUB_UL_DCCH_Message] = find_dissector_add_dependency("rrc.ul.dcch", proto_gsmtap);
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#define GSMTAP_TYPE_OSMOCORE_LOG 0x10 /* libosmocore logging */
|
||||
#define GSMTAP_TYPE_QC_DIAG 0x11 /* Qualcomm DIAG frame */
|
||||
#define GSMTAP_TYPE_LTE_NAS 0x12 /* LTE Non-Access Stratum */
|
||||
#define GSMTAP_TYPE_E1T1 0x13 /* E1/T1 line traces */
|
||||
|
||||
/* ====== DO NOT MAKE UNAPPROVED MODIFICATIONS HERE ===== */
|
||||
#define GSMTAP_BURST_UNKNOWN 0x00
|
||||
|
@ -122,6 +123,14 @@
|
|||
#define GSMTAP_GMR1_TCH6 0x14
|
||||
#define GSMTAP_GMR1_TCH9 0x18
|
||||
|
||||
/* ====== DO NOT MAKE UNAPPROVED MODIFICATIONS HERE ===== */
|
||||
/* sub-types for TYPE_E1T1 */
|
||||
#define GSMTAP_E1T1_LAPD 0x01 /* Q.921 LAPD */
|
||||
#define GSMTAP_E1T1_FR 0x02 /* Frame Relay */
|
||||
#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_ARFCN_F_PCS 0x8000
|
||||
#define GSMTAP_ARFCN_F_UPLINK 0x4000
|
||||
#define GSMTAP_ARFCN_MASK 0x3fff
|
||||
|
|
Loading…
Reference in New Issue