Wireshark  4.3.0
The Wireshark network protocol analyzer
packet-umts_fp.h
1 /* packet-umts_fp.h
2  *
3  * Martin Mathieson
4  * Wireshark - Network traffic analyzer
5  * By Gerald Combs <gerald@wireshark.org>
6  * Copyright 1998 Gerald Combs
7  *
8  * SPDX-License-Identifier: GPL-2.0-or-later
9  */
10 
11 
12 #include <glib.h>
13 
14 /* Channel types */
15 #define CHANNEL_UNKNOWN 0
16 #define CHANNEL_RACH_FDD 1
17 #define CHANNEL_RACH_TDD 2
18 #define CHANNEL_FACH_FDD 3
19 #define CHANNEL_FACH_TDD 4
20 #define CHANNEL_DSCH_FDD 5 /* DSCH Downlink Shared Channel */
21 #define CHANNEL_DSCH_TDD 6
22 #define CHANNEL_USCH_TDD_384 8
23 #define CHANNEL_USCH_TDD_128 24
24 #define CHANNEL_PCH 9
25 #define CHANNEL_CPCH 10
26 #define CHANNEL_BCH 11
27 #define CHANNEL_DCH 12 /* DCH Dedicated Transport Channel */
28 #define CHANNEL_HSDSCH 13 /* HS-DSCH - High Speed Downlink Shared Channel */
29 #define CHANNEL_IUR_CPCHF 14
30 #define CHANNEL_IUR_FACH 15
31 #define CHANNEL_IUR_DSCH 16
32 #define CHANNEL_EDCH 17 /* E-DCH Enhanced DCH */
33 #define CHANNEL_RACH_TDD_128 18
34 #define CHANNEL_HSDSCH_COMMON 19 /* HS-DSCH - High Speed Downlink Shared Channel */
35 #define CHANNEL_HSDSCH_COMMON_T3 20
36 #define CHANNEL_EDCH_COMMON 21
37 
38 
39 /* Constants */
40 #define MAX_FP_CHANS 64
41 #define MAX_EDCH_DDIS 16
42 #define MAX_NUM_HSDHSCH_MACDFLOW 8
43 #define FP_maxNrOfDCHs 128 /* From NBAP-Constants.asn */
44 
45 enum fp_interface_type
46 {
47  IuB_Interface,
48  IuR_Interface
49 };
50 
51 enum division_type
52 {
53  Division_FDD = 1,
54  Division_TDD_384 = 2,
55  Division_TDD_128 = 3,
56  Division_TDD_768 = 4
57 };
58 
59 enum fp_hsdsch_entity
60 {
61  entity_not_specified = 0,
62  hs = 1,
63  ehs = 2
64 };
65 
66 enum fp_link_type
67 {
68  FP_Link_Unknown,
69  FP_Link_ATM,
70  FP_Link_Ethernet
71 };
72 
73 enum fp_rlc_mode {
74  FP_RLC_MODE_UNKNOWN,
75  FP_RLC_TM,
76  FP_RLC_UM,
77  FP_RLC_AM
78 };
79 
80 
81 typedef struct
82 {
83  gint num_ul_chans;
84  gint ul_chan_tf_size[MAX_FP_CHANS];
85  gint ul_chan_num_tbs[MAX_FP_CHANS];
86  gint num_dl_chans;
87  gint dl_chan_tf_size[MAX_FP_CHANS];
88  gint dl_chan_num_tbs[MAX_FP_CHANS];
89 
91 
92 
93 /****************************************/
94 /* Channel Specific Information Structs */
95 
96 /****************/
97 /* FACH Structs */
98 
100 {
101  guint32 alloc_frame_number; /* Frame where C-RNTI was allocated */
102  guint32 urnti; /* The U-RNTI to which the C-RNTI was allocated*/
103  guint32 global_retrieval_count; /* How many times this alloc info was retrieved for FACH channels*/
105 
106 /* Used in the 'channel_specific_info' field for FACH channels */
108 {
109  /* Key: (guint32) C-RNTI */
110  /* Value: (fp_crnti_allocation_info_t) U-RNTI allocation info */
111  wmem_tree_t* crnti_to_urnti_map; /* Mapping between C-RNTIs and U-RNTIs using them in this FACH */
113 
114 
115 /****************/
116 /* RACH Structs */
117 
118 /* Used in the 'channel_specific_info' field for RACH channels */
120 {
121  /* Key: (guint32) C-RNTI */
122  /* Value: (fp_crnti_allocation_info_t) U-RNTI allocation info */
123  wmem_tree_t* crnti_to_urnti_map; /* Mapping between C-RNTIs and U-RNTIs using them in this RACH */
125 
126 
127 /****************/
128 /* PCH Structs */
129 
130 /* Information about the Paging Indication Bitmap seen in a specific PCH frame*/
132 {
133  guint32 frame_number;
134  guint8* paging_indications_bitmap;
136 
137 /* Used in the 'channel_specific_info' field for PCH channels */
138 typedef struct fp_pch_channel_info_t
139 {
140  /*Size of the Paging Indication field in this PCH*/
141  gint paging_indications;
142  /* Information from the previous frame in this field which contained the paging indication field*/
143  paging_indications_info_t* last_paging_indication_info;
145 
146 
147 /*****************/
148 /* E-DCH Structs */
149 
150 /* Used in the 'channel_specific_info' field for E-DCH channels */
152 {
153  gint no_ddi_entries;
154  guint8 edch_ddi[MAX_EDCH_DDIS];
155  guint edch_macd_pdu_size[MAX_EDCH_DDIS];
156  guint8 edch_lchId[MAX_EDCH_DDIS];
157  guint8 edch_type; /* 1 means T2 */
159 
160 
161 /*******************/
162 /* HS-DSCH Structs */
163 
164 /* Used in the 'channel_specific_info' field for HS-DSCH channels */
166 {
167  enum fp_hsdsch_entity hsdsch_entity;
168  guint8 common_macdflow_id;
169  guint8 hsdsch_macdflow_id;
170  guint hrnti; /*Used for tracking a HS-DSCH flow*/
172 
173 
174 /************************/
175 /* FP Conversation Data */
176 
177 typedef struct
178 {
179  enum fp_interface_type iface_type;
180  enum division_type division;
181  gint channel; /* see Channel types definitions above */
182  enum fp_rlc_mode rlc_mode;
183  guint32 dl_frame_number; /* the frame where this conversation is started from CRNC */
184  guint32 ul_frame_number; /* the frame where this conversation is started from Node B */
185  address crnc_address;
186  guint16 crnc_port;
187 
188  guint urnti; /* Identifies a single UE in the UTRAN. Used for tracking it's RLC session across different transport channels */
189  gint com_context_id; /* Identifies a single UE in all NBAP messages */
190  guint32 scrambling_code; /* Identifies a single UE's radio transmissions in the UTRAN */
191 
192  void* channel_specific_info; /* Extended channel info based on the channel type */
193 
194  /* DCH's in this flow */
195  gint num_dch_in_flow;
196  gint dch_ids_in_flow_list[FP_maxNrOfDCHs];
197  /* DCH type channel data */
198  fp_dch_channel_info_t fp_dch_channel_info[FP_maxNrOfDCHs];
199  guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
200 
201  gboolean reset_frag; /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
202  guint32 cfn;
203  guint32 cfn_index;
204 
206 
207 
208 /********************************/
209 /* FP Packet Data */
210 /* (attached to each FP packet) */
211 typedef struct fp_info
212 {
213  enum fp_interface_type iface_type;
214  enum division_type division;
215  guint8 release; /* e.g. 99, 4, 5, 6, 7 */
216  guint16 release_year; /* e.g. 2001 */
217  guint8 release_month; /* e.g. 12 for December */
218  gboolean is_uplink;
219  gint channel; /* see Channel types definitions above */
220  guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
221  gint num_chans;
222  gint chan_tf_size[MAX_FP_CHANS];
223  gint chan_num_tbs[MAX_FP_CHANS];
224 
225  gint no_ddi_entries;
226  guint8 edch_ddi[MAX_EDCH_DDIS];
227  guint edch_macd_pdu_size[MAX_EDCH_DDIS];
228 
229  guint edch_lchId[MAX_EDCH_DDIS]; /* Logical Channel Id for E-DCH*/
230 
231  guint8 edch_type; /* 1 means T2 */
232 
233  gint cur_tb; /* current transport block (required for dissecting of single TBs */
234  gint cur_chan; /* current channel, required to retrieve the correct channel configuration for UMTS MAC */
235  gint com_context_id; /* Identifies a single UE in the network */
236  guint16 srcport, destport;
237 
238  /* PCH Related data*/
239  gint paging_indications;
240  paging_indications_info_t* relevant_paging_indications; /* Info from previous frame */
241  /* Info from the current frame. Used to carry information from this frame to the conversation info */
242  paging_indications_info_t* current_paging_indications;
243 
244  /* HSDSCH Related data */
245  enum fp_hsdsch_entity hsdsch_entity;
246  gint hsdsch_macflowd_id;
247  gboolean hsdhsch_macfdlow_is_mux[MAX_NUM_HSDHSCH_MACDFLOW];
248  enum fp_rlc_mode hsdsch_rlc_mode;
249  enum fp_link_type link_type;
250  guint urnti; /*Used for tracking a "sequence" over different transport channels*/
251 
252  gboolean reset_frag; /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
253 } fp_info;
254 
255 void set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info);
256 
257 /*
258  * Editor modelines - https://www.wireshark.org/tools/modelines.html
259  *
260  * Local variables:
261  * c-basic-offset: 4
262  * tab-width: 8
263  * indent-tabs-mode: nil
264  * End:
265  *
266  * vi: set shiftwidth=4 tabstop=8 expandtab:
267  * :indentSize=4:tabSize=8:noTabs=true:
268  */
Definition: address.h:56
Definition: wmem_tree-int.h:48
Definition: conversation.h:220
Definition: packet-umts_fp.h:100
Definition: packet-umts_fp.h:82
Definition: packet-umts_fp.h:152
Definition: packet-umts_fp.h:108
Definition: packet-umts_fp.h:166
Definition: packet-umts_fp.h:212
Definition: packet-umts_fp.h:139
Definition: packet-umts_fp.h:120
Definition: packet-umts_fp.h:132
Definition: packet-umts_fp.h:178