| Wireshark 4.7.3 The Wireshark network protocol analyzer

Loading...
Searching...
No Matches
packet-gsm_a_common.h
1/* packet-gsm_a_common.h
2 *
3 * Reference [3]
4 * Mobile radio interface Layer 3 specification;
5 * Core network protocols;
6 * Stage 3
7 * (3GPP TS 24.008 version 4.7.0 Release 4)
8 * (ETSI TS 124 008 V6.8.0 (2005-03))
9 *
10 * Reference [5]
11 * Point-to-Point (PP) Short Message Service (SMS)
12 * support on mobile radio interface
13 * (3GPP TS 24.011 version 4.1.1 Release 4)
14 *
15 * Reference [7]
16 * Mobile radio interface Layer 3 specification;
17 * Core network protocols;
18 * Stage 3
19 * (3GPP TS 24.008 version 5.9.0 Release 5)
20 *
21 * Reference [8]
22 * Mobile radio interface Layer 3 specification;
23 * Core network protocols;
24 * Stage 3
25 * (3GPP TS 24.008 version 6.7.0 Release 6)
26 * (3GPP TS 24.008 version 6.8.0 Release 6)
27 *
28 * Reference [9]
29 * Digital cellular telecommunications system (Phase 2+);
30 * Group Call Control (GCC) protocol
31 * (GSM 04.68 version 8.1.0 Release 1999)
32 *
33 * Reference [10]
34 * Digital cellular telecommunications system (Phase 2+);
35 * Broadcast Call Control (BCC) protocol
36 * (3GPP TS 44.069 version 11.0.0 Release 11)
37 *
38 * Reference [11]
39 * Mobile radio interface Layer 3 specification;
40 * Core network protocols;
41 * Stage 3
42 * (3GPP TS 24.008 version 13.7.0 Release 13)
43 *
44 * Reference [12]
45 * Mobile radio interface Layer 3 specification;
46 * Core network protocols;
47 * Stage 3
48 * (3GPP TS 24.008 version 14.4.0 Release 14)
49 *
50 * Reference [13]
51 * Mobile radio interface Layer 3 specification;
52 * Core network protocols;
53 * Stage 3
54 * (3GPP TS 24.008 version 15.1.0 Release 15)
55 *
56 * Copyright 2003, Michael Lum <mlum [AT] telostech.com>,
57 * In association with Telos Technology Inc.
58 *
59 * Added Dissection of Group Call Control (GCC) protocol.
60 * Added Dissection of Broadcast Call Control (BCC) protocol.
61 * Copyright 2015, Michail Koreshkov <michail.koreshkov [at] zte.com.cn
62 *
63 * Wireshark - Network traffic analyzer
64 * By Gerald Combs <gerald@wireshark.org>
65 * Copyright 1998 Gerald Combs
66 *
67 * SPDX-License-Identifier: GPL-2.0-or-later
68 */
69#ifndef __PACKET_GSM_A_COMMON_H__
70#define __PACKET_GSM_A_COMMON_H__
71
72#include <epan/proto.h>
73
74#include "packet-sccp.h"
75#include "packet-e212.h"
76#include "ws_symbol_export.h"
77
78/* PROTOTYPES/FORWARDS */
79 typedef uint16_t (*elem_fcn)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
80 typedef void (*msg_fcn)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
81
82/* globals needed as a result of splitting the packet-gsm_a.c into several files
83 * until further restructuring can take place to make them more modular
84 */
85
86/* common PD values */
87 extern const value_string protocol_discriminator_vals[];
88 extern const value_string gsm_a_pd_short_str_vals[];
89
90 extern uint16_t de_cld_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
91 extern uint16_t de_clg_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
92
93/* Needed to share the packet-gsm_a_common.c functions */
94 extern value_string_ext gsm_bssmap_elem_strings_ext;
95 extern int ett_gsm_bssmap_elem[];
96 extern const elem_fcn bssmap_elem_fcn[];
97 extern int hf_gsm_a_bssmap_elem_id;
98
99 extern value_string_ext gsm_dtap_elem_strings_ext;
100 extern int ett_gsm_dtap_elem[];
101 extern const elem_fcn dtap_elem_fcn[];
102 extern int hf_gsm_a_dtap_elem_id;
103
104 extern value_string_ext gsm_rp_elem_strings_ext;
105 extern int ett_gsm_rp_elem[];
106 extern const elem_fcn rp_elem_fcn[];
107 extern int hf_gsm_a_rp_elem_id;
108
109 extern value_string_ext gsm_rr_elem_strings_ext;
110 extern int ett_gsm_rr_elem[];
111 extern const elem_fcn rr_elem_fcn[];
112 extern int hf_gsm_a_rr_elem_id;
113 extern void get_rr_msg_params(uint8_t oct, const char **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
114
115 extern value_string_ext gsm_common_elem_strings_ext;
116 extern int ett_gsm_common_elem[];
117 extern const elem_fcn common_elem_fcn[];
118 extern int hf_gsm_a_common_elem_id;
119
120 extern value_string_ext gsm_gm_elem_strings_ext;
121 extern int ett_gsm_gm_elem[];
122 extern const elem_fcn gm_elem_fcn[];
123 extern int hf_gsm_a_gm_elem_id;
124 extern void get_gmm_msg_params(uint8_t oct, const char **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
125 extern void get_sm_msg_params(uint8_t oct, const char **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
126
127 extern value_string_ext gsm_bsslap_elem_strings_ext;
128 extern int ett_gsm_bsslap_elem[];
129 extern const elem_fcn bsslap_elem_fcn[];
130 extern int hf_gsm_a_bsslap_elem_id;
131
132 extern value_string_ext gsm_bssmap_le_elem_strings_ext;
133 extern int ett_gsm_bssmap_le_elem[];
134 extern const elem_fcn bssmap_le_elem_fcn[];
135 extern int hf_gsm_bssmap_le_elem_id;
136
137 extern value_string_ext nas_eps_common_elem_strings_ext;
138 extern int ett_nas_eps_common_elem[];
139 extern const elem_fcn nas_eps_common_elem_fcn[];
140 extern int hf_nas_eps_common_elem_id;
141
142 extern value_string_ext nas_emm_elem_strings_ext;
143 extern int ett_nas_eps_emm_elem[];
144 extern const elem_fcn emm_elem_fcn[];
145 extern int hf_nas_eps_emm_elem_id;
146
147 extern value_string_ext nas_esm_elem_strings_ext;
148 extern int ett_nas_eps_esm_elem[];
149 extern const elem_fcn esm_elem_fcn[];
150 extern int hf_nas_eps_esm_elem_id;
151
152 extern value_string_ext sgsap_elem_strings_ext;
153 extern int ett_sgsap_elem[];
154 extern const elem_fcn sgsap_elem_fcn[];
155 extern int hf_sgsap_elem_id;
156
157 extern value_string_ext bssgp_elem_strings_ext;
158 extern int ett_bssgp_elem[];
159 extern const elem_fcn bssgp_elem_fcn[];
160 extern int hf_bssgp_elem_id;
161
162 extern value_string_ext gmr1_ie_common_strings_ext;
163 extern const elem_fcn gmr1_ie_common_func[];
164 extern int ett_gmr1_ie_common[];
165
166 extern value_string_ext gmr1_ie_rr_strings_ext;
167 extern const elem_fcn gmr1_ie_rr_func[];
168 extern int ett_gmr1_ie_rr[];
169
170 extern value_string_ext nas_5gs_common_elem_strings_ext;
171 extern int ett_nas_5gs_common_elem[];
172 extern const elem_fcn nas_5gs_common_elem_fcn[];
173 extern int hf_nas_5gs_common_elem_id;
174
175 extern value_string_ext nas_5gs_mm_elem_strings_ext;
176 extern int ett_nas_5gs_mm_elem[];
177 extern const elem_fcn nas_5gs_mm_elem_fcn[];
178 extern int hf_nas_5gs_mm_elem_id;
179
180 extern value_string_ext nas_5gs_sm_elem_strings_ext;
181 extern int ett_nas_5gs_sm_elem[];
182 extern const elem_fcn nas_5gs_sm_elem_fcn[];
183 extern int hf_nas_5gs_sm_elem_id;
184
185 extern value_string_ext nas_5gs_updp_elem_strings_ext;
186 extern int ett_nas_5gs_updp_elem[];
187 extern const elem_fcn nas_5gs_updp_elem_fcn[];
188 extern int hf_nas_5gs_updp_elem_id;
189
190 extern sccp_assoc_info_t* sccp_assoc;
191
192 extern int gsm_a_tap;
193 extern packet_info *gsm_a_dtap_pinfo;
194
195/* TS 23 032 */
196 int dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
197uint16_t dissect_description_of_velocity(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
198
199
200/* common field values */
201 extern int hf_gsm_a_extension;
202 extern int hf_gsm_a_tmsi;
203 extern int hf_gsm_a_L3_protocol_discriminator;
204 extern int hf_gsm_a_call_prio;
205 extern int hf_gsm_a_b8spare;
206 extern int hf_gsm_a_skip_ind;
207 extern int hf_gsm_a_rr_chnl_needed_ch1;
208 extern int hf_gsm_a_rr_t3212;
209 extern int hf_gsm_a_gm_rac;
210 extern int hf_gsm_a_spare_bits;
211 extern int hf_gsm_a_lac;
212
213/* Inter protocol filters*/
214 extern int hf_3gpp_tmsi;
215
216/* flags for the packet-gsm_a_common routines */
217#define GSM_A_PDU_TYPE_BSSMAP 0 /* BSSAP_PDU_TYPE_BSSMAP i.e. 0 - until split complete at least! */
218#define GSM_A_PDU_TYPE_DTAP 1 /* BSSAP_PDU_TYPE_DTAP i.e. 1 - until split complete at least! */
219#define GSM_A_PDU_TYPE_RP 2
220#define GSM_A_PDU_TYPE_RR 3
221#define GSM_A_PDU_TYPE_COMMON 4
222#define GSM_A_PDU_TYPE_GM 5
223#define GSM_A_PDU_TYPE_BSSLAP 6
224#define GSM_A_PDU_TYPE_SACCH 7
225#define GSM_PDU_TYPE_BSSMAP_LE 8
226#define NAS_PDU_TYPE_COMMON 9
227#define NAS_PDU_TYPE_EMM 10
228#define NAS_PDU_TYPE_ESM 11
229#define SGSAP_PDU_TYPE 12
230#define BSSGP_PDU_TYPE 13
231#define GMR1_IE_COMMON 14
232#define GMR1_IE_RR 15
233#define NAS_5GS_PDU_TYPE_COMMON 16
234#define NAS_5GS_PDU_TYPE_MM 17
235#define NAS_5GS_PDU_TYPE_SM 18
236#define NAS_5GS_PDU_TYPE_UPDP 19
237
238 extern const char* get_gsm_a_msg_string(wmem_allocator_t* pool, int pdu_type, int idx);
239
240/*
241 * this should be set on a per message basis, if possible
242 */
243#define IS_UPLINK_FALSE 0
244#define IS_UPLINK_TRUE 1
245#define IS_UPLINK_UNKNOWN 2
246
247/* Defines for handling half octet mandatory V IEs
248 * Named LEFT and RIGHT (as displayed) because the GSM definitions and our internal representation
249 * have the bits numbered in opposite senses
250 */
251#define LEFT_NIBBLE (2)
252#define RIGHT_NIBBLE (1)
253
254/* FUNCTIONS */
255
256/* ELEMENT FUNCTIONS */
257#define EXTRANEOUS_DATA_CHECK(edc_len, edc_max_len, pinfo, ei) \
258 if ((edc_len) > (edc_max_len)) \
259 { \
260 proto_tree_add_expert(tree, pinfo, ei, tvb, curr_offset, (edc_len) - (edc_max_len)); \
261 curr_offset += ((edc_len) - (edc_max_len)); \
262 }
263
264#define NO_MORE_DATA_CHECK(nmdc_len) \
265 if ((nmdc_len) <= (curr_offset - offset)) return(nmdc_len);
266
267#define SET_ELEM_VARS(SEV_pdu_type, SEV_elem_names_ext, SEV_elem_ett, SEV_elem_funcs, ei_unknown) \
268 switch (SEV_pdu_type) \
269 { \
270 case GSM_A_PDU_TYPE_BSSMAP: \
271 SEV_elem_names_ext = gsm_bssmap_elem_strings_ext; \
272 SEV_elem_ett = ett_gsm_bssmap_elem; \
273 SEV_elem_funcs = bssmap_elem_fcn; \
274 break; \
275 case GSM_A_PDU_TYPE_DTAP: \
276 SEV_elem_names_ext = gsm_dtap_elem_strings_ext; \
277 SEV_elem_ett = ett_gsm_dtap_elem; \
278 SEV_elem_funcs = dtap_elem_fcn; \
279 break; \
280 case GSM_A_PDU_TYPE_RP: \
281 SEV_elem_names_ext = gsm_rp_elem_strings_ext; \
282 SEV_elem_ett = ett_gsm_rp_elem; \
283 SEV_elem_funcs = rp_elem_fcn; \
284 break; \
285 case GSM_A_PDU_TYPE_RR: \
286 SEV_elem_names_ext = gsm_rr_elem_strings_ext; \
287 SEV_elem_ett = ett_gsm_rr_elem; \
288 SEV_elem_funcs = rr_elem_fcn; \
289 break; \
290 case GSM_A_PDU_TYPE_COMMON: \
291 SEV_elem_names_ext = gsm_common_elem_strings_ext; \
292 SEV_elem_ett = ett_gsm_common_elem; \
293 SEV_elem_funcs = common_elem_fcn; \
294 break; \
295 case GSM_A_PDU_TYPE_GM: \
296 SEV_elem_names_ext = gsm_gm_elem_strings_ext; \
297 SEV_elem_ett = ett_gsm_gm_elem; \
298 SEV_elem_funcs = gm_elem_fcn; \
299 break; \
300 case GSM_A_PDU_TYPE_BSSLAP: \
301 SEV_elem_names_ext = gsm_bsslap_elem_strings_ext; \
302 SEV_elem_ett = ett_gsm_bsslap_elem; \
303 SEV_elem_funcs = bsslap_elem_fcn; \
304 break; \
305 case GSM_PDU_TYPE_BSSMAP_LE: \
306 SEV_elem_names_ext = gsm_bssmap_le_elem_strings_ext; \
307 SEV_elem_ett = ett_gsm_bssmap_le_elem; \
308 SEV_elem_funcs = bssmap_le_elem_fcn; \
309 break; \
310 case NAS_PDU_TYPE_COMMON: \
311 SEV_elem_names_ext = nas_eps_common_elem_strings_ext; \
312 SEV_elem_ett = ett_nas_eps_common_elem; \
313 SEV_elem_funcs = nas_eps_common_elem_fcn; \
314 break; \
315 case NAS_PDU_TYPE_EMM: \
316 SEV_elem_names_ext = nas_emm_elem_strings_ext; \
317 SEV_elem_ett = ett_nas_eps_emm_elem; \
318 SEV_elem_funcs = emm_elem_fcn; \
319 break; \
320 case NAS_PDU_TYPE_ESM: \
321 SEV_elem_names_ext = nas_esm_elem_strings_ext; \
322 SEV_elem_ett = ett_nas_eps_esm_elem; \
323 SEV_elem_funcs = esm_elem_fcn; \
324 break; \
325 case SGSAP_PDU_TYPE: \
326 SEV_elem_names_ext = sgsap_elem_strings_ext; \
327 SEV_elem_ett = ett_sgsap_elem; \
328 SEV_elem_funcs = sgsap_elem_fcn; \
329 break; \
330 case BSSGP_PDU_TYPE: \
331 SEV_elem_names_ext = bssgp_elem_strings_ext; \
332 SEV_elem_ett = ett_bssgp_elem; \
333 SEV_elem_funcs = bssgp_elem_fcn; \
334 break; \
335 case GMR1_IE_COMMON: \
336 SEV_elem_names_ext = gmr1_ie_common_strings_ext; \
337 SEV_elem_ett = ett_gmr1_ie_common; \
338 SEV_elem_funcs = gmr1_ie_common_func; \
339 break; \
340 case GMR1_IE_RR: \
341 SEV_elem_names_ext = gmr1_ie_rr_strings_ext; \
342 SEV_elem_ett = ett_gmr1_ie_rr; \
343 SEV_elem_funcs = gmr1_ie_rr_func; \
344 break; \
345 case NAS_5GS_PDU_TYPE_COMMON: \
346 SEV_elem_names_ext = nas_5gs_common_elem_strings_ext; \
347 SEV_elem_ett = ett_nas_5gs_common_elem; \
348 SEV_elem_funcs = nas_5gs_common_elem_fcn; \
349 break; \
350 case NAS_5GS_PDU_TYPE_MM: \
351 SEV_elem_names_ext = nas_5gs_mm_elem_strings_ext; \
352 SEV_elem_ett = ett_nas_5gs_mm_elem; \
353 SEV_elem_funcs = nas_5gs_mm_elem_fcn; \
354 break; \
355 case NAS_5GS_PDU_TYPE_SM: \
356 SEV_elem_names_ext = nas_5gs_sm_elem_strings_ext; \
357 SEV_elem_ett = ett_nas_5gs_sm_elem; \
358 SEV_elem_funcs = nas_5gs_sm_elem_fcn; \
359 break; \
360 case NAS_5GS_PDU_TYPE_UPDP: \
361 SEV_elem_names_ext = nas_5gs_updp_elem_strings_ext; \
362 SEV_elem_ett = ett_nas_5gs_updp_elem; \
363 SEV_elem_funcs = nas_5gs_updp_elem_fcn; \
364 break; \
365 default: \
366 proto_tree_add_expert_format_remaining(tree, pinfo, ei_unknown, \
367 tvb, curr_offset, \
368 "Unknown PDU type (%u) gsm_a_common", SEV_pdu_type); \
369 return(consumed); \
370 }
371
372/*
373 * Type Length Value (TLV) element dissector
374 */
375WS_DLL_PUBLIC uint16_t elem_tlv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint8_t iei, int pdu_type, int idx, uint32_t offset, unsigned len, const char *name_add);
376
377/*
378 * Type Extendable Length Value (TLVE) element dissector
379 */
380uint16_t elem_telv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint8_t iei, int pdu_type, int idx, uint32_t offset, unsigned len, const char *name_add);
381
382/*
383 * Type Length Value (TLV-E) element dissector
384 */
385uint16_t elem_tlv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint8_t iei, int pdu_type, int idx, uint32_t offset, unsigned len, const char *name_add);
386
387/*
388 * Type Value (TV) element dissector
389 *
390 * Length cannot be used in these functions, big problem if a element dissector
391 * is not defined for these.
392 */
393WS_DLL_PUBLIC uint16_t elem_tv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint8_t iei, int pdu_type, int idx, uint32_t offset, const char *name_add);
394
395/*
396 * Type Value (TV) element dissector
397 * Where top half nibble is IEI and bottom half nibble is value.
398 *
399 * Length cannot be used in these functions, big problem if a element dissector
400 * is not defined for these.
401 */
402WS_DLL_PUBLIC uint16_t elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint8_t iei, int pdu_type, int idx, uint32_t offset, const char *name_add);
403
404/*
405 * Type (T) element dissector
406 */
407WS_DLL_PUBLIC uint16_t elem_t(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint8_t iei, int pdu_type, int idx, uint32_t offset, const char *name_add);
408
409/*
410 * Length Value (LV) element dissector
411 */
412WS_DLL_PUBLIC uint16_t elem_lv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int pdu_type, int idx, uint32_t offset, unsigned len, const char *name_add);
413
414/*
415 * Length Value (LV-E) element dissector
416 */
417uint16_t elem_lv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int pdu_type, int idx, uint32_t offset, unsigned len, const char *name_add);
418
419/*
420 * Value (V) element dissector
421 *
422 * Length cannot be used in these functions, big problem if a element dissector
423 * is not defined for these.
424 */
425WS_DLL_PUBLIC uint16_t elem_v(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int pdu_type, int idx, uint32_t offset, const char *name_add);
426
427/*
428 * Short Value (V_SHORT) element dissector
429 *
430 * nibble used in this functions to indicate left or right nibble of the octet
431 * This is expected to be used right nibble first, as the tables of 24.008.
432 */
433WS_DLL_PUBLIC uint16_t elem_v_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int pdu_type, int idx, uint32_t offset, uint32_t nibble);
434
435
436/* XXX: Most (if not all) the functions which make use of the following macros have the variables 'consumed',
437 * 'curr_offset', and 'cur_len' declared as *unsigned*. This means that the 'if (curr_len <= 0)' statement
438 * originally at the end of each of the macros would always be false since an unsigned cannot be less than 0.
439 * I've chosen to change the statement to 'if ((signed)curr_len <= 0)'. (Although this may be a bit of a
440 * hack, it seems simpler than changing declarations to signed in all the places these macros are used).
441 * Is there a better approach ?
442 */
443
444#define ELEM_MAND_TLV(EMT_iei, EMT_pdu_type, EMT_elem_idx, EMT_elem_name_addition, ei_mandatory) \
445{\
446 if (((signed)curr_len > 0) && \
447 ((consumed = elem_tlv(tvb, tree, pinfo, (uint8_t) EMT_iei, EMT_pdu_type, EMT_elem_idx, curr_offset, curr_len, EMT_elem_name_addition)) > 0)) \
448 { \
449 curr_offset += consumed; \
450 curr_len -= consumed; \
451 } \
452 else \
453 { \
454 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory, \
455 tvb, curr_offset, 0, \
456 "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \
457 EMT_iei, \
458 get_gsm_a_msg_string(pinfo->pool, EMT_pdu_type, EMT_elem_idx), \
459 /* coverity[array_null] */ \
460 (EMT_elem_name_addition == NULL) ? "" : EMT_elem_name_addition \
461 ); \
462 } \
463}
464/* This is a version where the length field can be one or two octets depending
465 * if the extension bit is set or not (TS 48.016 p 10.1.2).
466 * 8 7 6 5 4 3 2 1
467 * octet 2 0/1 ext length
468 * octet 2a length
469 */
470#define ELEM_MAND_TELV(EMT_iei, EMT_pdu_type, EMT_elem_idx, EMT_elem_name_addition, ei_mandatory) \
471{\
472 if (((signed)curr_len > 0) && \
473 ((consumed = elem_telv(tvb, tree, pinfo, (uint8_t) EMT_iei, EMT_pdu_type, EMT_elem_idx, curr_offset, curr_len, EMT_elem_name_addition)) > 0)) \
474 { \
475 curr_offset += consumed; \
476 curr_len -= consumed; \
477 } \
478 else \
479 { \
480 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory, \
481 tvb, curr_offset, 0, \
482 "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \
483 EMT_iei, \
484 get_gsm_a_msg_string(pinfo->pool, EMT_pdu_type, EMT_elem_idx), \
485 /* coverity[array_null] */ \
486 (EMT_elem_name_addition == NULL) ? "" : EMT_elem_name_addition \
487 ); \
488 } \
489}
490
491#define ELEM_MAND_TLV_E(EMT_iei, EMT_pdu_type, EMT_elem_idx, EMT_elem_name_addition, ei_mandatory) \
492{\
493 if (((signed)curr_len > 0) && \
494 ((consumed = elem_tlv_e(tvb, tree, pinfo, (uint8_t) EMT_iei, EMT_pdu_type, EMT_elem_idx, curr_offset, curr_len, EMT_elem_name_addition)) > 0)) \
495 { \
496 curr_offset += consumed; \
497 curr_len -= consumed; \
498 } \
499 else \
500 { \
501 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory, \
502 tvb, curr_offset, 0, \
503 "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \
504 EMT_iei, \
505 get_gsm_a_msg_string(pinfo->pool, EMT_pdu_type, EMT_elem_idx), \
506 /* coverity[array_null] */ \
507 (EMT_elem_name_addition == NULL) ? "" : EMT_elem_name_addition \
508 ); \
509 } \
510}
511#define ELEM_OPT_TLV(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
512{\
513 if ((signed)curr_len <= 0) return; \
514 /* coverity[overrun-call:FALSE] */ \
515 if ((consumed = elem_tlv(tvb, tree, pinfo, (uint8_t) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, curr_len, EOT_elem_name_addition)) > 0) \
516 { \
517 curr_offset += consumed; \
518 curr_len -= consumed; \
519 } \
520}
521
522#define ELEM_OPT_TELV(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
523{\
524 if ((signed)curr_len <= 0) return; \
525 /* coverity[overrun-call:FALSE] */ \
526 if ((consumed = elem_telv(tvb, tree, pinfo, (uint8_t) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, curr_len, EOT_elem_name_addition)) > 0) \
527 { \
528 curr_offset += consumed; \
529 curr_len -= consumed; \
530 } \
531}
532
533#define ELEM_OPT_TLV_E(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
534{\
535 if ((signed)curr_len <= 0) return; \
536 if ((consumed = elem_tlv_e(tvb, tree, pinfo, (uint8_t) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, curr_len, EOT_elem_name_addition)) > 0) \
537 { \
538 curr_offset += consumed; \
539 curr_len -= consumed; \
540 } \
541}
542
543#define ELEM_MAND_TV(EMT_iei, EMT_pdu_type, EMT_elem_idx, EMT_elem_name_addition, ei_mandatory) \
544{\
545 if (((signed)curr_len > 0) && \
546 /* coverity[overrun-call:FALSE] */ \
547 ((consumed = elem_tv(tvb, tree, pinfo, (uint8_t) EMT_iei, EMT_pdu_type, EMT_elem_idx, curr_offset, EMT_elem_name_addition)) > 0)) \
548 { \
549 curr_offset += consumed; \
550 curr_len -= consumed; \
551 } \
552 else \
553 { \
554 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory,\
555 tvb, curr_offset, 0, \
556 "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \
557 EMT_iei, \
558 get_gsm_a_msg_string(pinfo->pool, EMT_pdu_type, EMT_elem_idx), \
559 /* coverity[array_null] */ \
560 (EMT_elem_name_addition == NULL) ? "" : EMT_elem_name_addition \
561 ); \
562 } \
563}
564
565#define ELEM_OPT_TV(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
566{\
567 if ((signed)curr_len <= 0) return; \
568 /* coverity[overrun-call:FALSE] */ \
569 if ((consumed = elem_tv(tvb, tree, pinfo, (uint8_t) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, EOT_elem_name_addition)) > 0) \
570 { \
571 curr_offset += consumed; \
572 curr_len -= consumed; \
573 } \
574}
575
576#define ELEM_OPT_TV_SHORT(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
577{\
578 if ((signed)curr_len <= 0) return; \
579 /* coverity[overrun-call:FALSE] */ \
580 if ((consumed = elem_tv_short(tvb, tree, pinfo, EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, EOT_elem_name_addition)) > 0) \
581 { \
582 curr_offset += consumed; \
583 curr_len -= consumed; \
584 } \
585}
586
587#define ELEM_OPT_T(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
588{\
589 if ((signed)curr_len <= 0) return; \
590 if ((consumed = elem_t(tvb, tree, pinfo, (uint8_t) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, EOT_elem_name_addition)) > 0) \
591 { \
592 curr_offset += consumed; \
593 curr_len -= consumed; \
594 } \
595}
596
597#define ELEM_MAND_LV(EML_pdu_type, EML_elem_idx, EML_elem_name_addition, ei_mandatory) \
598{\
599 if (((signed)curr_len > 0) && \
600 ((consumed = elem_lv(tvb, tree, pinfo, EML_pdu_type, EML_elem_idx, curr_offset, curr_len, EML_elem_name_addition)) > 0)) \
601 { \
602 curr_offset += consumed; \
603 curr_len -= consumed; \
604 } \
605 else \
606 { \
607 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory,\
608 tvb, curr_offset, 0, \
609 "Missing Mandatory element %s%s, rest of dissection is suspect", \
610 get_gsm_a_msg_string(pinfo->pool, EML_pdu_type, EML_elem_idx), \
611 /* coverity[array_null] */ \
612 (EML_elem_name_addition == NULL) ? "" : EML_elem_name_addition \
613 ); \
614 } \
615}
616
617#define ELEM_MAND_LV_E(EML_pdu_type, EML_elem_idx, EML_elem_name_addition, ei_mandatory) \
618{\
619 if (((signed)curr_len > 0) && \
620 ((consumed = elem_lv_e(tvb, tree, pinfo, EML_pdu_type, EML_elem_idx, curr_offset, curr_len, EML_elem_name_addition)) > 0)) \
621 { \
622 curr_offset += consumed; \
623 curr_len -= consumed; \
624 } \
625 else \
626 { \
627 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory,\
628 tvb, curr_offset, 0, \
629 "Missing Mandatory element %s%s, rest of dissection is suspect", \
630 get_gsm_a_msg_string(pinfo->pool, EML_pdu_type, EML_elem_idx), \
631 /* coverity[array_null] */ \
632 (EML_elem_name_addition == NULL) ? "" : EML_elem_name_addition \
633 ); \
634 } \
635}
636
637#define ELEM_MAND_V(EMV_pdu_type, EMV_elem_idx, EMV_elem_name_addition, ei_mandatory) \
638{\
639 if (((signed)curr_len > 0) && \
640 ((consumed = elem_v(tvb, tree, pinfo, EMV_pdu_type, EMV_elem_idx, curr_offset, EMV_elem_name_addition)) > 0)) \
641 { \
642 curr_offset += consumed; \
643 curr_len -= consumed; \
644 } \
645 else \
646 { \
647 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory,\
648 tvb, curr_offset, 0, \
649 "Missing Mandatory element %s%s, rest of dissection is suspect", \
650 get_gsm_a_msg_string(pinfo->pool, EMV_pdu_type, EMV_elem_idx), \
651 /* coverity[array_null] */ \
652 (EMV_elem_name_addition == NULL) ? "" : EMV_elem_name_addition \
653 ); \
654 } \
655}
656
657#define ELEM_MAND_VV_SHORT(EMV_pdu_type1, EMV_elem_idx1, EMV_pdu_type2, EMV_elem_idx2, ei_mandatory) \
658{\
659 if ((signed)curr_len > 0) \
660 { \
661 elem_v_short(tvb, tree, pinfo, EMV_pdu_type1, EMV_elem_idx1, curr_offset, RIGHT_NIBBLE); \
662 elem_v_short(tvb, tree, pinfo, EMV_pdu_type2, EMV_elem_idx2, curr_offset, LEFT_NIBBLE); \
663 curr_offset ++ ; /* consumed length is 1, regardless of contents */ \
664 curr_len -- ; \
665 } \
666 else \
667 { \
668 proto_tree_add_expert_format(tree, pinfo, &ei_mandatory,\
669 tvb, curr_offset, 0, \
670 "Missing Mandatory elements %s %s, rest of dissection is suspect", \
671 get_gsm_a_msg_string(pinfo->pool, EMV_pdu_type1, EMV_elem_idx1), \
672 get_gsm_a_msg_string(pinfo->pool, EMV_pdu_type2, EMV_elem_idx2) \
673 /* coverity[array_null] */ \
674 ); \
675 } \
676}
677
678/*
679 * this enum must be kept in-sync with 'gsm_a_pd_str'
680 * it is used as an index into the array
681 */
682 typedef enum
683{
684 PD_GCC = 0,
685 PD_BCC,
686 PD_RSVD_1,
687 PD_CC,
688 PD_GTTP,
689 PD_MM,
690 PD_RR,
691 PD_UNK_1,
692 PD_GMM,
693 PD_SMS,
694 PD_SM,
695 PD_SS,
696 PD_LCS,
697 PD_UNK_2,
698 PD_RSVD_EXT,
699 PD_TP
700}
701gsm_a_pd_str_e;
702
703 typedef struct _gsm_a_tap_rec_t {
704 /*
705 * value from packet-bssap.h
706 */
707 uint8_t pdu_type;
708 uint8_t message_type;
709 gsm_a_pd_str_e protocol_disc;
710} gsm_a_tap_rec_t;
711
712 void bssmap_old_bss_to_new_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo);
713 void bssmap_new_bss_to_old_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo);
714
715 void dtap_mm_mm_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
716
717uint16_t be_cell_id_aux(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len, uint8_t disc);
718uint16_t be_cell_id_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len, uint8_t disc, e212_number_type_t number_type);
719uint16_t be_cell_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
720uint16_t be_chan_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
721uint16_t be_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
722
723WS_DLL_PUBLIC
724uint16_t de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
725WS_DLL_PUBLIC
726uint16_t de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
727WS_DLL_PUBLIC
728uint16_t de_cell_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
729uint16_t de_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
730uint16_t de_bearer_cap_uplink(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
731uint16_t be_emlpp_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
732uint16_t be_ganss_loc_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
733uint16_t be_ganss_pos_dta(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
734uint16_t be_ganss_ass_dta(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
735uint16_t de_cn_common_gsm_map_nas_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
736uint16_t de_cs_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
737uint16_t de_ps_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
738uint16_t de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
739uint16_t de_emerg_num_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len, char* add_string, int string_len);
740WS_DLL_PUBLIC
741uint16_t de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
742WS_DLL_PUBLIC
743uint16_t de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
744WS_DLL_PUBLIC
745uint16_t de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
746uint16_t de_serv_cat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
747WS_DLL_PUBLIC
748uint16_t de_sm_apn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
749uint16_t de_sm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
750uint16_t de_sm_mbms_prot_conf_opt(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
751uint16_t de_sm_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
752WS_DLL_PUBLIC
753uint16_t de_sm_pdp_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
754WS_DLL_PUBLIC
755uint16_t de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
756WS_DLL_PUBLIC
757uint16_t de_sm_pflow_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
758uint16_t de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
759uint16_t de_sm_tmgi(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len, char* add_string _U_, int string_len _U_);
760uint16_t de_time_zone(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
761WS_DLL_PUBLIC
762uint16_t de_gmm_drx_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
763WS_DLL_PUBLIC
764uint16_t de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
765WS_DLL_PUBLIC
766uint16_t de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
767WS_DLL_PUBLIC
768uint16_t de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
769uint16_t de_gmm_voice_domain_pref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
770
771uint16_t de_sup_codec_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
772
773uint16_t de_gc_timer(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
774uint16_t de_gc_timer3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
775
776WS_DLL_PUBLIC
777uint16_t de_rr_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
778WS_DLL_PUBLIC
779uint16_t de_rr_cell_dsc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
780WS_DLL_PUBLIC
781uint16_t de_rr_ch_dsc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
782WS_DLL_PUBLIC
783uint16_t de_rr_ch_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
784WS_DLL_PUBLIC
785uint16_t de_rr_chnl_needed(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
786WS_DLL_PUBLIC
787uint16_t de_rr_cip_mode_set(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
788WS_DLL_PUBLIC
789uint16_t de_rr_cm_enq_mask(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
790uint16_t de_rr_meas_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
791uint16_t de_rr_mob_all(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
792WS_DLL_PUBLIC
793uint16_t de_rr_multirate_conf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
794WS_DLL_PUBLIC
795uint16_t de_rr_sus_cau(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
796WS_DLL_PUBLIC
797uint16_t de_rr_tlli(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
798
799WS_DLL_PUBLIC
800uint16_t de_rej_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
801WS_DLL_PUBLIC
802uint16_t de_d_gb_call_ref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
803uint16_t de_spare_nibble(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
804
805uint16_t de_emm_ue_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
806uint16_t de_emm_trac_area_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
807uint16_t de_emm_sec_par_from_eutra(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
808uint16_t de_emm_sec_par_to_eutra(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
809uint16_t de_emm_ue_add_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
810uint16_t de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
811uint16_t de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
812uint16_t de_esm_ext_apn_agr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
813uint16_t de_esm_ext_eps_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
814uint16_t de_esm_rel_assist_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
815
816 void nas_esm_pdn_con_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
817
818uint16_t de_nas_5gs_cmn_dnn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
819uint16_t de_nas_5gs_mm_ue_radio_cap_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len, char* add_string _U_, int string_len _U_);
820uint16_t de_nas_5gs_cmn_s_nssai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
821uint16_t de_nas_5gs_cmn_service_level_aa_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
822uint16_t de_nas_5gs_sm_qos_rules(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
823uint16_t de_nas_5gs_sm_qos_flow_des(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
824uint16_t de_nas_5gs_sm_session_ambr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
825 void de_nas_5gs_intra_n1_mode_nas_transparent_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_);
826 void de_nas_5gs_n1_mode_to_s1_mode_nas_transparent_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_);
827 void de_nas_5gs_s1_mode_to_n1_mode_nas_transparent_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_);
828 void dissect_nas_5gs_updp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
829
830 void dtap_rr_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
831 void dtap_rr_cip_mode_cpte(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
832
833 void bssmap_perf_loc_abort(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
834 void bssmap_reset(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
835 void bssmap_conn_oriented(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
836uint16_t bssmap_dissect_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string, int string_len);
837
838
839 void rp_data_n_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
840
841uint16_t de_sgsap_ecgi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
842
843/*
844 * the following allows TAP code access to the messages
845 * without having to duplicate it. With MSVC and a
846 * libwireshark.dll, we need a special declaration.
847 */
848 extern const value_string gsm_a_bssmap_msg_strings[];
849 extern const value_string gsm_a_dtap_msg_mm_strings[];
850 extern const value_string gsm_a_dtap_msg_rr_strings[];
851 extern const value_string gsm_a_dtap_msg_cc_strings[];
852 extern const value_string gsm_a_dtap_msg_gmm_strings[];
853 extern const value_string gsm_a_dtap_msg_sms_strings[];
854 extern const value_string gsm_a_dtap_msg_sm_strings[];
855 extern const value_string gsm_a_dtap_msg_ss_strings[];
856 extern const value_string gsm_a_dtap_msg_tp_strings[];
857 extern const value_string gsm_a_rr_short_pd_msg_strings[];
858
859 extern const value_string gsm_a_sm_qos_del_of_err_sdu_vals[];
860 extern const value_string gsm_a_sm_qos_traffic_cls_vals[];
861 extern const value_string gsm_a_sm_qos_ber_vals[];
862 extern const value_string gsm_a_sm_qos_sdu_err_rat_vals[];
863 extern const value_string gsm_a_sm_qos_traff_hdl_pri_vals[];
864
865 extern const value_string gsm_a_dtap_type_of_number_values[];
866 extern const value_string gsm_a_dtap_numbering_plan_id_values[];
867 extern const value_string gsm_a_sms_vals[];
868 extern const value_string tighter_cap_level_vals[];
869 extern value_string_ext gsm_a_rr_rxlev_vals_ext;
870 extern const value_string gsm_a_rr_rxqual_vals[];
871 extern const value_string gsm_a_gm_type_of_ciph_alg_vals[];
872
873 extern value_string_ext nas_eps_emm_cause_values_ext;
874 extern const value_string nas_eps_emm_cause_values[];
875 extern const value_string nas_eps_esm_cause_vals[];
876
877 extern const value_string nas_5gs_pdu_session_id_vals[];
878 extern const value_string nas_5gs_sm_cause_vals[];
879
880 typedef enum
881{
882 /* Common Information Elements [3] 10.5.1 */
883 DE_CELL_ID, /* Cell Identity */
884 DE_CIPH_KEY_SEQ_NUM, /* Ciphering Key Sequence Number */
885 DE_LAI, /* Location Area Identification */
886 DE_MID, /* Mobile Identity */
887 DE_MS_CM_1, /* Mobile Station Classmark 1 */
888 DE_MS_CM_2, /* Mobile Station Classmark 2 */
889 DE_MS_CM_3, /* Mobile Station Classmark 3 */
890 DE_SPARE_NIBBLE, /* Spare Half Octet */
891 DE_D_GB_CALL_REF, /* Descriptive group or broadcast call reference */
892 DE_G_CIPH_KEY_NUM, /* Group Cipher Key Number */
893 DE_PD_SAPI, /* PD and SAPI $(CCBS)$ */
894 DE_PRIO, /* Priority Level */
895 DE_CN_COMMON_GSM_MAP_NAS_SYS_INFO, /* CN Common GSM-MAP NAS system information */
896 DE_CS_DOMAIN_SPEC_SYS_INFO, /* CS domain specific system information */
897 DE_PS_DOMAIN_SPEC_SYS_INFO, /* PS domain specific system information */
898 DE_PLMN_LIST, /* PLMN List */
899 DE_NAS_CONT_FOR_PS_HO, /* 10.5.1.14 NAS container for PS HO */
900 DE_MS_NET_FEAT_SUP, /* 10.5.1.15 MS network feature support */
901
902 DE_COMMON_NONE /* NONE */
903}
904common_elem_idx_t;
905
906 typedef enum
907{
908 BE_UDEF_0, /* Undefined */
909 BE_CIC, /* Circuit Identity Code */
910 BE_RSVD_1, /* Reserved */
911 BE_RES_AVAIL, /* Resource Available */
912 BE_CAUSE, /* Cause */
913 BE_CELL_ID, /* Cell Identifier */
914 BE_PRIO, /* Priority */
915 BE_L3_HEADER_INFO, /* Layer 3 Header Information */
916 BE_IMSI, /* IMSI */
917 BE_TMSI, /* TMSI */
918 BE_ENC_INFO, /* Encryption Information */
919 BE_CHAN_TYPE, /* Channel Type */
920 BE_PERIODICITY, /* Periodicity */
921 BE_EXT_RES_IND, /* Extended Resource Indicator */
922 BE_NUM_MS, /* Number Of MSs */
923 BE_RSVD_2, /* Reserved */
924 BE_RSVD_3, /* Reserved */
925 BE_RSVD_4, /* Reserved */
926 BE_CM_INFO_2, /* Classmark Information Type 2 */
927 BE_CM_INFO_3, /* Classmark Information Type 3 */
928 BE_INT_BAND, /* Interference Band To Be Used */
929 BE_RR_CAUSE, /* RR Cause */
930 BE_RSVD_5, /* Reserved */
931 BE_L3_INFO, /* Layer 3 Information */
932 BE_DLCI, /* DLCI */
933 BE_DOWN_DTX_FLAG, /* Downlink DTX Flag */
934 BE_CELL_ID_LIST, /* Cell Identifier List */
935 BE_RESP_REQ, /* Response Request */
936 BE_RES_IND_METHOD, /* Resource Indication Method */
937 BE_CM_INFO_1, /* Classmark Information Type 1 */
938 BE_CIC_LIST, /* Circuit Identity Code List */
939 BE_DIAG, /* Diagnostic */
940 BE_L3_MSG, /* Layer 3 Message Contents */
941 BE_CHOSEN_CHAN, /* Chosen Channel */
942 BE_TOT_RES_ACC, /* Total Resource Accessible */
943 BE_CIPH_RESP_MODE, /* Cipher Response Mode */
944 BE_CHAN_NEEDED, /* Channel Needed */
945 BE_TRACE_TYPE, /* Trace Type */
946 BE_TRIGGERID, /* TriggerID */
947 BE_TRACE_REF, /* Trace Reference */
948 BE_TRANSID, /* TransactionID */
949 BE_MID, /* Mobile Identity */
950 BE_OMCID, /* OMCID */
951 BE_FOR_IND, /* Forward Indicator */
952 BE_CHOSEN_ENC_ALG, /* Chosen Encryption Algorithm */
953 BE_CCT_POOL, /* Circuit Pool */
954 BE_CCT_POOL_LIST, /* Circuit Pool List */
955 BE_TIME_IND, /* Time Indication */
956 BE_RES_SIT, /* Resource Situation */
957 BE_CURR_CHAN_1, /* Current Channel Type 1 */
958 BE_QUE_IND, /* Queueing Indicator */
959 BE_ASS_REQ, /* Assignment Requirement */
960 BE_UDEF_52, /* Undefined */
961 BE_TALKER_FLAG, /* Talker Flag */
962 BE_CONN_REL_REQ, /* Connection Release Requested */
963 BE_GROUP_CALL_REF, /* Group Call Reference */
964 BE_EMLPP_PRIO, /* eMLPP Priority */
965 BE_CONF_EVO_IND, /* Configuration Evolution Indication */
966 BE_OLD2NEW_INFO, /* Old BSS to New BSS Information */
967 BE_LSA_ID, /* LSA Identifier */
968 BE_LSA_ID_LIST, /* LSA Identifier List */
969 BE_LSA_INFO, /* LSA Information */
970 BE_LCS_QOS, /* LCS QoS */
971 BE_LSA_ACC_CTRL, /* LSA access control suppression */
972 BE_SPEECH_VER, /* Speech Version */
973 BE_UDEF_65, /* Undefined */
974 BE_UDEF_66, /* Undefined */
975 BE_LCS_PRIO, /* LCS Priority */
976 BE_LOC_TYPE, /* Location Type */
977 BE_LOC_EST, /* Location Estimate */
978 BE_POS_DATA, /* Positioning Data */
979 BE_LCS_CAUSE, /* 3.2.2.66 LCS Cause */
980 BE_LCS_CLIENT, /* 10.14 LCS Client Type */
981 BE_APDU, /* APDU */
982 BE_NE_ID, /* Network Element Identity */
983 BE_GPS_ASSIST_DATA, /* GPS Assistance Data */
984 BE_DECIPH_KEYS, /* Deciphering Keys */
985 BE_RET_ERR_REQ, /* Return Error Request */
986 BE_RET_ERR_CAUSE, /* Return Error Cause */
987 BE_SEG, /* Segmentation */
988 BE_SERV_HO, /* Service Handover */
989 BE_SRC_RNC_TO_TAR_RNC_UMTS, /* Source RNC to target RNC transparent information (UMTS) */
990 BE_SRC_RNC_TO_TAR_RNC_CDMA, /* Source RNC to target RNC transparent information (cdma2000) */
991 BE_GERAN_CLS_M, /* GERAN Classmark */
992 BE_GERAN_BSC_CONT, /* GERAN BSC Container */
993 BE_VEL_EST, /* Velocity Estimate */
994 BE_UDEF_86, /* Undefined */
995 BE_UDEF_87, /* Undefined */
996 BE_UDEF_88, /* Undefined */
997 BE_UDEF_89, /* Undefined */
998 BE_UDEF_90, /* Undefined */
999 BE_UDEF_91, /* Undefined */
1000 BE_UDEF_92, /* Undefined */
1001 BE_UDEF_93, /* Undefined */
1002 BE_UDEF_94, /* Undefined */
1003 BE_UDEF_95, /* Undefined */
1004 BE_UDEF_96, /* Undefined */
1005 BE_NEW_BSS_TO_OLD_BSS_INF, /* New BSS to Old BSS Information */
1006 BE_UDEF_98, /* Undefined */
1007 BE_INTER_SYS_INF, /* Inter-System Information */
1008 BE_SNA_ACC_INF, /* SNA Access Information */
1009 BE_VSTK_RAND_INF, /* VSTK_RAND Information */
1010 BE_VSTK_INF, /* VSTK Information */
1011 BE_PAGING_INF, /* Paging Information */
1012 BE_IMEI, /* IMEI */
1013 BE_VGCS_FEAT_FLG, /* VGCS Feature Flags */
1014 BE_TALKER_PRI, /* Talker Priority */
1015 BE_EMRG_SET_IND, /* Emergency Set Indication */
1016 BE_TALKER_ID, /* Talker Identity */
1017 BE_CELL_ID_LIST_SEG, /* Cell Identifier List Segment */
1018 BE_SMS_TO_VGCS, /* SMS to VGCS */
1019 BE_VGCS_TALKER_MOD, /* VGCS Talker Mode */
1020 BE_VGS_VBS_CELL_STAT, /* VGCS/VBS Cell Status */
1021 BE_CELL_ID_LST_SEG_F_EST_CELLS, /* Cell Identifier List Segment for established cells */
1022 BE_CELL_ID_LST_SEG_F_CELL_TB_EST, /* Cell Identifier List Segment for cells to be established */
1023 BE_CELL_ID_LST_SEG_F_REL_CELL, /* Cell Identifier List Segment for released cells - no user present */
1024 BE_CELL_ID_LST_SEG_F_NOT_EST_CELL, /* Cell Identifier List Segment for not established cells - no establishment possible */
1025 BE_GANSS_ASS_DTA, /* GANSS Assistance Data */
1026 BE_GANSS_POS_DTA, /* GANSS Positioning Data */
1027 BE_GANSS_LOC_TYP, /* GANSS Location Type */
1028 BE_APP_DATA, /* Application Data */
1029 BE_DATA_ID, /* Data Identity */
1030 BE_APP_DATA_INF, /* Application Data Information */
1031 BE_MSISDN, /* MSISDN */
1032 BE_AOIP_TRANS_LAY_ADD, /* AoIP Transport Layer Address */
1033 BE_SPEECH_CODEC_LST, /* Speech Codec List */
1034 BE_SPEECH_CODEC, /* Speech Codec */
1035 BE_CALL_ID, /* Call Identifier */
1036 BE_CALL_ID_LST, /* Call Identifier List */
1037 BE_A_ITF_SEL_FOR_RESET, /* A-Interface Selector for RESET */
1038 BE_UDEF_130, /* Undefined */
1039 BE_KC128, /* Kc128 */
1040 BE_CSG_ID, /* CSG Identifier */
1041 BE_REDIR_ATT_FLG, /* Redirect Attempt Flag 3.2.2.111 */
1042 BE_REROUTE_REJ_CAUSE, /* Reroute Reject Cause 3.2.2.112 */
1043 BE_SEND_SEQN, /* Send Sequence Number 3.2.2.113 */
1044 BE_REROUTE_OUTCOME, /* Reroute complete outcome 3.2.2.114 */
1045 BE_GLOBAL_CALL_REF, /* Global Call Reference 3.2.2.115 */
1046 BE_LCLS_CONF, /* LCLS-Configuration 3.2.2.116 */
1047 BE_LCLS_CON_STATUS_CONTROL, /* LCLS-Connection-Status-Control 3.2.2.117 */
1048 BE_LCLS_CORR_NOT_NEEDED, /* LCLS-Correlation-Not-Needed 3.2.2.118 */
1049 BE_LCLS_BSS_STATUS, /* LCLS-BSS-Status 3.2.2.119 */
1050 BE_LCLS_BREAK_REQ, /* LCLS-Break-Request 3.2.2.120 */
1051 BE_CSFB_IND, /* CSFB Indication 3.2.2.121 */
1052 BE_CS_TO_PS_SRVCC, /* CS to PS SRVCC 3.2.2.122 */
1053 BE_SRC_ENB_2_TGT_ENB_TRANSP_INF, /* Source eNB to target eNB transparent information (E-UTRAN)" 3.2.2.123 */
1054 BE_CS_TO_PS_SRVCC_IND, /* CS to PS SRVCC Indication 3.2.2.124 */
1055 BE_CN_TO_MS_TRANSP, /* CN to MS transparent information 3.2.2.125 */
1056 BE_SELECTED_PLMN_ID, /* Selected PLMN ID 3.2.2.126 */
1057 BE_LAST_USED_E_UTRAN_PLMN_ID, /* Last used E-UTRAN PLMN ID 3.2.2.127 */
1058 BE_UDEF_150, /* Undefined Old Location Area Identification 3.2.2.128 */
1059 BE_UDEF_151, /* Undefined Attach Indicator 3.2.2.129 */
1060 BE_UDEF_152, /* Undefined Selected Operator 3.2.2.130 */
1061 BE_UDEF_153, /* Undefined PS Registered Operator 3.2.2.131 */
1062 BE_UDEF_154, /* Undefined CS Registered Operator 3.2.2.132*/
1063 BE_UDEF_155, /* Undefined */
1064 BE_UDEF_156, /* Undefined */
1065 BE_UDEF_157, /* Undefined */
1066 BE_UDEF_158, /* Undefined */
1067 BE_UDEF_159, /* Undefined */
1068 BE_UDEF_160, /* Undefined */
1069 BE_UDEF_161, /* Undefined */
1070 BE_UDEF_162, /* Undefined */
1071 BE_UDEF_163, /* Undefined */
1072 BE_UDEF_164, /* Undefined */
1073 BE_UDEF_165, /* Undefined */
1074 BE_UDEF_166, /* Undefined */
1075 BE_UDEF_167, /* Undefined */
1076 BE_UDEF_168, /* Undefined */
1077 BE_UDEF_169, /* Undefined */
1078 BE_UDEF_170, /* Undefined */
1079 BE_UDEF_171, /* Undefined */
1080 BE_UDEF_172, /* Undefined */
1081 BE_UDEF_173, /* Undefined */
1082 BE_UDEF_174, /* Undefined */
1083 BE_UDEF_175, /* Undefined */
1084 BE_UDEF_176, /* Undefined */
1085 BE_UDEF_177, /* Undefined */
1086 BE_UDEF_178, /* Undefined */
1087 BE_UDEF_179, /* Undefined */
1088 BE_UDEF_180, /* Undefined */
1089 BE_UDEF_181, /* Undefined */
1090 BE_UDEF_182, /* Undefined */
1091 BE_UDEF_183, /* Undefined */
1092 BE_UDEF_184, /* Undefined */
1093 BE_UDEF_185, /* Undefined */
1094 BE_UDEF_186, /* Undefined */
1095 BE_UDEF_187, /* Undefined */
1096 BE_UDEF_188, /* Undefined */
1097 BE_UDEF_189, /* Undefined */
1098 BE_UDEF_190, /* Undefined */
1099 BE_UDEF_191, /* Undefined */
1100 BE_UDEF_192, /* Undefined */
1101 BE_UDEF_193, /* Undefined */
1102 BE_UDEF_194, /* Undefined */
1103 BE_UDEF_195, /* Undefined */
1104 BE_UDEF_196, /* Undefined */
1105 BE_UDEF_197, /* Undefined */
1106 BE_UDEF_198, /* Undefined */
1107 BE_UDEF_199, /* Undefined */
1108 BE_UDEF_200, /* Undefined */
1109 BE_UDEF_201, /* Undefined */
1110 BE_UDEF_202, /* Undefined */
1111 BE_UDEF_203, /* Undefined */
1112 BE_UDEF_204, /* Undefined */
1113 BE_UDEF_205, /* Undefined */
1114 BE_UDEF_206, /* Undefined */
1115 BE_UDEF_207, /* Undefined */
1116 BE_UDEF_208, /* Undefined */
1117 BE_UDEF_209, /* Undefined */
1118 BE_UDEF_210, /* Undefined */
1119 BE_UDEF_211, /* Undefined */
1120 BE_UDEF_212, /* Undefined */
1121 BE_UDEF_213, /* Undefined */
1122 BE_UDEF_214, /* Undefined */
1123 BE_UDEF_215, /* Undefined */
1124 BE_UDEF_216, /* Undefined */
1125 BE_UDEF_217, /* Undefined */
1126 BE_UDEF_218, /* Undefined */
1127 BE_UDEF_219, /* Undefined */
1128 BE_UDEF_220, /* Undefined */
1129 BE_UDEF_221, /* Undefined */
1130 BE_UDEF_222, /* Undefined */
1131 BE_UDEF_223, /* Undefined */
1132 BE_UDEF_224, /* Undefined */
1133 BE_UDEF_225, /* Undefined */
1134 BE_UDEF_226, /* Undefined */
1135 BE_UDEF_227, /* Undefined */
1136 BE_UDEF_228, /* Undefined */
1137 BE_UDEF_229, /* Undefined */
1138 BE_UDEF_230, /* Undefined */
1139 BE_UDEF_231, /* Undefined */
1140 BE_UDEF_232, /* Undefined */
1141 BE_UDEF_233, /* Undefined */
1142 BE_UDEF_234, /* Undefined */
1143 BE_UDEF_235, /* Undefined */
1144 BE_UDEF_236, /* Undefined */
1145 BE_UDEF_237, /* Undefined */
1146 BE_UDEF_238, /* Undefined */
1147 BE_UDEF_239, /* Undefined */
1148 BE_OSMOCOM_OSMUX_SUPPORT = 0xf0, /* Osmocom extension: Osmux Support */
1149 BE_OSMOCOM_OSMUX_CID = 0xf1, /* Osmocom extension: Osmux CID */
1150 BE_NONE /* NONE */
1151}
1152bssmap_elem_idx_t;
1153
1154 typedef enum
1155{
1156 /* BSSMAP LE Elements */
1157 DE_BMAPLE_LCSQOS, /* LCS QOS */
1158 DE_BMAPLE_LCS_PRIO, /* LCS Priority */
1159 DE_BMAPLE_LOC_TYPE, /* Location Type */
1160 DE_BMAPLE_GANSS_LOC_TYPE, /* GANSS Location Type */
1161 DE_BMAPLE_GEO_LOC, /* 10.9 Geographic Location */
1162 DE_BMAPLE_POS_DATA, /* Positioning Data */
1163 DE_BMAPLE_GANSS_POS_DATA, /* GANSS Positioning Data */
1164 DE_BMAPLE_VELOC_DATA, /* Velocity Data */
1165 DE_BMAPLE_LCS_CAUSE, /* LCS Cause */
1166 DE_BMAPLE_LCS_CLIENT_TYPE, /* LCS Client Type */
1167 DE_BMAPLE_APDU, /* 10.3 APDU */
1168 DE_BMAPLE_NETWORK_ELEM_ID, /* Network Element Identity */
1169 DE_BMAPLE_REQ_GPS_ASSIST_D, /* 10.10 Requested GPS Assistance Data */
1170 DE_BMAPLE_REQ_GNSS_ASSIST_D,/* Requested GANSS Assistance Data */
1171 DE_BMAPLE_DECIPH_KEYS, /* 10.8 Deciphering Keys */
1172 DE_BMAPLE_RETURN_ERROR_REQ, /* Return Error Request */
1173 DE_BMAPLE_RETURN_ERROR_CAUSE, /* Return Error Cause */
1174 DE_BMAPLE_SEGMENTATION, /* Segmentation */
1175 DE_BMAPLE_CLASSMARK_TYPE_3, /* Classmark Information Type 3 */
1176 DE_BMAPLE_CAUSE, /* 10.4 Cause */
1177 DE_BMAPLE_CELL_IDENTIFIER, /* 10.5 Cell Identifier */
1178 DE_BMAPLE_CHOSEN_CHANNEL, /* 10.6 Chosen Channel */
1179 DE_BMAPLE_IMSI, /* 10.11 IMSI */
1180 DE_BMAPLE_RES1, /* Reserved */
1181 DE_BMAPLE_RES2, /* Reserved */
1182 DE_BMAPLE_RES3, /* Reserved */
1183 DE_BMAPLE_LCS_CAPABILITY, /* LCS Capability */
1184 DE_BMAPLE_PACKET_MEAS_REP, /* Packet Measurement Report */
1185 DE_BMAPLE_MEAS_CELL_ID, /* Measured Cell Identity */
1186 DE_BMAPLE_IMEI, /* IMEI */
1187 DE_BMAPLE_BSS_MLAT_CAP, /* 10.34 BSS Multilateration Capability */
1188 DE_BMAPLE_CELL_INFO_LIST, /* 10.35 Cell Information List */
1189 DE_BMAPLE_BTS_REC_ACC, /* 10.36 BTS Reception Accuracy Level */
1190 DE_BMAPLE_MLAT_POS_METHOD, /* 10.37 Multilateration Positioning Method */
1191 DE_BMAPLE_MLAT_TIMING_ADV, /* 10.38 Multilateration Timing Advance */
1192 DE_BMAPLE_MS_SYNC_ACC, /* 10.39 MS Sync Accuracy */
1193 DE_BMAPLE_SHORT_ID_SET, /* 10.40 Short ID Set */
1194 DE_BMAPLE_RANDOM_ID_SET, /* 10.41 Random ID Set */
1195 DE_BMAPLE_SHORT_BSS_ID, /* 10.42 Short BSS ID */
1196 DE_BMAPLE_RANDOM_ID, /* 10.43 Random ID */
1197 DE_BMAPLE_SHORT_ID, /* 10.44 Random ID */
1198 DE_BMAPLE_COVERAGE_CLASS, /* 10.45 Coverage Class */
1199 DE_BMAPLE_MTA_ACC_SEC_REQ, /* 10.46 MTA Access Security Required */
1200 BMAPLE_NONE /* NONE */
1201}
1202bssmap_le_elem_idx_t;
1203
1204 typedef enum
1205{
1206 /* BSS LAP Elements 5 */
1207 DE_BLAP_RES1, /* Reserved */
1208 DE_BLAP_TA, /* Timing Advance */
1209 DE_BLAP_RES3, /* Reserved */ /* (note) */
1210 DE_BLAP_RES4, /* Cell Identity */
1211 DE_BLAP_RES5, /* Reserved */ /* (note) */
1212 DE_BLAP_RES6, /* Reserved */ /* (note) */
1213 DE_BLAP_RES7, /* Reserved */ /* (note) */
1214 DE_BLAP_CH_DESC, /* Channel Description */
1215 DE_BLAP_RES9, /* Reserved */ /* (note) */
1216 DE_BLAP_RES10, /* Reserved */ /* (note) */
1217 DE_BLAP_RES11, /* Reserved */ /* (note) */
1218 DE_BLAP_MEAS_REP, /* Measurement Report */
1219 DE_BLAP_RES13, /* Reserved */ /* (note) */
1220 DE_BLAP_CAUSE, /* Cause */
1221 DE_BLAP_RRLP_FLG, /* RRLP Flag */
1222 DE_BLAP_RRLP_IE, /* RRLP IE */
1223 DE_BLAP_CELL_ID_LIST, /* Cell Identity List */
1224 DE_BLAP_ENH_MEAS_REP, /* Enhanced Measurement Report */
1225 DE_BLAP_LAC, /* Location Area Code */
1226 DE_BLAP_FREQ_LIST, /* Frequency List */
1227 DE_BLAP_MS_POW, /* MS Power */
1228 DE_BLAP_DELTA_TIME, /* Delta Timer */
1229 DE_BLAP_SERV_CELL_ID, /* Serving Cell Identifier */
1230 DE_BLAP_ENC_KEY, /* Encryption Key (Kc) */
1231 DE_BLAP_CIP_M_SET, /* Cipher Mode Setting */
1232 DE_BLAP_CH_MODE, /* Channel Mode */
1233 DE_BLAP_POLL_REP, /* Polling Repetition */
1234 DE_BLAP_PKT_CH_DESC, /* Packet Channel Description */
1235 DE_BLAP_TLLI, /* TLLI */
1236 DE_BLAP_TFI, /* TFI */
1237 DE_BLAP_START_TIME, /* Starting Time */
1238 BSSLAP_NONE /* NONE */
1239}
1240bsslap_elem_idx_t;
1241
1242 typedef enum
1243{
1244 /* Mobility Management Information Elements [3] 10.5.3 */
1245 DE_AUTH_PARAM_RAND, /* Authentication Parameter RAND */
1246 DE_AUTH_PARAM_AUTN, /* Authentication Parameter AUTN (UMTS and EPS authentication challenge) */
1247 DE_AUTH_RESP_PARAM, /* Authentication Response Parameter */
1248 DE_AUTH_RESP_PARAM_EXT, /* Authentication Response Parameter (extension) (UMTS authentication challenge only) */
1249 DE_AUTH_FAIL_PARAM, /* Authentication Failure Parameter (UMTS and EPS authentication challenge) */
1250 DE_CM_SRVC_TYPE, /* CM Service Type */
1251 DE_ID_TYPE, /* Identity Type */
1252 DE_LOC_UPD_TYPE, /* Location Updating Type */
1253 DE_NETWORK_NAME, /* Network Name */
1254 DE_REJ_CAUSE, /* Reject Cause */
1255 DE_FOP, /* Follow-on Proceed */
1256 DE_TIME_ZONE, /* Time Zone */
1257 DE_TIME_ZONE_TIME, /* Time Zone and Time */
1258 DE_CTS_PERM, /* CTS Permission */
1259 DE_LSA_ID, /* LSA Identifier */
1260 DE_DAY_SAVING_TIME, /* Daylight Saving Time */
1261 DE_EMERGENCY_NUM_LIST, /* Emergency Number List */
1262 DE_ADD_UPD_PARAMS, /* Additional update parameters */
1263 DE_MM_TIMER, /* MM Timer */
1264 /* Call Control Information Elements 10.5.4 */
1265 DE_AUX_STATES, /* Auxiliary States */
1266 DE_BEARER_CAP, /* Bearer Capability */
1267 DE_CC_CAP, /* Call Control Capabilities */
1268 DE_CALL_STATE, /* Call State */
1269 DE_CLD_PARTY_BCD_NUM, /* Called Party BCD Number */
1270 DE_CLD_PARTY_SUB_ADDR, /* Called Party Subaddress */
1271 DE_CLG_PARTY_BCD_NUM, /* Calling Party BCD Number */
1272 DE_CLG_PARTY_SUB_ADDR, /* Calling Party Subaddress */
1273 DE_CAUSE, /* Cause */
1274 DE_CLIR_SUP, /* CLIR Suppression */
1275 DE_CLIR_INV, /* CLIR Invocation */
1276 DE_CONGESTION, /* Congestion Level */
1277 DE_CONN_NUM, /* Connected Number */
1278 DE_CONN_SUB_ADDR, /* Connected Subaddress */
1279 DE_FACILITY, /* Facility */
1280 DE_HLC, /* High Layer Compatibility */
1281 DE_KEYPAD_FACILITY, /* Keypad Facility */
1282 DE_LLC, /* Low Layer Compatibility */
1283 DE_MORE_DATA, /* More Data */
1284 DE_NOT_IND, /* Notification Indicator */
1285 DE_PROG_IND, /* Progress Indicator */
1286 DE_RECALL_TYPE, /* Recall type $(CCBS)$ */
1287 DE_RED_PARTY_BCD_NUM, /* Redirecting Party BCD Number */
1288 DE_RED_PARTY_SUB_ADDR, /* Redirecting Party Subaddress */
1289 DE_REPEAT_IND, /* Repeat Indicator */
1290 DE_REV_CALL_SETUP_DIR, /* Reverse Call Setup Direction */
1291 DE_SETUP_CONTAINER, /* SETUP Container $(CCBS)$ */
1292 DE_SIGNAL, /* Signal */
1293 DE_SS_VER_IND, /* SS Version Indicator */
1294 DE_USER_USER, /* User-user */
1295 DE_ALERT_PATTERN, /* Alerting Pattern $(NIA)$ */
1296 DE_ALLOWED_ACTIONS, /* Allowed Actions $(CCBS)$ */
1297 DE_SI, /* Stream Identifier */
1298 DE_NET_CC_CAP, /* Network Call Control Capabilities */
1299 DE_CAUSE_NO_CLI, /* Cause of No CLI */
1300 DE_SUP_CODEC_LIST, /* Supported Codec List */
1301 DE_SERV_CAT, /* Service Category */
1302 DE_REDIAL, /* 10.5.4.34 Redial */
1303 DE_NET_INIT_SERV_UPG, /* 10.5.4.35 Network-initiated Service Upgrade ind */
1304 /* Short Message Service Information Elements [5] 8.1.4 */
1305 DE_CP_USER_DATA, /* CP-User Data */
1306 DE_CP_CAUSE, /* CP-Cause */
1307 /* Tests procedures information elements 3GPP TS 44.014 6.4.0 and 3GPP TS 34.109 6.4.0 */
1308 DE_TP_SUB_CHANNEL, /* Close TCH Loop Cmd Sub-channel */
1309 DE_TP_ACK, /* Open Loop Cmd Ack */
1310 DE_TP_LOOP_TYPE, /* Close Multi-slot Loop Cmd Loop type*/
1311 DE_TP_LOOP_ACK, /* Close Multi-slot Loop Ack Result */
1312 DE_TP_TESTED_DEVICE, /* Test Interface Tested device */
1313 DE_TP_PDU_DESCRIPTION, /* GPRS Test Mode Cmd PDU description */
1314 DE_TP_MODE_FLAG, /* GPRS Test Mode Cmd Mode flag */
1315 DE_TP_EGPRS_MODE_FLAG, /* EGPRS Start Radio Block Loopback Cmd Mode flag */
1316 DE_TP_MS_POSITIONING_TECHNOLOGY, /* MS Positioning Technology */
1317 DE_TP_UE_TEST_LOOP_MODE, /* Close UE Test Loop Mode */
1318 DE_TP_UE_POSITIONING_TECHNOLOGY, /* UE Positioning Technology */
1319 DE_TP_RLC_SDU_COUNTER_VALUE, /* RLC SDU Counter Value */
1320 DE_TP_EPC_UE_TEST_LOOP_MODE, /* UE Test Loop Mode */
1321 DE_TP_EPC_UE_TL_A_LB_SETUP, /* UE Test Loop Mode A LB Setup */
1322 DE_TP_EPC_UE_TL_B_LB_SETUP, /* UE Test Loop Mode B LB Setup */
1323 DE_TP_EPC_UE_TL_C_SETUP, /* UE Test Loop Mode C Setup */
1324 DE_TP_EPC_UE_TL_D_SETUP, /* UE Test Loop Mode D Setup */
1325 DE_TP_EPC_UE_TL_E_SETUP, /* UE Test Loop Mode E Setup */
1326 DE_TP_EPC_UE_TL_F_SETUP, /* UE Test Loop Mode F Setup */
1327 DE_TP_EPC_UE_TL_GH_SETUP, /* UE Test Loop Mode GH Setup */
1328 DE_TP_EPC_UE_POSITIONING_TECHNOLOGY,/* UE Positioning Technology */
1329 DE_TP_EPC_MBMS_PACKET_COUNTER_VALUE,/* MBMS Packet Counter Value */
1330 DE_TP_EPC_ELLIPSOID_POINT_WITH_ALT, /* ellipsoidPointWithAltitude */
1331 DE_TP_EPC_HORIZONTAL_VELOCITY, /* horizontalVelocity */
1332 DE_TP_EPC_GNSS_TOD_MSEC, /* gnss-TOD-msec */
1333 /* Group Call Control Service Information Elements ETSI TS 100 948 V8.1.0 (GSM 04.68 version 8.1.0 Release 1999) */
1334 DE_GCC_CALL_REF, /* Call Reference */
1335 DE_GCC_CALL_STATE, /* Call state */
1336 DE_GCC_CAUSE, /* Cause */
1337 DE_GCC_ORIG_IND, /* Originator indication */
1338 DE_GCC_STATE_ATTR, /* State attributes */
1339 /* Broadcast Call Control Information Elements ETSI TS 144 069 V10.0.0 (3GPP TS 44.069 version 10.0.0 Release 10) */
1340 DE_BCC_CALL_REF, /* Call Reference */
1341 DE_BCC_CALL_STATE, /* Call state */
1342 DE_BCC_CAUSE, /* Cause */
1343 DE_BCC_ORIG_IND, /* Originator indication */
1344 DE_BCC_STATE_ATTR, /* State attributes */
1345 DE_BCC_COMPR_OTDI, /* Compressed otdi */
1346 DE_NONE /* NONE */
1347}
1348dtap_elem_idx_t;
1349
1350 typedef enum
1351{
1352 /* GPRS Mobility Management Information Elements [3] 10.5.5 */
1353 DE_ADD_UPD_TYPE, /* [11] 10.5.5.0 Additional Update Type */
1354 DE_ATTACH_RES, /* [7] 10.5.5.1 Attach Result*/
1355 DE_ATTACH_TYPE, /* [7] 10.5.5.2 Attach Type */
1356 DE_CIPH_ALG, /* [7] 10.5.5.3 Ciphering Algorithm */
1357 DE_INTEG_ALG, /* [11] 10.5.5.3a Integrity Algorithm */
1358 DE_TMSI_STAT, /* [7] 10.5.5.4 TMSI Status */
1359 DE_DETACH_TYPE, /* [7] 10.5.5.5 Detach Type */
1360 DE_DRX_PARAM, /* [7] 10.5.5.6 DRX Parameter */
1361 DE_FORCE_TO_STAND, /* [7] 10.5.5.7 Force to Standby */
1362 DE_FORCE_TO_STAND_H, /* [7] 10.5.5.7 Force to Standby - Info is in the high nibble */
1363 DE_P_TMSI_SIG, /* [7] 10.5.5.8 P-TMSI Signature */
1364 DE_P_TMSI_SIG_2, /* [7] 10.5.5.8a P-TMSI Signature 2 */
1365 DE_ID_TYPE_2, /* [7] 10.5.5.9 Identity Type 2 */
1366 DE_IMEISV_REQ, /* [7] 10.5.5.10 IMEISV Request */
1367 DE_REC_N_PDU_NUM_LIST, /* [7] 10.5.5.11 Receive N-PDU Numbers List */
1368 DE_MS_NET_CAP, /* [7] 10.5.5.12 MS Network Capability */
1369 DE_MS_RAD_ACC_CAP, /* [7] 10.5.5.12a MS Radio Access Capability */
1370 DE_GMM_CAUSE, /* [7] 10.5.5.14 GMM Cause */
1371 DE_RAI, /* [7] 10.5.5.15 Routing Area Identification */
1372 DE_RAI_2, /* [7] 10.5.5.15a Routing Area Identification 2 */
1373 DE_UPD_RES, /* [7] 10.5.5.17 Update Result */
1374 DE_UPD_TYPE, /* [7] 10.5.5.18 Update Type */
1375 DE_AC_REF_NUM, /* [7] 10.5.5.19 A&C Reference Number */
1376 DE_AC_REF_NUM_H, /* A&C Reference Number - Info is in the high nibble */
1377 DE_SRVC_TYPE, /* [7] 10.5.5.20 Service Type */
1378 DE_CELL_NOT, /* [7] 10.5.5.21 Cell Notification */
1379 DE_PS_LCS_CAP, /* [7] 10.5.5.22 PS LCS Capability */
1380 DE_NET_FEAT_SUP, /* [7] 10.5.5.23 Network Feature Support */
1381 DE_ADD_NET_FEAT_SUP, /* [11] 10.5.5.23a Additional network feature support */
1382 DE_RAT_INFO_CONTAINER, /* [7] 10.5.5.24 Inter RAT information container */
1383 DE_REQ_MS_INFO, /* [7] 10.5.5.25 Requested MS information */
1384 DE_UE_NETWORK_CAP, /* [7] 10.5.5.26 UE network capability */
1385 DE_EUTRAN_IRAT_INFO_CONTAINER, /* [7] 10.5.5.27 E-UTRAN inter RAT information container */
1386 DE_VOICE_DOMAIN_PREF, /* [7] 10.5.5.28 Voice domain preference and UE's usage setting */
1387 DE_PTMSI_TYPE, /* [10] 10.5.5.29 P-TMSI type */
1388 DE_LAI_2, /* [10] 10.5.5.30 Location Area Identification 2 */
1389 DE_NET_RES_ID_CONT, /* [11] 10.5.5.31 Network resource identifier container */
1390 DE_EXT_DRX_PARAMS, /* [11] 10.5.5.32 Extended DRX parameters */
1391 DE_MAC, /* [11] 10.5.5.33 Message Authentication Code */
1392 DE_UP_INTEG_IND, /* [11] 10.5.5.34 User Plane integrity indicator */
1393 DE_DCN_ID, /* [12] 10.5.5.35 DCN-ID */
1394 DE_PLMN_ID_CN_OPERATOR, /* [12] 10.5.5.36 PLMN identity of the CN operator */
1395 DE_NON_3GPP_NW_PROV_POL, /* [12] 10.5.5.37 Non-3GPP NW provided policies */
1396 /* Session Management Information Elements [3] 10.5.6 */
1397 DE_ACC_POINT_NAME, /* Access Point Name */
1398 DE_NET_SAPI, /* Network Service Access Point Identifier */
1399 DE_PRO_CONF_OPT, /* Protocol Configuration Options */
1400 DE_EXT_PRO_CONF_OPT, /* Extended Protocol Configuration Options */
1401 DE_PD_PRO_ADDR, /* Packet Data Protocol Address */
1402 DE_QOS, /* Quality Of Service */
1403 DE_RE_ATTEMPT_IND, /* Re-attempt indicator */
1404 DE_EXT_QOS, /* [13] Extended quality of service */
1405 DE_SM_CAUSE, /* SM Cause */
1406 DE_SM_CAUSE_2, /* SM Cause 2 */
1407 DE_LINKED_TI, /* Linked TI */
1408 DE_LLC_SAPI, /* LLC Service Access Point Identifier */
1409 DE_TEAR_DOWN_IND, /* Tear Down Indicator */
1410 DE_PACKET_FLOW_ID, /* Packet Flow Identifier */
1411 DE_TRAFFIC_FLOW_TEMPLATE, /* Traffic Flow Template */
1412 DE_TMGI, /* Temporary Mobile Group Identity (TMGI) */
1413 DE_MBMS_BEARER_CAP, /* MBMS bearer capabilities */
1414 DE_MBMS_PROT_CONF_OPT, /* MBMS protocol configuration options */
1415 DE_ENH_NSAPI, /* Enhanced network service access point identifier */
1416 DE_REQ_TYPE, /* Request type */
1417 DE_SM_NOTIF_IND, /* Notification indicator */
1418 DE_SM_CONNECTIVITY_TYPE, /* Connectivity type */
1419 DE_SM_WLAN_OFFLOAD_ACCEPT, /* WLAN offload acceptability */
1420 DE_NBIFOM_CONT, /* NBIFOM container */
1421 /* GPRS Common Information Elements [8] 10.5.7 */
1422 DE_PDP_CONTEXT_STAT, /* [8] 10.5.7.1 PDP Context Status */
1423 DE_RAD_PRIO, /* [8] 10.5.7.2 Radio Priority */
1424 DE_GPRS_TIMER, /* [8] 10.5.7.3 GPRS Timer */
1425 DE_GPRS_TIMER_2, /* [8] 10.5.7.4 GPRS Timer 2 */
1426 DE_GPRS_TIMER_3, /* [10] 10.5.7.4a GPRS Timer 3 */
1427 DE_RAD_PRIO_2, /* [8] 10.5.7.5 Radio Priority 2 */
1428 DE_MBMS_CTX_STATUS, /* [8] 10.5.7.6 MBMS context status */
1429 DE_UPLINK_DATA_STATUS, /* [8] 10.5.7.7 Uplink data status */
1430 DE_DEVICE_PROPERTIES, /* [10] 10.5.7.8 Device properties */
1431 DE_GM_NONE /* NONE */
1432}
1433gm_elem_idx_t;
1434
1435 typedef enum
1436{
1437 /* Radio Resource Management Information Elements 10.5.2, most are from 10.5.1 */
1438 DE_RR_BA_RANGE, /* [3] 10.5.2.1a BA Range */
1439 DE_RR_CELL_CH_DSC, /* [3] 10.5.2.1b Cell Channel Description */
1440 DE_RR_BA_LIST_PREF, /* [3] 10.5.2.1c BA List Pref */
1441 DE_RR_UTRAN_FREQ_LIST, /* [3] 10.5.2.1d UTRAN Frequency List */
1442 DE_RR_CELL_SELECT_INDIC, /* [3] 10.5.2.1e Cell selection indicator after release of all TCH and SDCCH IE */
1443 DE_RR_CELL_DSC, /* 10.5.2.2 RR Cell Description */
1444 DE_RR_CELL_OPT_BCCH, /* [3] 10.5.2.3 Cell Options (BCCH) */
1445 DE_RR_CELL_OPT_SACCH, /* [3] 10.5.2.3a Cell Options (SACCH) */
1446 DE_RR_CELL_SEL_PARAM, /* [3] 10.5.2.4 Cell Selection Parameters */
1447/*
1448 * [3] 10.5.2.4a (void)
1449 */
1450 DE_RR_CH_DSC, /* [3] 10.5.2.5 Channel Description */
1451 DE_RR_CH_DSC2, /* [3] 10.5.2.5a Channel Description 2 */
1452 DE_RR_CH_DSC3, /* [3] 10.5.2.5c Channel Description 3 */
1453 DE_RR_CH_MODE, /* [3] 10.5.2.6 Channel Mode */
1454 DE_RR_CH_MODE2, /* [3] 10.5.2.7 Channel Mode 2 */
1455 DE_RR_UTRAN_CM, /* [3] 10.5.2.7a UTRAN Classmark */
1456/* [3] 10.5.2.7b (void) */
1457 DE_RR_CM_ENQ_MASK, /* [3] 10.5.2.7c Classmark Enquiry Mask */
1458/* [3] 10.5.2.7d GERAN Iu Mode Classmark information element */
1459 DE_RR_CHNL_NEEDED, /* [3] 10.5.2.8 Channel Needed
1460 * [3] 10.5.2.8a (void) */
1461 DE_RR_CHNL_REQ_DESC2, /* [3] 10.5.2.8b Channel Request Description 2 */
1462 DE_RR_CIP_MODE_SET, /* [3] 10.5.2.9 Cipher Mode Setting */
1463 DE_RR_CIP_MODE_RESP, /* [3] 10.5.2.10 Cipher Response */
1464 DE_RR_CTRL_CH_DESC, /* [3] 10.5.2.11 Control Channel Description */
1465 DE_RR_DTM_INFO_DETAILS, /* [3] 10.5.2.11a DTM Information Details */
1466 DE_RR_DYN_ARFCN_MAP, /* [3] 10.5.2.11b Dynamic ARFCN Mapping */
1467 DE_RR_FREQ_CH_SEQ, /* [3] 10.5.2.12 Frequency Channel Sequence */
1468 DE_RR_FREQ_LIST, /* [3] 10.5.2.13 Frequency List */
1469 DE_RR_FREQ_SHORT_LIST, /* [3] 10.5.2.14 Frequency Short List */
1470 DE_RR_FREQ_SHORT_LIST2, /* [3] 10.5.2.14a Frequency Short List 2 */
1471/* [3] 10.5.2.14b Group Channel Description */
1472 DE_RR_GPRS_RESUMPTION, /* [3] 10.5.2.14c GPRS Resumption */
1473 DE_RR_GPRS_BROADCAST_INFORMATION, /* [3] 10.5.2.14d GPRS broadcast information */
1474/* [3] 10.5.2.14e Enhanced DTM CS Release Indication*/
1475
1476 DE_RR_HO_REF, /* 10.5.2.15 Handover Reference */
1477
1478 DE_RR_IA_REST_OCT, /* [3] 10.5.2.16 IA Rest Octets */
1479 DE_RR_IAR_REST_OCT, /* [3] 10.5.2.17 IAR Rest Octets */
1480 DE_RR_IAX_REST_OCT, /* [3] 10.5.2.18 IAX Rest Octets */
1481 DE_RR_L2_PSEUDO_LEN, /* [3] 10.5.2.19 L2 Pseudo Length */
1482 DE_RR_MEAS_RES, /* [3] 10.5.2.20 Measurement Results */
1483 /* [3] 10.5.2.20a GPRS Measurement Results */
1484 DE_RR_MOB_ALL, /* [3] 10.5.2.21 Mobile Allocation */
1485 DE_RR_MOB_TIME_DIFF, /* [3] 10.5.2.21a Mobile Time Difference */
1486 DE_RR_MULTIRATE_CONF, /* [3] 10.5.2.21aa MultiRate configuration */
1487 DE_RR_MULT_ALL, /* [3] 10.5.2.21b Multislot Allocation */
1488/*
1489 * [3] 10.5.2.21c NC mode
1490 */
1491 DE_RR_NEIGH_CELL_DESC, /* [3] 10.5.2.22 Neighbour Cell Description */
1492 DE_RR_NEIGH_CELL_DESC2, /* [3] 10.5.2.22a Neighbour Cell Description 2 */
1493/*
1494 * [3] 10.5.2.22b (void)
1495 * [3] 10.5.2.22c NT/N Rest Octets */
1496 DE_RR_P1_REST_OCT, /* [3] 10.5.2.23 P1 Rest Octets */
1497 DE_RR_P2_REST_OCT, /* [3] 10.5.2.24 P2 Rest Octets */
1498 DE_RR_P3_REST_OCT, /* [3] 10.5.2.25 P3 Rest Octets */
1499 DE_RR_PACKET_CH_DESC, /* [3] 10.5.2.25a Packet Channel Description */
1500 DE_RR_DED_MOD_OR_TBF, /* [3] 10.5.2.25b Dedicated mode or TBF */
1501 DE_RR_PKT_UL_ASS, /* [3] 10.5.2.25c RR Packet Uplink Assignment */
1502 DE_RR_PKT_DL_ASS, /* [3] 10.5.2.25d RR Packet Downlink Assignment */
1503 DE_RR_PKT_DL_ASS_TYPE2, /* [3] 10.5.2.25d RR Packet Downlink Assignment Type 2 */
1504 DE_RR_PAGE_MODE, /* [3] 10.5.2.26 Page Mode */
1505 DE_RR_NCC_PERM, /* [3] 10.5.2.27 NCC Permitted */
1506 DE_RR_POW_CMD, /* 10.5.2.28 Power Command */
1507 DE_RR_POW_CMD_AND_ACC_TYPE, /* 10.5.2.28a Power Command and access type */
1508 DE_RR_RACH_CTRL_PARAM, /* [3] 10.5.2.29 RACH Control Parameters */
1509 DE_RR_REQ_REF, /* [3] 10.5.2.30 Request Reference */
1510 DE_RR_CAUSE, /* 10.5.2.31 RR Cause */
1511 DE_RR_SYNC_IND, /* 10.5.2.39 Synchronization Indication */
1512 DE_RR_SI1_REST_OCT, /* [3] 10.5.2.32 SI1 Rest Octets */
1513/* [3] 10.5.2.33 SI 2bis Rest Octets */
1514 DE_RR_SI2TER_REST_OCT, /* [3] 10.5.2.33a SI 2ter Rest Octets */
1515 DE_RR_SI2QUATER_REST_OCT, /* [3] 10.5.2.33b SI 2quater Rest Octets */
1516 DE_RR_SI3_REST_OCT, /* [3] 10.5.2.34 SI3 Rest Octets */
1517 DE_RR_SI4_REST_OCT, /* [3] 10.5.2.35 SI4 Rest Octets */
1518 DE_RR_SI6_REST_OCT, /* [3] 10.5.2.35a SI6 Rest Octets */
1519/* [3] 10.5.2.36 SI 7 Rest Octets
1520 * [3] 10.5.2.37 SI 8 Rest Octets
1521 * [3] 10.5.2.37a SI 9 Rest Octets
1522 */
1523 DE_RR_SI13_REST_OCT, /* [3] 10.5.2.37b SI13 Rest Octets */
1524/* [3] 10.5.2.37c (void)
1525 * [3] 10.5.2.37d (void)
1526 * [3] 10.5.2.37e SI 16 Rest Octets
1527 * [3] 10.5.2.37f SI 17 Rest Octets
1528 * [3] 10.5.2.37g SI 19 Rest Octets
1529 * [3] 10.5.2.37h SI 18 Rest Octets
1530 * [3] 10.5.2.37i SI 20 Rest Octets */
1531 DE_RR_SI21_REST_OCT, /* [3] 10.5.2.37m SI21 Rest Octets */
1532 DE_RR_STARTING_TIME, /* [3] 10.5.2.38 Starting Time */
1533 DE_RR_TIMING_ADV, /* [3] 10.5.2.40 Timing Advance */
1534 DE_RR_TIME_DIFF, /* [3] 10.5.2.41 Time Difference */
1535 DE_RR_TLLI, /* [3] 10.5.2.41a TLLI */
1536 DE_RR_TMSI_PTMSI, /* [3] 10.5.2.42 TMSI/P-TMSI */
1537 DE_RR_VGCS_TAR_MODE_IND, /* [3] 10.5.2.42a VGCS target mode Indication */
1538 DE_RR_VGCS_CIP_PAR, /* [3] 10.5.2.42b VGCS Ciphering Parameters */
1539
1540 DE_RR_WAIT_IND, /* [3] 10.5.2.43 Wait Indication */
1541/* [3] 10.5.2.44 SI10 rest octets $(ASCI)$ */
1542 DE_RR_EXT_MEAS_RESULT, /* [3] 10.5.2.45 Extended Measurement Results */
1543 DE_RR_EXT_MEAS_FREQ_LIST, /* [3] 10.5.2.46 Extended Measurement Frequency List */
1544 DE_RR_SUS_CAU, /* [3] 10.5.2.47 Suspension Cause */
1545 DE_RR_APDU_ID, /* [3] 10.5.2.48 APDU ID */
1546 DE_RR_APDU_FLAGS, /* [3] 10.5.2.49 APDU Flags */
1547 DE_RR_APDU_DATA, /* [3] 10.5.2.50 APDU Data */
1548 DE_RR_HO_TO_UTRAN_CMD, /* [3] 10.5.2.51 Handover To UTRAN Command */
1549/* [3] 10.5.2.52 Handover To cdma2000 Command
1550 * [3] 10.5.2.53 (void)
1551 * [3] 10.5.2.54 (void)
1552 * [3] 10.5.2.55 (void)
1553 * [3] 10.5.2.56 3G Target Cell */
1554 DE_RR_SERV_SUP, /* 10.5.2.57 Service Support */
1555/* 10.5.2.58 MBMS p-t-m Channel Description
1556 */
1557
1558 DE_RR_DED_SERV_INF, /* [3] 10.5.2.59 Dedicated Service Information */
1559
1560/*
1561 * 10.5.2.60 MPRACH Description
1562 * 10.5.2.61 Restriction Timer
1563 * 10.5.2.62 MBMS Session Identity
1564 * 10.5.2.63 Reduced group or broadcast call reference
1565 * 10.5.2.64 Talker Priority status
1566 * 10.5.2.65 Talker Identity
1567 * 10.5.2.66 Token
1568 * 10.5.2.67 PS Cause
1569 * 10.5.2.68 VGCS AMR Configuration
1570 */
1571 DE_RR_CARRIER_IND, /* 10.5.2.69 Carrier Indication */
1572 DE_RR_FEATURE_INDICATOR, /* 10.5.2.76 feature Indicator */
1573 DE_RR_EXTENDED_TSC_SET, /* 10.5.2.82 Extended TSC Set */
1574 DE_RR_EC_REQUEST_REFERENCE, /* 10.5.2.83 EC Request reference */
1575 DE_RR_EC_PKT_CH_DSC1, /* 10.5.2.84 EC Packet Channel Description Type 1 */
1576 DE_RR_EC_PKT_CH_DSC2, /* 10.5.2.85 EC Packet Channel Description Type 2 */
1577 DE_RR_EC_FUA, /* 10.5.2.86 EC Fixed Uplink Allocation */
1578
1579 DE_RR_NONE /* NONE */
1580}
1581rr_elem_idx_t;
1582
1583 typedef enum
1584{
1585 DE_EPS_CMN_ADD_INFO, /* 9.9.2.0 Additional information */
1586 DE_EPS_CMN_DEVICE_PROPERTIES, /* 9.9.2.0A Device properties */
1587 DE_EPS_CMN_EPS_BE_CTX_STATUS, /* 9.9.2.1 EPS bearer context status */
1588 DE_EPS_CMN_LOC_AREA_ID, /* 9.9.2.2 Location area identification */
1589 DE_EPS_CMN_MOB_ID, /* 9.9.2.3 Mobile identity */
1590 DE_EPS_MS_CM_2, /* 9.9.2.4 Mobile station classmark 2 */
1591 DE_EPS_MS_CM_3, /* 9.9.2.5 Mobile station classmark 3 */
1592 DE_EPS_NAS_SEC_PAR_FROM_EUTRA, /* 9.9.2.6 NAS security parameters from E-UTRA */
1593 DE_EPS_NAS_SEC_PAR_TO_EUTRA, /* 9.9.2.7 NAS security parameters to E-UTRA */
1594
1595 DE_EPS_CMN_PLM_LST, /* 9.9.2.8 PLMN list */
1596 DE_EPS_CMN_SUP_CODEC_LST, /* 9.9.2.6 9.9.2.10 Supported codec list */
1597 DE_EPS_COMMON_NONE /* NONE */
1598}
1599nas_eps_common_elem_idx_t;
1600
1601 typedef enum
1602{
1603 /* 9.9.3 EPS Mobility Management (EMM) information elements */
1604 DE_EMM_ADD_UPD_RES, /* 9.9.3.0A Additional update result */
1605 DE_EMM_ADD_UPD_TYPE, /* 9.9.3.0B Additional update type */
1606 DE_EMM_AUTH_FAIL_PAR, /* 9.9.3.1 Authentication failure parameter (dissected in packet-gsm_a_dtap.c)*/
1607 DE_EMM_AUTN, /* 9.9.3.2 Authentication parameter AUTN */
1608 DE_EMM_AUTH_PAR_RAND, /* 9.9.3.3 Authentication parameter RAND */
1609 DE_EMM_ACCESS_TECH_UTIL_CTRL, /* 9.9.3.3A Access technology utilization control */
1610 DE_EMM_AUTH_RESP_PAR, /* 9.9.3.4 Authentication response parameter */
1611 DE_EMM_SMS_SERVICES_STATUS, /* 9.9.3.4B SMS services status */
1612 DE_EMM_CSFB_RESP, /* 9.9.3.5 CSFB response */
1613 DE_EMM_DAYL_SAV_T, /* 9.9.3.6 Daylight saving time */
1614 DE_EMM_DET_TYPE, /* 9.9.3.7 Detach type */
1615 DE_EMM_DRX_PAR, /* 9.9.3.8 DRX parameter (dissected in packet-gsm_a_gm.c)*/
1616 DE_EMM_CAUSE, /* 9.9.3.9 EMM cause */
1617 DE_EMM_ATT_RES, /* 9.9.3.10 EPS attach result (Coded inline */
1618 DE_EMM_ATT_TYPE, /* 9.9.3.11 EPS attach type (Coded Inline)*/
1619 DE_EMM_EPS_MID, /* 9.9.3.12 EPS mobile identity */
1620 DE_EMM_EPS_NET_FEATURE_SUP, /* 9.9.3.12A EPS network feature support */
1621 DE_EMM_EPS_UPD_RES, /* 9.9.3.13 EPS update result ( Coded inline)*/
1622 DE_EMM_EPS_UPD_TYPE, /* 9.9.3.14 EPS update type */
1623 DE_EMM_ESM_MSG_CONT, /* 9.9.3.15 ESM message conta */
1624 DE_EMM_GPRS_TIMER, /* 9.9.3.16 GPRS timer ,See subclause 10.5.7.3 in 3GPP TS 24.008 [6]. */
1625 DE_EMM_GPRS_TIMER_2, /* 9.9.3.16A GPRS timer 2, See subclause 10.5.7.4 in 3GPP TS 24.008. */
1626 DE_EMM_GPRS_TIMER_3, /* 9.9.3.16B GPRS timer 3, See subclause 10.5.7.4a in 3GPP TS 24.008. */
1627 DE_EMM_ID_TYPE_2, /* 9.9.3.17 Identity type 2 ,See subclause 10.5.5.9 in 3GPP TS 24.008 [6]. */
1628 DE_EMM_IMEISV_REQ, /* 9.9.3.18 IMEISV request ,See subclause 10.5.5.10 in 3GPP TS 24.008 [6]. */
1629 DE_EMM_KSI_AND_SEQ_NO, /* 9.9.3.19 KSI and sequence number */
1630 DE_EMM_MS_NET_CAP, /* 9.9.3.20 MS network capability ,See subclause 10.5.5.12 in 3GPP TS 24.008 [6]. */
1631 DE_EMM_MS_NET_FEAT_SUP, /* 9.9.3.20A MS network feature support, See subclause 10.5.1.15 in 3GPP TS 24.008. */
1632 DE_EMM_NAS_KEY_SET_ID, /* 9.9.3.21 NAS key set identifier (coded inline)*/
1633 DE_EMM_NAS_MSG_CONT, /* 9.9.3.22 NAS message container */
1634 DE_EMM_NAS_SEC_ALGS, /* 9.9.3.23 NAS security algorithms */
1635 DE_EMM_NET_NAME, /* 9.9.3.24 Network name, See subclause 10.5.3.5a in 3GPP TS 24.008 [6]. */
1636 DE_EMM_NONCE, /* 9.9.3.25 Nonce */
1637 DE_EMM_PAGING_ID, /* 9.9.3.25A Paging identity */
1638 DE_EMM_P_TMSI_SIGN, /* 9.9.3.26 P-TMSI signature, See subclause 10.5.5.8 in 3GPP TS 24.008 [6]. */
1639 DE_EMM_EXT_CAUSE, /* 9.9.3.26A Extended EMM cause */
1640 DE_EMM_SERV_TYPE, /* 9.9.3.27 Service type */
1641 DE_EMM_SHORT_MAC, /* 9.9.3.28 Short MAC */
1642 DE_EMM_TZ, /* 9.9.3.29 Time zone, See subclause 10.5.3.8 in 3GPP TS 24.008 [6]. */
1643 DE_EMM_TZ_AND_T, /* 9.9.3.30 Time zone and time, See subclause 10.5.3.9 in 3GPP TS 24.008 [6]. */
1644 DE_EMM_TMSI_STAT, /* 9.9.3.31 TMSI status, See subclause 10.5.5.4 in 3GPP TS 24.008 [6]. */
1645 DE_EMM_TRAC_AREA_ID, /* 9.9.3.32 Tracking area identity */
1646 DE_EMM_TRAC_AREA_ID_LST, /* 9.9.3.33 Tracking area identity list */
1647 DE_EMM_UE_NET_CAP, /* 9.9.3.34 UE network capability */
1648 DE_EMM_UE_RA_CAP_INF_UPD_NEED, /* 9.9.3.35 UE radio capability information update needed */
1649 DE_EMM_UE_SEC_CAP, /* 9.9.3.36 UE security capability */
1650 DE_EMM_EMERG_NUM_LIST, /* 9.9.3.37 Emergency Number List */
1651 DE_EMM_EXT_EMERG_NUM_LIST, /* 9.9.3.37a Extended Emergency Number List */
1652 DE_EMM_CLI, /* 9.9.3.38 CLI */
1653 DE_EMM_SS_CODE, /* 9.9.3.39 SS Code */
1654 DE_EMM_LCS_IND, /* 9.9.3.40 LCS indicator */
1655 DE_EMM_LCS_CLIENT_ID, /* 9.9.3.41 LCS client identity */
1656 DE_EMM_GEN_MSG_CONT_TYPE, /* 9.9.3.42 Generic message container type */
1657 DE_EMM_GEN_MSG_CONT, /* 9.9.3.43 Generic message container */
1658 DE_EMM_VOICE_DMN_PREF, /* 9.9.3.44 Voice domain preference and UE's usage setting */
1659 DE_EMM_GUTI_TYPE, /* 9.9.3.45 GUTI type */
1660 DE_EMM_EXT_DRX_PARAMS, /* 9.9.3.46 Extended DRX parameters */
1661 DE_EMM_DATA_SERV_TYPE, /* 9.9.3.47 Data service type */
1662 DE_EMM_DCN_ID, /* 9.9.3.48 DCN-ID, See subclause 10.5.5.35 in 3GPP TS 24.008 */
1663 DE_EMM_NON_3GPP_NW_PROV_POL, /* 9.9.3.49 Non-3GPP NW provided policies, See subclause 10.5.5.37 in 3GPP TS 24.008 */
1664 DE_EMM_HASH_MME, /* 9.9.3.50 HashMME */
1665 DE_EMM_REPLAYED_NAS_MSG_CONT, /* 9.9.3.51 Replayed NAS message container */
1666 DE_EMM_NETWORK_POLICY, /* 9.9.3.52 Network policy */
1667 DE_EMM_UE_ADD_SEC_CAP, /* 9.9.3.53 UE additional security capability */
1668 DE_EMM_UE_STATUS, /* 9.9.3.54 UE status */
1669 DE_EMM_ADD_INFO_REQ, /* 9.9.3.55 Additional information requested */
1670 DE_EMM_CIPH_KEY_DATA, /* 9.9.3.56 Ciphering key data */
1671 DE_EMM_N1_UE_NETWORK_CAP, /* 9.9.3.57 N1 UE network capability */
1672 DE_EMM_UE_RADIO_CAP_ID_AVAIL, /* 9.9.3.58 UE radio capability ID availability */
1673 DE_EMM_UE_RADIO_CAP_ID_REQ, /* 9.9.3.59 UE radio capability ID request */
1674 DE_EMM_UE_RADIO_CAP_ID, /* 9.9.3.60 UE radio capability ID */
1675 DE_EMM_UE_RADIO_CAP_ID_DEL_IND, /* 9.9.3.61 UE radio capability ID deletion indication */
1676 DE_EMM_WUS_ASSIST_INFO, /* 9.9.3.62 WUS assistance information */
1677 DE_EMM_NB_S1_DRX_PARAM, /* 9.9.3.63 NB-S1 DRX parameter */
1678 DE_EMM_IMSI_OFFSET, /* 9.9.3.64 IMSI offset */
1679 DE_EMM_UE_REQUEST_TYPE, /* 9.9.3.65 UE request type */
1680 DE_EMM_PAGING_RESTRICTION, /* 9.9.3.66 Paging restriction */
1681 DE_EMM_EPS_ADD_REQ_RESULT, /* 9.9.3.67 EPS additional request result */
1682 DE_EMM_UNAVAIL_INFO, /* 9.9.3.69 Unavailability information */
1683 DE_EMM_UNAVAIL_CONFIG, /* 9.9.3.70 Unavailability configuration */
1684 DE_EMM_UE_INFO_REQ, /* 9.9.3.71 UE information request */
1685 DE_EMM_UE_COARSE_LOC_INFO, /* 9.9.3.72 UE coarse location information */
1686 DE_EMM_SF_SAT_OP_PARAMS, /* 9.9.3.73 S&F satellite operation parameters */
1687 DE_EMM_DATA_CONT, /* 9.9.3.74 Data container */
1688 DE_EMM_REG_WAIT_RANGE, /* 9.9.3.75 Registration wait range */
1689 DE_EMM_PLMNS_LIST_DISASTER_COND, /* 9.9.3.76 List of PLMNs to be used in disaster condition */
1690 DE_EMM_PLMN_ID, /* 9.9.3.77 PLMN identity */
1691 DE_EMM_NONE /* NONE */
1692}
1693nas_emm_elem_idx_t;
1694
1695/* 9.9.4 EPS Session Management (ESM) information elements */
1696 typedef enum
1697{
1698 DE_ESM_APN, /* 9.9.4.1 Access point name */
1699 DE_ESM_APN_AGR_MAX_BR, /* 9.9.4.2 APN aggregate maximum bit rate */
1700 DE_ESM_CONNECTIVITY_TYPE, /* 9.9.4.2A Connectivity type */
1701 DE_ESM_EPS_QOS, /* 9.9.4.3 EPS quality of service */
1702 DE_ESM_CAUSE, /* 9.9.4.4 ESM cause */
1703 DE_ESM_INF_TRF_FLG, /* 9.9.4.5 ESM information transfer flag */
1704 DE_ESM_LNKED_EPS_B_ID, /* 9.9.4.6 Linked EPS bearer identity */
1705 DE_ESM_LLC_SAPI, /* 9.9.4.7 LLC service access point identifier */
1706 DE_ESM_NOTIF_IND, /* 9.9.4.7a Notification indicator */
1707 DE_ESM_P_FLW_ID, /* 9.9.4.8 Packet flow identifier */
1708 DE_ESM_PDN_ADDR, /* 9.9.4.9 PDN address */
1709 DE_ESM_PDN_TYPE, /* 9.9.4.10 PDN type */
1710 DE_ESM_PROT_CONF_OPT, /* 9.9.4.11 Protocol configuration options */
1711 DE_ESM_QOS, /* 9.9.4.12 Quality of service */
1712 DE_ESM_RA_PRI, /* 9.9.4.13 Radio priority */
1713 DE_ESM_RE_ATTEMPT_IND, /* 9.9.4.13a Re-attempt indicator */
1714 DE_ESM_REQ_TYPE, /* 9.9.4.14 Request type */
1715 DE_ESM_TRAF_FLOW_AGR_DESC, /* 9.9.4.15 Traffic flow aggregate description */
1716 DE_ESM_TRAF_FLOW_TEMPL, /* 9.9.4.16 Traffic flow template */
1717 DE_ESM_TID, /* 9.9.4.17 Transaction identifier */
1718 DE_ESM_WLAN_OFFLOAD_ACCEPT, /* 9.9.4.18 WLAN offload acceptability */
1719 DE_ESM_NBIFOM_CONT, /* 9.9.4.19 NBIFOM container */
1720 DE_ESM_REMOTE_UE_CONTEXT_LIST, /* 9.9.4.20 Remote UE context list */
1721 DE_ESM_PKMF_ADDRESS, /* 9.9.4.21 PKMF address */
1722 DE_ESM_HDR_COMPR_CONFIG, /* 9.9.4.22 Header compression configuration */
1723 DE_ESM_CTRL_PLANE_ONLY_IND, /* 9.9.4.23 Control plane only indication */
1724 DE_ESM_USER_DATA_CONT, /* 9.9.4.24 User data container */
1725 DE_ESM_REL_ASSIST_IND, /* 9.9.4.25 Release assistance indication */
1726 DE_ESM_EXT_PCO, /* 9.9.4.26 Extended protocol configuration options */
1727 DE_ESM_HDR_COMPR_CONFIG_STATUS, /* 9.9.4.27 Header compression configuration status */
1728 DE_ESM_SERV_PLMN_RATE_CTRL, /* 9.9.4.28 Serving PLMN rate control */
1729 DE_ESM_EXT_APN_AGR_MAX_BR, /* 9.9.4.29 Extended APN aggregate maximum bit rate */
1730 DE_ESM_EXT_EPS_QOS, /* 9.9.4.30 Extended EPS quality of service */
1731 DE_ESM_NONE /* NONE */
1732}
1733nas_esm_elem_idx_t;
1734
1735 typedef enum
1736{
1737
1738 DE_SGSAP_IMSI, /* 9.4.6 IMSI*/
1739 DE_SGSAP_VLR_NAME, /* 9.4.22 VLR name*/
1740 DE_SGSAP_TMSI, /* 9.4.20 TMSI */
1741 DE_SGSAP_LOC_AREA_ID, /* 9.4.11 Location area identifier */
1742 DE_SGSAP_CH_NEEDED, /* 9.4.23 Channel Needed */
1743 DE_SGSAP_EMLPP_PRIO, /* 9.4.24 eMLPP Priority*/
1744 DE_SGSAP_TMSI_STATUS, /* 9.4.21 TMSI status */
1745 DE_SGSAP_SGS_CAUSE, /* 9.4.18 SGs cause*/
1746 DE_SGSAP_MME_NAME, /* 9.4.13 MME name*/
1747 DE_SGSAP_EPS_LOC_UPD_TYPE, /* 9.4.2 EPS location update type*/
1748 DE_SGSAP_GLOBAL_CN_ID, /* 9.4.4 Global CN-Id*/
1749
1750 DE_SGSAP_UDEF_11, /* Undefined */
1751 DE_SGSAP_UDEF_12, /* Undefined */
1752
1753 DE_SGSAP_MID, /* 9.4.14 Mobile identity*/
1754 DE_SGSAP_REJ_CAUSE, /* 9.4.16 Reject cause */
1755 DE_SGSAP_IMSI_DET_EPS, /* 9.4.7 IMSI detach from EPS service type */
1756 DE_SGSAP_IMSI_DET_NON_EPS, /* 9.4.8 IMSI detach from non-EPS service type */
1757
1758 DE_SGSAP_IMEISV, /* 9.4.5 IMEISV */
1759 DE_SGSAP_NAS_MSG_CONTAINER, /* 9.4.15 NAS message container*/
1760 DE_SGSAP_MM_INFO, /* 9.4.12 MM information*/
1761
1762 DE_SGSAP_UDEF_20, /* Undefined */
1763 DE_SGSAP_UDEF_21, /* Undefined */
1764 DE_SGSAP_UDEF_22, /* Undefined */
1765
1766 DE_SGSAP_ERR_MSG, /* 9.4.3 Erroneous message*/
1767 DE_SGSAP_CLI, /* 9.4.1 CLI */
1768 DE_SGSAP_LCS_CLIENT_ID, /* 9.4.9 LCS client identity */
1769 DE_SGSAP_LCS_INDIC, /* 9.4.10 LCS indicator */
1770 DE_SGSAP_SS_CODE, /* 9.4.19 SS code */
1771 DE_SGSAP_SERV_INDIC, /* 9.4.17 Service indicator */
1772 DE_SGSAP_UE_TZ, /* 9.4.21b UE Time Zone */
1773 DE_SGSAP_MSC_2, /* 9.4.14a Mobile Station Classmark 2 */
1774 DE_SGSAP_TAID, /* 9.4.21a Tracking Area Identity */
1775 DE_SGSAP_ECGI, /* 9.4.3a E-UTRAN Cell Global Identity */
1776 DE_SGSAP_UE_EMM_MODE, /* 9.4.21c UE EMM mode*/
1777 DE_SGSAP_ADD_PAGING_IND, /* 9.4.25 Additional paging indicators */
1778 DE_SGSAP_TMSI_BASED_NRI_CONT, /* 9.4.26 TMSI based NRI container */
1779 DE_SGSAP_SELECTED_CS_DMN_OP, /* 9.4.27 Selected CS domain operator */
1780
1781 DE_SGAP_NONE /* NONE */
1782}
1783sgsap_elem_idx_t;
1784
1785 typedef enum
1786{
1787 DE_NAS_5GS_MM_5GMM_CAP, /* 9.11.3.1 5GMM capability*/
1788 DE_NAS_5GS_MM_5GMM_CAUSE, /* 9.11.3.2 5GMM cause*/
1789 DE_NAS_5GS_MM_5GS_DRX_PARAM, /* 9.11.3.2A 5GS DRX parameters*/
1790 DE_NAS_5GS_MM_5GS_IDENTITY_TYPE, /* 9.11.3.3 5GS identity type*/
1791 DE_NAS_5GS_MM_5GS_MOBILE_ID, /* 9.11.3.4 5GS mobile identity*/
1792 DE_NAS_5GS_MM_5GS_NW_FEAT_SUP, /* 9.11.3.5 5GS network feature support*/
1793 DE_NAS_5GS_MM_5GS_REG_RES, /* 9.11.3.6 5GS registration result*/
1794 DE_NAS_5GS_MM_5GS_REG_TYPE, /* 9.11.3.7 5GS registration type*/
1795 DE_NAS_5GS_MM_5GS_TA_ID, /* 9.11.3.8 5GS tracking area identity */
1796 DE_NAS_5GS_MM_5GS_TA_ID_LIST, /* 9.11.3.9 5GS tracking area identity list */
1797 DE_NAS_5GS_MM_UPDATE_TYPE, /* 9.11.3.9A 5GS update type */
1798 DE_NAS_5GS_MM_ABBA, /* 9.11.3.10 ABBA */
1799 /* 9.11.3.11 void */
1800 DE_NAS_5GS_MM_ADD_5G_SEC_INF, /* 9.11.3.12 Additional 5G security information */
1801 DE_NAS_5GS_MM_ADD_INF_REQ, /* 9.11.3.12A Additional information requested */
1802 DE_NAS_5GS_MM_ALLOW_PDU_SES_STS, /* 9.11.3.13 Allowed PDU session status*/
1803 DE_NAS_5GS_MM_AUT_FAIL_PAR, /* 9.11.3.14 Authentication failure parameter */
1804 DE_NAS_5GS_MM_AUT_PAR_AUTN, /* 9.11.3.15 Authentication parameter AUTN*/
1805 DE_NAS_5GS_MM_AUT_PAR_RAND, /* 9.11.3.16 Authentication parameter RAND*/
1806 DE_NAS_5GS_MM_AUT_RESP_PAR, /* 9.11.3.17 Authentication response parameter */
1807 DE_NAS_5GS_MM_CONF_UPD_IND, /* 9.11.3.18 Configuration update indication*/
1808 DE_NAS_5GS_MM_CAG_INFORMATION_LIST, /* 9.11.3.18A CAG information list*/
1809 DE_NAS_5GS_MM_CIOT_SMALL_DATA_CONT, /* 9.11.3.18B CIoT small data container */
1810 DE_NAS_5GS_MM_CIPHERING_KEY_DATA, /* 9.11.3.18C Ciphering key data*/
1811 DE_NAS_5GS_MM_CTRL_PLANE_SERVICE_TYPE, /* 9.11.3.18D Control plane service type*/
1812 DE_NAS_5GS_MM_DLGT_SAVING_TIME, /* 9.11.3.19 Daylight saving time*/
1813 DE_NAS_5GS_MM_DE_REG_TYPE, /* 9.11.3.20 De-registration type*/
1814 /* 9.11.3.21 Void */
1815 /* 9.11.3.22 Void*/
1816 DE_NAS_5GS_MM_EMRG_NR_LIST, /* 9.11.3.23 Emergency number list */
1817 DE_NAS_5GS_MM_EPS_BEARER_CTX_STATUS, /* 9.11.3.23A EPS bearer context status */
1818 DE_NAS_5GS_MM_EPS_NAS_MSG_CONT, /* 9.11.3.24 EPS NAS message container */
1819 DE_NAS_5GS_MM_EPS_NAS_SEC_ALGO, /* 9.11.3.25 EPS NAS security algorithms */
1820 DE_NAS_5GS_MM_EXT_EMERG_NUM_LIST, /* 9.11.3.26 Extended emergency number list */
1821 DE_NAS_5GS_MM_EXTENDED_DRX_PARAMETERS, /* 9.11.3.26A Extended DRX parameters */
1822 /* 9.11.3.27 Void*/
1823 DE_NAS_5GS_MM_IMEISV_REQ, /* 9.11.3.28 IMEISV request*/
1824 DE_NAS_5GS_MM_LADN_INDIC, /* 9.11.3.29 LADN indication*/
1825 DE_NAS_5GS_MM_LADN_INF, /* 9.11.3.30 LADN information */
1826 DE_NAS_5GS_MM_MICO_IND, /* 9.11.3.31 MICO indication*/
1827 DE_NAS_5GS_MM_MA_PDU_SES_INF, /* 9.11.3.31A MA PDU session information */
1828 DE_NAS_5GS_MM_MAPPED_NSSAI, /* 9.11.3.31B Mapped NSSAI */
1829 DE_NAS_5GS_MM_MOBILE_STATION_CLSMK_2, /* 9.11.3.31C Mobile station classmark 2 */
1830 DE_NAS_5GS_MM_NAS_KEY_SET_ID, /* 9.11.3.32 NAS key set identifier*/
1831 DE_NAS_5GS_MM_NAS_KEY_SET_ID_H1, /* 9.11.3.32 NAS key set identifier*/
1832 DE_NAS_5GS_MM_NAS_MSG_CONT, /* 9.11.3.33 NAS message container*/
1833 DE_NAS_5GS_MM_NAS_SEC_ALGO, /* 9.11.3.34 NAS security algorithms*/
1834 DE_NAS_5GS_MM_NW_NAME, /* 9.11.3.35 Network name*/
1835 DE_NAS_5GS_MM_NW_SLICING_IND, /* 9.11.3.36 Network slicing indication */
1836 DE_NAS_5GS_MM_NW_NON_3GPP_NW_PROV_POL, /* 9.11.3.36A Non-3GPP NW provided policies */
1837 DE_NAS_5GS_MM_NSSAI, /* 9.11.3.37 NSSAI*/
1838 DE_NAS_5GS_MM_NSSAI_INC_MODE, /* 9.11.3.37A NSSAI inclusion mode */
1839 DE_NAS_5GS_MM_OP_DEF_ACC_CAT_DEF, /* 9.11.3.38 Operator-defined access category definitions */
1840 DE_NAS_5GS_MM_PLD_CONT, /* 9.11.3.39 Payload container*/
1841 DE_NAS_5GS_MM_PLD_CONT_TYPE, /* 9.11.3.40 Payload container type*/
1842 DE_NAS_5GS_MM_PDU_SES_ID_2, /* 9.11.3.41 PDU session identity 2 */
1843 DE_NAS_5GS_MM_PDU_SES_REACT_RES, /* 9.11.3.42 PDU session reactivation result*/
1844 DE_NAS_5GS_MM_PDU_SES_REACT_RES_ERR_C, /* 9.11.3.43 PDU session reactivation result error cause */
1845 DE_NAS_5GS_MM_PDU_SES_STATUS, /* 9.11.3.44 PDU session status */
1846 DE_NAS_5GS_MM_PLMN_LIST, /* 9.11.3.45 PLMN list*/
1847 DE_NAS_5GS_MM_REJ_NSSAI, /* 9.11.3.46 Rejected NSSAI*/
1848 DE_NAS_5GS_MM_REL_ASS_IND, /* 9.11.3.46A Release assistance indication*/
1849 DE_NAS_5GS_MM_REQ_TYPE, /* 9.11.3.47 Request type */
1850 DE_NAS_5GS_MM_S1_UE_NW_CAP, /* 9.11.3.48 S1 UE network capability*/
1851 DE_NAS_5GS_MM_S1_UE_SEC_CAP, /* 9.11.3.48A S1 UE security capability*/
1852 DE_NAS_5GS_MM_SAL, /* 9.11.3.49 Service area list*/
1853 DE_NAS_5GS_MM_SERV_TYPE, /* 9.11.3.50 Service type,*/
1854 DE_NAS_5GS_MM_SMS_IND, /* 9.11.3.50A SMS indication */
1855 DE_NAS_5GS_MM_SOR_TRANSP_CONT, /* 9.11.3.51 SOR transparent container */
1856 DE_NAS_5GS_MM_SUPPORTED_CODEC_LIST, /* 9.11.3.51A Supported codec list */
1857 DE_NAS_5GS_MM_TZ, /* 9.11.3.52 Time zone*/
1858 DE_NAS_5GS_MM_TZ_AND_T, /* 9.11.3.53 Time zone and time*/
1859 DE_NAS_5GS_MM_UE_PAR_UPD_TRANSP_CONT, /* 9.11.3.53A UE parameters update transparent container */
1860 DE_NAS_5GS_MM_UE_SEC_CAP, /* 9.11.3.54 UE security capability*/
1861 DE_NAS_5GS_MM_UE_USAGE_SET, /* 9.11.3.55 UE's usage setting */
1862 DE_NAS_5GS_MM_UE_STATUS, /* 9.11.3.56 UE status */
1863 DE_NAS_5GS_MM_UL_DATA_STATUS, /* 9.11.3.57 Uplink data status */
1864 DE_NAS_5GS_MM_UE_RADIO_CAP_ID, /* 9.11.3.68 UE radio capability ID*/
1865 DE_NAS_5GS_MM_UE_RADIO_CAP_ID_DEL_IND, /* 9.11.3.69 UE radio capability ID deletion indication*/
1866 DE_NAS_5GS_MM_TRUNCATED_5G_S_TMSI_CONF, /* 9.11.3.70 Truncated 5G-S-TMSI configuration*/
1867 DE_NAS_5GS_MM_WUS_ASSISTANCE_INF, /* 9.11.3.71 WUS assistance information*/
1868 DE_NAS_5GS_MM_N5GC_INDICATION, /* 9.11.3.72 N5GC indication*/
1869 DE_NAS_5GS_MM_NB_N1_MODE_DRX_PARS, /* 9.11.3.73 NB-N1 mode DRX parameters*/
1870 DE_NAS_5GS_MM_ADDITIONAL_CONF_IND, /* 9.11.3.74 Additional configuration indication*/
1871 DE_NAS_5GS_MM_EXTENDED_REJECTED_NSSAI, /* 9.11.3.75 Extended rejected NSSAI*/
1872 DE_NAS_5GS_MM_UE_REQUEST_TYPE, /* 9.11.3.76 UE request type */
1873 DE_NAS_5GS_MM_PAGING_RESTRICTION, /* 9.11.3.77 Paging restriction */
1874 DE_NAS_5GS_MM_NID, /* 9.11.3.79 NID */
1875 DE_NAS_5GS_MM_PEIPS_ASSIST_INFO, /* 9.11.3.80 PEIPS assistance information */
1876 DE_NAS_5GS_MM_5GS_ADD_REQ_RES, /* 9.11.3.81 5GS additional request result */
1877 DE_NAS_5GS_MM_NSSRG_INFO, /* 9.11.3.82 NSSRG information */
1878 DE_NAS_5GS_MM_PLMNS_LIST_DISASTER_COND, /* 9.11.3.83 List of PLMNs to be used in disaster condition */
1879 DE_NAS_5GS_MM_REG_WAIT_RANGE, /* 9.11.3.84 Registration wait range */
1880 DE_NAS_5GS_MM_PLMN_ID, /* 9.11.3.85 PLMN identity */
1881 DE_NAS_5GS_MM_EXT_CAG_INFO_LIST, /* 9.11.3.86 Extended CAG information list */
1882 DE_NAS_5GS_MM_NSAG_INFO, /* 9.11.3.87 NSAG information */
1883 DE_NAS_5GS_MM_PROSE_RELAY_TRANS_ID, /* 9.11.3.88 ProSe relay transaction identity */
1884 DE_NAS_5GS_MM_RELAY_KEY_REQ_PARAMS, /* 9.11.3.89 Relay key request parameters */
1885 DE_NAS_5GS_MM_RELAY_KEY_RESP_PARAMS, /* 9.11.3.90 Relay key response parameters */
1886 DE_NAS_5GS_MM_PRIO_IND, /* 9.11.3.91 Priority indicator */
1887 DE_NAS_5GS_MM_SNPN_LIST, /* 9.11.3.92 SNPN list */
1888 DE_NAS_5GS_MM_N3IWF_ID, /* 9.11.3.93 N3IWF identifier */
1889 DE_NAS_5GS_MM_TNAN_INFO, /* 9.11.3.94 TNAN information */
1890 DE_NAS_5GS_MM_RAN_TIMING_SYNC, /* 9.11.3.95 RAN timing synchronization */
1891 DE_NAS_5GS_MM_EXT_LADN_INFO, /* 9.11.3.96 Extended LADN information */
1892 DE_NAS_5GS_MM_ALT_NSSAI, /* 9.11.3.97 Alternative NSSAI */
1893 DE_NAS_5GS_MM_TYPE_6_IE_CONT, /* 9.11.3.98 Type 6 IE container */
1894 DE_NAS_5GS_MM_N3GPP_ACC_PATH_SWITCH_IND, /* 9.11.9.99 Non-3GPP access path switching indication */
1895 DE_NAS_5GS_MM_S_NSSAI_LOC_VALID_INFO, /* 9.11.3.100 S-NSSAI location validity information */
1896 DE_NAS_5GS_MM_S_NSSAI_TIME_VALID_INFO, /* 9.11.3.101 S-NSSAI time validity information */
1897 DE_NAS_5GS_MM_N3GPP_PATH_SWITCH_INFO, /* 9.11.3.102 Non-3GPP path switching information */
1898 DE_NAS_5GS_MM_PARTIAL_NSSAI, /* 9.11.3.103 Partial NSSAI */
1899 DE_NAS_5GS_MM_AU3N_IND, /* 9.11.3.104 AUN3 indication */
1900 DE_NAS_5GS_MM_FEAT_AUTH_IND, /* 9.11.3.105 Feature authorization indication */
1901 DE_NAS_5GS_MM_PAYLOAD_CONT_INFO, /* 9.11.3.106 Payload container information */
1902 DE_NAS_5GS_MM_AUN3_DEVICE_SEC_KEY, /* 9.11.3.107 AUN3 device security key */
1903 DE_NAS_5GS_MM_ON_DEMAND_NSSAI, /* 9.11.3.108 On-demand NSSAI */
1904 DE_NAS_5GS_MM_EXT_5GMM_CAUSE, /* 9.11.3.109 Extended 5GMM cause */
1905 DE_NAS_5GS_MM_LP_WUSPS_ASSIST_INFO, /* 9.11.3.111 LP-WUSPS assistance information */
1906 DE_NAS_5GS_MM_LP_WUS_STATUS, /* 9.11.3.112 LP-WUS status */
1907 DE_NAS_5GS_MM_NONE /* NONE */
1908}
1909nas_5gs_mm_elem_idx_t;
1910
1911
1912#endif /* __PACKET_GSM_A_COMMON_H__ */
1913
1914/*
1915 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1916 *
1917 * Local variables:
1918 * c-basic-offset: 4
1919 * tab-width: 8
1920 * indent-tabs-mode: nil
1921 * End:
1922 *
1923 * vi: set shiftwidth=4 tabstop=8 expandtab:
1924 * :indentSize=4:tabSize=8:noTabs=true:
1925 */
packet_info
struct _packet_info packet_info
Represents the metadata and indexing information for a single captured frame.
wmem_allocator_t
struct _wmem_allocator_t wmem_allocator_t
Definition wmem_core.h:44
proto.h
_gsm_a_tap_rec_t
Definition packet-gsm_a_common.h:703
value_string
struct _value_string value_string
Mapping between a 32-bit integer value and its string representation.