2018-03-14 15:31:41 +00:00
|
|
|
/* packet-rlc-nr.h
|
|
|
|
*
|
|
|
|
* Pascal Quantin
|
|
|
|
* Wireshark - Network traffic analyzer
|
|
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
|
|
* Copyright 1998 Gerald Combs
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef PACKET_RLC_NR_H
|
|
|
|
#define PACKET_RLC_NR_H
|
|
|
|
|
|
|
|
/* rlcMode */
|
|
|
|
#define RLC_TM_MODE 1
|
|
|
|
#define RLC_UM_MODE 2
|
|
|
|
#define RLC_AM_MODE 4
|
|
|
|
|
|
|
|
/* direction */
|
|
|
|
#define DIRECTION_UPLINK 0
|
|
|
|
#define DIRECTION_DOWNLINK 1
|
|
|
|
|
|
|
|
/* bearerType */
|
|
|
|
#define BEARER_TYPE_CCCH 1
|
|
|
|
#define BEARER_TYPE_BCCH_BCH 2
|
|
|
|
#define BEARER_TYPE_PCCH 3
|
|
|
|
#define BEARER_TYPE_SRB 4
|
|
|
|
#define BEARER_TYPE_DRB 5
|
|
|
|
#define BEARER_TYPE_BCCH_DL_SCH 6
|
|
|
|
|
|
|
|
/* sequenceNumberLength */
|
|
|
|
#define TM_SN_LENGTH_0_BITS 0
|
|
|
|
#define UM_SN_LENGTH_6_BITS 6
|
|
|
|
#define UM_SN_LENGTH_12_BITS 12
|
|
|
|
#define AM_SN_LENGTH_12_BITS 12
|
|
|
|
#define AM_SN_LENGTH_18_BITS 18
|
|
|
|
|
|
|
|
/* Info attached to each NR RLC frame */
|
|
|
|
typedef struct rlc_nr_info
|
|
|
|
{
|
|
|
|
guint8 rlcMode;
|
|
|
|
guint8 direction;
|
|
|
|
guint8 sequenceNumberLength;
|
2018-04-05 20:00:58 +00:00
|
|
|
guint8 bearerType;
|
|
|
|
guint8 bearerId;
|
2018-03-14 15:31:41 +00:00
|
|
|
guint16 ueid;
|
|
|
|
guint16 pduLength;
|
|
|
|
} rlc_nr_info;
|
|
|
|
|
2021-01-01 22:19:28 +00:00
|
|
|
typedef struct nr_drb_rlc_pdcp_mapping_t
|
|
|
|
{
|
2021-01-04 11:03:22 +00:00
|
|
|
gboolean active;
|
2021-01-01 22:19:28 +00:00
|
|
|
guint16 ueid; /* Mandatory */
|
|
|
|
guint8 drbid; /* Mandatory */
|
|
|
|
|
|
|
|
gboolean pdcpUlSnLength_present;
|
|
|
|
guint8 pdcpUlSnLength; /* Part of PDCP config - optional */
|
|
|
|
gboolean pdcpDlSnLength_present;
|
|
|
|
guint8 pdcpDlSnLength; /* Part of PDCP config - optional */
|
|
|
|
gboolean pdcpUlSdap;
|
|
|
|
gboolean pdcpDlSdap;
|
|
|
|
gboolean pdcpIntegrityProtection;
|
|
|
|
gboolean pdcpCipheringDisabled;
|
|
|
|
|
|
|
|
} nr_drb_rlc_pdcp_mapping_t;
|
|
|
|
|
2021-01-04 11:03:22 +00:00
|
|
|
/* TODO: could probably merge this struct with above */
|
|
|
|
typedef struct pdcp_ue_parameters {
|
|
|
|
guint32 id;
|
|
|
|
guint8 pdcp_sn_bits_ul;
|
|
|
|
guint8 pdcp_sn_bits_dl;
|
|
|
|
gboolean pdcp_sdap_ul;
|
|
|
|
gboolean pdcp_sdap_dl;
|
|
|
|
gboolean pdcp_integrity;
|
|
|
|
gboolean pdcp_ciphering_disabled;
|
|
|
|
} pdcp_bearer_parameters;
|
|
|
|
|
|
|
|
/* Configure DRB PDCP channel properties. */
|
|
|
|
void set_rlc_nr_drb_pdcp_mapping(packet_info *pinfo,
|
|
|
|
nr_drb_rlc_pdcp_mapping_t *drb_mapping);
|
|
|
|
|
|
|
|
pdcp_bearer_parameters* get_rlc_nr_drb_pdcp_mapping(guint16 ue_id, guint8 drb_id);
|
2019-05-01 01:05:01 +00:00
|
|
|
|
2018-03-14 15:31:41 +00:00
|
|
|
/*****************************************************************/
|
|
|
|
/* UDP framing format */
|
|
|
|
/* ----------------------- */
|
|
|
|
/* Several people have asked about dissecting RLC by framing */
|
|
|
|
/* PDUs over IP. A suggested format over UDP has been defined */
|
|
|
|
/* and implemented by this dissector, using the definitions */
|
|
|
|
/* below. */
|
|
|
|
/* */
|
|
|
|
/* A heuristic dissector (enabled by a preference) will */
|
|
|
|
/* recognise a signature at the beginning of these frames. */
|
|
|
|
/*****************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
/* Signature. Rather than try to define a port for this, or make the
|
|
|
|
port number a preference, frames will start with this string (with no
|
|
|
|
terminating NULL */
|
|
|
|
#define RLC_NR_START_STRING "rlc-nr"
|
|
|
|
|
|
|
|
/* Fixed field. This is followed by the following 2 mandatory field:
|
|
|
|
- rlcMode (1 byte)
|
|
|
|
- sequenceNumberLength (1 byte)
|
|
|
|
(where the allowed values are defined above) */
|
|
|
|
|
|
|
|
/* Optional fields. Attaching this info to frames will allow you
|
|
|
|
to show you display/filter/plot/add-custom-columns on these fields, so should
|
|
|
|
be added if available.
|
|
|
|
The format is to have the tag, followed by the value (there is no length field,
|
|
|
|
it's implicit from the tag) */
|
|
|
|
|
|
|
|
#define RLC_NR_DIRECTION_TAG 0x02
|
|
|
|
/* 1 byte */
|
|
|
|
|
|
|
|
#define RLC_NR_UEID_TAG 0x03
|
|
|
|
/* 2 bytes, network order */
|
|
|
|
|
|
|
|
#define RLC_NR_BEARER_TYPE_TAG 0x04
|
|
|
|
/* 1 byte */
|
|
|
|
|
|
|
|
#define RLC_NR_BEARER_ID_TAG 0x05
|
|
|
|
/* 1 byte */
|
|
|
|
|
|
|
|
/* RLC PDU. Following this tag comes the actual RLC PDU (there is no length, the PDU
|
|
|
|
continues until the end of the frame) */
|
|
|
|
#define RLC_NR_PAYLOAD_TAG 0x01
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
2019-07-26 18:43:17 +00:00
|
|
|
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
2018-03-14 15:31:41 +00:00
|
|
|
*
|
|
|
|
* Local variables:
|
|
|
|
* c-basic-offset: 4
|
|
|
|
* tab-width: 8
|
|
|
|
* indent-tabs-mode: nil
|
|
|
|
* End:
|
|
|
|
*
|
|
|
|
* vi: set shiftwidth=4 tabstop=8 expandtab:
|
|
|
|
* :indentSize=4:tabSize=8:noTabs=true:
|
|
|
|
*/
|