summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mac-nr.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/packet-mac-nr.h
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/packet-mac-nr.h')
-rw-r--r--epan/dissectors/packet-mac-nr.h153
1 files changed, 153 insertions, 0 deletions
diff --git a/epan/dissectors/packet-mac-nr.h b/epan/dissectors/packet-mac-nr.h
new file mode 100644
index 00000000..03baa8e1
--- /dev/null
+++ b/epan/dissectors/packet-mac-nr.h
@@ -0,0 +1,153 @@
+/* packet-mac-nr.h
+ *
+ * Martin Mathieson
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+/* radioType */
+#define FDD_RADIO 1
+#define TDD_RADIO 2
+
+/* Direction */
+#define DIRECTION_UPLINK 0
+#define DIRECTION_DOWNLINK 1
+
+/* rntiType */
+#define NO_RNTI 0
+#define P_RNTI 1
+#define RA_RNTI 2
+#define C_RNTI 3
+#define SI_RNTI 4
+#define CS_RNTI 5
+
+/* Context info attached to each NR MAC frame */
+typedef struct mac_nr_info
+{
+ /* Needed for decode */
+ guint8 radioType;
+ guint8 direction;
+ guint8 rntiType;
+
+ /* Extra info to display */
+ guint16 rnti;
+ guint16 ueid;
+ guint8 harqid;
+
+ /* Will these be included in the ME PHR report? */
+ guint8 phr_type2_othercell;
+
+ /* Timing info */
+ gboolean sfnSlotInfoPresent;
+ guint16 sysframeNumber;
+ guint16 slotNumber;
+
+ /* Length of DL PDU or UL grant size in bytes */
+ guint16 length;
+
+} mac_nr_info;
+
+
+/* Functions to be called from outside this module (e.g. in a plugin, where mac_nr_info
+ isn't available) to get/set per-packet data */
+WS_DLL_PUBLIC
+mac_nr_info *get_mac_nr_proto_data(packet_info *pinfo);
+WS_DLL_PUBLIC
+void set_mac_nr_proto_data(packet_info *pinfo, mac_nr_info *p_mac_nr_info);
+
+/*****************************************************************/
+/* UDP framing format */
+/* ----------------------- */
+/* Several people have asked about dissecting MAC by framing */
+/* PDUs over IP. A suggested format over UDP has been created */
+/* 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 MAC_NR_START_STRING "mac-nr"
+
+/* Fixed fields. This is followed by the following 3 mandatory fields:
+ - radioType (1 byte)
+ - direction (1 byte)
+ - rntiType (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 MAC_NR_RNTI_TAG 0x02
+/* 2 bytes, network order */
+
+#define MAC_NR_UEID_TAG 0x03
+/* 2 bytes, network order */
+
+#define MAC_NR_FRAME_SUBFRAME_TAG 0x04
+/* 2 bytes, deprecated, do not use it */
+
+#define MAC_NR_PHR_TYPE2_OTHERCELL_TAG 0x05
+/* 1 byte, TRUE/FALSE */
+
+#define MAC_NR_HARQID 0x06
+/* 1 byte */
+
+#define MAC_NR_FRAME_SLOT_TAG 0x07
+/* 4 bytes, network order, SFN is stored in the 2 first bytes and slot number in the 2 last bytes */
+
+/* MAC PDU. Following this tag comes the actual MAC PDU (there is no length, the PDU
+ continues until the end of the frame) */
+#define MAC_NR_PAYLOAD_TAG 0x01
+
+
+/* Type to store parameters for configuring LCID->RLC channel settings for DRB */
+/* Some are optional, and may not be seen (e.g. on reestablishment) */
+typedef struct nr_drb_mac_rlc_mapping_t
+{
+ gboolean active;
+ guint16 ueid; /* Mandatory */
+ guint8 drbid; /* Mandatory */
+
+ gboolean lcid_present;
+ guint8 lcid; /* Part of LogicalChannelConfig - optional */
+ gboolean rlcMode_present;
+ guint8 rlcMode; /* Part of RLC config - optional */
+
+ guint8 tempDirection; /* So know direction of next SN length... */
+
+ gboolean rlcUlSnLength_present;
+ guint8 rlcUlSnLength; /* Part of RLC config - optional */
+ gboolean rlcDlSnLength_present;
+ guint8 rlcDlSnLength; /* Part of RLC config - optional */
+} nr_drb_mac_rlc_mapping_t;
+
+
+/* Set details of an LCID -> drb channel mapping. To be called from
+ configuration protocol (i.e. RRC) */
+void set_mac_nr_bearer_mapping(nr_drb_mac_rlc_mapping_t *drb_mapping);
+
+
+/*
+ * Editor modelines - https://www.wireshark.org/tools/modelines.html
+ *
+ * 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:
+ */