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