Wireshark 2.9.0-477-g68ec514b The Wireshark network protocol analyzer

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

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
90 } fp_dch_channel_info_t;
91
92
93 /****************************************/
94 /* Channel Specific Information Structs */
95
96 /****************/
97 /* FACH Structs */
98
99 typedef struct fp_crnti_allocation_info_t
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*/
104 } fp_crnti_allocation_info_t;
105
106 /* Used in the 'channel_specific_info' field for FACH channels */
107 typedef struct fp_fach_channel_info_t
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 */
112 } fp_fach_channel_info_t;
113
114
115 /****************/
116 /* RACH Structs */
117
118 /* Used in the 'channel_specific_info' field for RACH channels */
119 typedef struct fp_rach_channel_info_t
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 */
124 } fp_rach_channel_info_t;
125
126
127 /****************/
128 /* PCH Structs */
129
130 /* Information about the Paging Indication Bitmap seen in a specific PCH frame*/
131 typedef struct paging_indications_info_t
132 {
133 guint32 frame_number;
134 guint8* paging_indications_bitmap;
135 } paging_indications_info_t;
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;
144 } fp_pch_channel_info_t;
145
146
147 /*****************/
148 /* E-DCH Structs */
149
150 /* Used in the 'channel_specific_info' field for E-DCH channels */
151 typedef struct fp_edch_channel_info_t
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 */
158 } fp_edch_channel_info_t;
159
160
161 /*******************/
162 /* HS-DSCH Structs */
163
164 /* Used in the 'channel_specific_info' field for HS-DSCH channels */
165 typedef struct fp_hsdsch_channel_info_t
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*/
171 } fp_hsdsch_channel_info_t;
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
205 } umts_fp_conversation_info_t;
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 converstaion 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_link_type link_type;
249 guint urnti; /*Used for tracking a "sequence" over diffrent transport channels*/
250
251 gboolean reset_frag; /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
252 } fp_info;
253
254 void set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info);
255
256 /*
257 * Editor modelines - http://www.wireshark.org/tools/modelines.html
258 *
259 * Local variables:
260 * c-basic-offset: 4
261 * tab-width: 8
262 * indent-tabs-mode: nil
263 * End:
264 *
265 * vi: set shiftwidth=4 tabstop=8 expandtab:
266 * :indentSize=4:tabSize=8:noTabs=true:
267 */
_wmem_tree_t
Definition: wmem_tree-int.h:47
fp_crnti_allocation_info_t
Definition: packet-umts_fp.h:99
fp_pch_channel_info_t
Definition: packet-umts_fp.h:138
paging_indications_info_t
Definition: packet-umts_fp.h:131
fp_dch_channel_info_t
Definition: packet-umts_fp.h:81
conversation
Definition: conversation.h:89
fp_rach_channel_info_t
Definition: packet-umts_fp.h:119
fp_hsdsch_channel_info_t
Definition: packet-umts_fp.h:165
umts_fp_conversation_info_t
Definition: packet-umts_fp.h:177
fp_edch_channel_info_t
Definition: packet-umts_fp.h:151
fp_fach_channel_info_t
Definition: packet-umts_fp.h:107
fp_info
Definition: packet-umts_fp.h:211
_address
Definition: address.h:47