1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
|
# sbc-ap.cnf
# sbc-ap conformation file
#.OPT
PER
ALIGNED
#.END
#.EXPORTS
#.PDU
SBC-AP-PDU
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ID
#.NO_EMIT
TBCD-STRING
#.END
#.OMIT_ASSIGNMENT
# Get rid of unused code warnings
ProtocolIE-ContainerList
Presence
Unknown-Tracking-Area-List
NgENB-ID
List-of-5GS-Cells-for-Failure
#.TYPE_RENAME
InitiatingMessage/value InitiatingMessage_value
SuccessfulOutcome/value SuccessfulOutcome_value
UnsuccessfulOutcome/value UnsuccessfulOutcome_value
#.FIELD_RENAME
InitiatingMessage/value initiatingMessagevalue
UnsuccessfulOutcome/value unsuccessfulOutcome_value
SuccessfulOutcome/value successfulOutcome_value
ProtocolExtensionField/id ext_id
ProtocolIE-Field/value ie_field_value
#.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID
#.FN_FTR ProtocolIE-ID
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(sbc_ap_ProtocolIE_ID_vals), "unknown (%d)"));
}
#.END
#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
# Currently not used
# FN_PARS ProtocolIE-FieldPair/firstValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairFirstValue
# FN_PARS ProtocolIE-FieldPair/secondValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairSecondValue
#.FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID
#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
#.END
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
#--- Parameterization is not supported in asn2wrs ---
#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, SBC-AP-PROTOCOL-IES : IEsSetParam} ::=
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
# ProtocolIE-Container {{IEsSetParam}}
# FN_PARS ProtocolIE-ContainerList
#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
# FN_HDR ProtocolIE-ContainerList
# static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
# { "lowerBound", ASN1_PAR_INTEGER },
# { "upperBound", ASN1_PAR_INTEGER },
# { NULL, 0 }
# };
# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
#.END
#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, SBC-AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
# ProtocolIE-ContainerPair {{IEsSetParam}}
# following construction is not supported by asn2wrs
# PLMNidentity ::= TBCD-STRING (SIZE (3))
# TBCD-STRING ::= OCTET STRING
#.FN_BODY PLMNidentity VAL_PTR = parameter_tvb
tvbuff_t *parameter_tvb=NULL;
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
e212_number_type_t number_type = sbc_ap_data->number_type;
sbc_ap_data->number_type = E212_NONE;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, false, ¶meter_tvb);
if(tvb_reported_length(tvb)==0)
return offset;
if (!parameter_tvb)
return offset;
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, false);
#.END
#.TYPE_ATTR
ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(sbc_ap_ProtocolIE_ID_vals)
#.FN_BODY EUTRAN-CGI
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
sbc_ap_data->number_type = E212_ECGI;
%(DEFAULT_BODY)s
#.FN_BODY NR-CGI
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
sbc_ap_data->number_type = E212_NRCGI;
%(DEFAULT_BODY)s
#.FN_BODY TAI
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
sbc_ap_data->number_type = E212_TAI;
%(DEFAULT_BODY)s
#.TYPE_ATTR
TAC TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX
#.FN_BODY TAC VAL_PTR = ¶meter_tvb HF_INDEX = -1
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
}
#.FN_BODY TAI-5GS
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
sbc_ap_data->number_type = E212_5GSTAI;
%(DEFAULT_BODY)s
#.TYPE_ATTR
TAC-5GS TYPE = FT_UINT24 DISPLAY = BASE_DEC_HEX
#.FN_BODY TAC-5GS VAL_PTR = ¶meter_tvb HF_INDEX = -1
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 3, ENC_BIG_ENDIAN);
}
#.ASSIGN_VALUE_TO_TYPE # SBC-AP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-Write-Replace-Warning ProcedureCode
id-Stop-Warning ProcedureCode
id-Error-Indication ProcedureCode
id-Write-Replace-Warning-Indication ProcedureCode
id-Stop-Warning-Indication ProcedureCode
id-PWS-Restart-Indication ProcedureCode
id-PWS-Failure-Indication ProcedureCode
# ProtocolIE-ID
id-Broadcast-Message-Content ProtocolIE-ID
id-Cause ProtocolIE-ID
id-Criticality-Diagnostics ProtocolIE-ID
id-Data-Coding-Scheme ProtocolIE-ID
id-Failure-List ProtocolIE-ID
id-Message-Identifier ProtocolIE-ID
id-Number-of-Broadcasts-Completed-List ProtocolIE-ID
id-Number-of-Broadcasts-Requested ProtocolIE-ID
id-Radio-Resource-Loading-List ProtocolIE-ID
id-Recovery-Indication ProtocolIE-ID
id-Repetition-Period ProtocolIE-ID
id-Serial-Number ProtocolIE-ID
id-Service-Areas-List ProtocolIE-ID
id-TypeOfError ProtocolIE-ID
id-List-of-TAIs ProtocolIE-ID
id-Warning-Area-List ProtocolIE-ID
id-Warning-Message-Content ProtocolIE-ID
id-Warning-Security-Information ProtocolIE-ID
id-Warning-Type ProtocolIE-ID
id-Omc-Id ProtocolIE-ID
id-Concurrent-Warning-Message-Indicator ProtocolIE-ID
id-Extended-Repetition-Period ProtocolIE-ID
id-Unknown-Tracking-Area-List ProtocolIE-ID
id-Broadcast-Scheduled-Area-List ProtocolIE-ID
id-Send-Write-Replace-Warning-Indication ProtocolIE-ID
id-Broadcast-Cancelled-Area-List ProtocolIE-ID
id-Send-Stop-Warning-Indication ProtocolIE-ID
id-Stop-All-Indicator ProtocolIE-ID
id-Global-ENB-ID ProtocolIE-ID
id-Broadcast-Empty-Area-List ProtocolIE-ID
id-Restarted-Cell-List ProtocolIE-ID
id-List-of-TAIs-Restart ProtocolIE-ID
id-List-of-EAIs-Restart ProtocolIE-ID
id-Failed-Cell-List ProtocolIE-ID
id-List-of-5GS-TAIs ProtocolIE-ID
id-Warning-Area-List-5GS ProtocolIE-ID
id-Global-RAN-Node-ID ProtocolIE-ID
id-Global-GNB-ID ProtocolIE-ID
id-RAT-Selector-5GS ProtocolIE-ID
id-Unknown-5GS-Tracking-Area-List ProtocolIE-ID
id-Broadcast-Scheduled-Area-List-5GS ProtocolIE-ID
id-Broadcast-Cancelled-Area-List-5GS ProtocolIE-ID
id-Broadcast-Empty-Area-List-5GS ProtocolIE-ID
id-Restarted-Cell-List-NR ProtocolIE-ID
id-Failed-Cell-List-NR ProtocolIE-ID
id-List-of-5GS-TAI-for-Restart ProtocolIE-ID
id-Warning-Area-Coordinates ProtocolIE-ID
#.REGISTER
#SBC-AP-PROTOCOL-IES
# N sbc_ap.ies id-Broadcast-Message-Content
Cause N sbc_ap.ies id-Cause
Criticality-Diagnostics N sbc_ap.ies id-Criticality-Diagnostics
Data-Coding-Scheme N sbc_ap.ies id-Data-Coding-Scheme
# N sbc_ap.ies id-Failure-List
Message-Identifier N sbc_ap.ies id-Message-Identifier
# id-Number-of-Broadcasts-Completed-List
Number-of-Broadcasts-Requested N sbc_ap.ies id-Number-of-Broadcasts-Requested
# not used ? N sbc_ap.ies id-Radio-Resource-Loading-List
# not used N sbc_ap.ies id-Recovery-Indication
Repetition-Period N sbc_ap.ies id-Repetition-Period
Serial-Number N sbc_ap.ies id-Serial-Number
# id-Service-Areas-List
# id-TypeOfError
List-of-TAIs N sbc_ap.ies id-List-of-TAIs
Warning-Area-List N sbc_ap.ies id-Warning-Area-List
Warning-Message-Content N sbc_ap.ies id-Warning-Message-Content
Warning-Security-Information N sbc_ap.ies id-Warning-Security-Information
Warning-Type N sbc_ap.ies id-Warning-Type
Omc-Id N sbc_ap.ies id-Omc-Id
Concurrent-Warning-Message-Indicator N sbc_ap.ies id-Concurrent-Warning-Message-Indicator
Extended-Repetition-Period N sbc_ap.ies id-Extended-Repetition-Period
List-of-TAIs N sbc_ap.ies id-Unknown-Tracking-Area-List
Broadcast-Scheduled-Area-List N sbc_ap.ies id-Broadcast-Scheduled-Area-List
Send-Write-Replace-Warning-Indication N sbc_ap.ies id-Send-Write-Replace-Warning-Indication
Broadcast-Cancelled-Area-List N sbc_ap.ies id-Broadcast-Cancelled-Area-List
Send-Stop-Warning-Indication N sbc_ap.ies id-Send-Stop-Warning-Indication
Stop-All-Indicator N sbc_ap.ies id-Stop-All-Indicator
Global-ENB-ID N sbc_ap.ies id-Global-ENB-ID
Broadcast-Empty-Area-List N sbc_ap.ies id-Broadcast-Empty-Area-List
Restarted-Cell-List N sbc_ap.ies id-Restarted-Cell-List
List-of-TAIs-Restart N sbc_ap.ies id-List-of-TAIs-Restart
List-of-EAIs-Restart N sbc_ap.ies id-List-of-EAIs-Restart
Failed-Cell-List N sbc_ap.ies id-Failed-Cell-List
List-of-5GS-TAIs N sbc_ap.extension id-List-of-5GS-TAIs
Warning-Area-List-5GS N sbc_ap.extension id-Warning-Area-List-5GS
Global-RAN-Node-ID N sbc_ap.extension id-Global-RAN-Node-ID
Global-GNB-ID N sbc_ap.extension id-Global-GNB-ID
RAT-Selector-5GS N sbc_ap.extension id-RAT-Selector-5GS
Unknown-5GS-Tracking-Area-List N sbc_ap.extension id-Unknown-5GS-Tracking-Area-List
Broadcast-Scheduled-Area-List-5GS N sbc_ap.extension id-Broadcast-Scheduled-Area-List-5GS
Broadcast-Cancelled-Area-List-5GS N sbc_ap.extension id-Broadcast-Cancelled-Area-List-5GS
Broadcast-Empty-Area-List-5GS N sbc_ap.extension id-Broadcast-Empty-Area-List-5GS
Restarted-Cell-List-NR N sbc_ap.extension id-Restarted-Cell-List-NR
Failed-Cell-List-NR N sbc_ap.extension id-Failed-Cell-List-NR
List-of-5GS-TAI-for-Restart N sbc_ap.extension id-List-of-5GS-TAI-for-Restart
Warning-Area-Coordinates N sbc_ap.ies id-Warning-Area-Coordinates
#SBC-AP-ELEMENTARY-PROCEDURE
Write-Replace-Warning-Request N sbc_ap.proc.imsg id-Write-Replace-Warning
Write-Replace-Warning-Response N sbc_ap.proc.sout id-Write-Replace-Warning
Stop-Warning-Request N sbc_ap.proc.imsg id-Stop-Warning
Stop-Warning-Response N sbc_ap.proc.sout id-Stop-Warning
Error-Indication N sbc_ap.proc.imsg id-Error-Indication
Write-Replace-Warning-Indication N sbc_ap.proc.imsg id-Write-Replace-Warning-Indication
Stop-Warning-Indication N sbc_ap.proc.imsg id-Stop-Warning-Indication
PWS-Restart-Indication N sbc_ap.proc.imsg id-PWS-Restart-Indication
PWS-Failure-Indication N sbc_ap.proc.imsg id-PWS-Failure-Indication
#.END
#.TYPE_ATTR
Message-Identifier TYPE = FT_UINT16 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = <e_rrc_messageIdentifier_vals_ext
#.FN_HDR Write-Replace-Warning-Request
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Request");
#.FN_HDR Write-Replace-Warning-Response
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Response");
#.FN_HDR Stop-Warning-Request
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Request");
#.FN_HDR Stop-Warning-Response
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Response");
#.FN_HDR Error-Indication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error-Indication");
#.FN_HDR Write-Replace-Warning-Indication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Indication");
#.FN_HDR Stop-Warning-Indication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Indication");
#.FN_HDR PWS-Restart-Indication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Restart-Indication");
#.FN_HDR PWS-Failure-Indication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Failure-Indication");
#.FN_BODY Message-Identifier VAL_PTR = ¶meter_tvb HF_INDEX = -1
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
}
#.FN_BODY Serial-Number VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Serial_Number);
proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_gs, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_msg_code, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_upd_nb, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
}
#.TYPE_ATTR
Repetition-Period DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
Extended-Repetition-Period DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.FN_BODY Warning-Type VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Type);
proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_value, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_emergency_user_alert, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_popup, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
}
#.FN_BODY Data-Coding-Scheme VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
proto_tree *subtree;
subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Data_Coding_Scheme);
sbc_ap_data->data_coding_scheme = dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0);
}
#.FN_BODY Warning-Message-Content VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s
if (parameter_tvb) {
struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Message_Contents);
dissect_s1ap_warningMessageContents(parameter_tvb, subtree, actx->pinfo, sbc_ap_data->data_coding_scheme, hf_sbc_ap_Warning_Message_Contents_nb_pages, hf_sbc_ap_Warning_Message_Contents_decoded_page);
}
#
# Editor modelines - https://www.wireshark.org/tools/modelines.html
#
# Local variables:
# c-basic-offset: 2
# tab-width: 8
# indent-tabs-mode: nil
# End:
#
# vi: set shiftwidth=2 tabstop=8 expandtab:
# :indentSize=2:tabSize=8:noTabs=true:
#
|