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
|
# m3ap.cnf
# m3ap conformation file
#.OPT
PER
ALIGNED
#.END
#.USE_VALS_EXT
ProcedureCode
ProtocolIE-ID
#.EXPORTS
#.PDU
M3AP-PDU
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ID
#.NO_EMIT
# TBCD-STRING
#.OMIT_ASSIGNMENT
# Get rid of unused code warnings
ProtocolIE-FieldPair
ProtocolIE-ContainerPair
ProtocolIE-ContainerPairList
ProtocolIE-ContainerList
Presence
#.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
PrivateIE-Field/id private_id
ProtocolExtensionField/id ext_id
PrivateIE-Field/value private_value
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_ext(ProtocolIE_ID, &m3ap_ProtocolIE_ID_vals_ext, "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
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
#.FN_HDR InitiatingMessage/value
message_type = INITIATING_MESSAGE;
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
#.FN_HDR SuccessfulOutcome/value
message_type = SUCCESSFUL_OUTCOME;
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
#.FN_HDR UnsuccessfulOutcome/value
message_type = UNSUCCESSFUL_OUTCOME;
#--- Parameterization is not supported in asn2wrs ---
#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, M3AP-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, (asn1_par_type)0 }
# };
# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
# END
#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, M3AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
# ProtocolIE-ContainerPair {{IEsSetParam}}
# FN_PARS ProtocolIE-ContainerPairList
#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
# FN_HDR ProtocolIE-ContainerPairList
# static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = {
# { "lowerBound", ASN1_PAR_INTEGER },
# { "upperBound", ASN1_PAR_INTEGER },
# { NULL, 0 }
# };
# asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars);
# END
# following construction is not supported by asn2wrs
# PLMNidentity ::= TBCD-STRING (SIZE (3))
#.FN_BODY PLMN-Identity VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
struct m3ap_private_data *m3ap_data = m3ap_get_private_data(actx->pinfo);
e212_number_type_t number_type = m3ap_data->number_type;
m3ap_data->number_type = E212_NONE;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, ¶meter_tvb);
if (!parameter_tvb)
return offset;
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, FALSE);
#.END
#.FN_BODY ECGI
struct m3ap_private_data *m3ap_data = m3ap_get_private_data(actx->pinfo);
m3ap_data->number_type = E212_ECGI;
%(DEFAULT_BODY)s
#.FN_BODY IPAddress VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
gint tvb_len;
proto_tree *subtree;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
tvb_len = tvb_reported_length(parameter_tvb);
subtree = proto_item_add_subtree(actx->created_item, ett_m3ap_IPAddress);
switch (tvb_len) {
case 4:
proto_tree_add_item(subtree, hf_m3ap_IPAddress_v4, parameter_tvb, 0, 4, ENC_BIG_ENDIAN);
break;
case 16:
proto_tree_add_item(subtree, hf_m3ap_IPAddress_v6, parameter_tvb, 0, 16, ENC_NA);
break;
default:
proto_tree_add_expert(subtree, actx->pinfo, &ei_m3ap_invalid_ip_address_len, parameter_tvb, 0, tvb_len);
break;
}
#.END
#.FN_BODY Absolute-Time-ofMBMS-Data VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
proto_tree_add_item(tree, hf_m3ap_Absolute_Time_ofMBMS_Data_value, parameter_tvb, 0, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
#.END
#.TYPE_ATTR
BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec
#.FN_BODY MBMS-Service-Area VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
guint16 tvb_len;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
tvb_len = tvb_reported_length(parameter_tvb);
dissect_gtpv2_mbms_service_area(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0, NULL);
#.END
#.FN_BODY MBMS-Session-Duration VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
guint16 tvb_len;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, ¶meter_tvb);
if (!parameter_tvb)
return offset;
tvb_len = tvb_reported_length(parameter_tvb);
proto_item_append_text(actx->created_item, " ");
dissect_gtpv2_mbms_session_duration(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0, NULL);
#.END
#.FN_BODY MinimumTimeToMBMSDataTransfer VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
guint16 tvb_len;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
tvb_len = tvb_reported_length(parameter_tvb);
dissect_gtpv2_mbms_time_to_data_xfer(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0, NULL);
#.END
#------ Pretify info column -----
#.FN_HDR MBMSSessionStartRequest
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Request ");
#.FN_HDR MBMSSessionStartResponse
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Response ");
#.FN_HDR MBMSSessionStartFailure
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Failure ");
#.FN_HDR MBMSSessionStopRequest
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Request ");
#.FN_HDR MBMSSessionStopResponse
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Response ");
#.FN_HDR MBMSSessionUpdateRequest
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Request ");
#.FN_HDR MBMSSessionUpdateResponse
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Response ");
#.FN_HDR MBMSSessionUpdateFailure
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Failure ");
#.FN_HDR ErrorIndication
col_set_str(actx->pinfo->cinfo, COL_INFO,"Error Indication ");
#.FN_HDR Reset
col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset ");
#.FN_HDR ResetAcknowledge
col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset Acknowledge ");
#.FN_HDR PrivateMessage
col_set_str(actx->pinfo->cinfo, COL_INFO,"Private Message ");
#.FN_HDR MCEConfigurationUpdate
col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update ");
#.FN_HDR MCEConfigurationUpdateAcknowledge
col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Acknowledge ");
#.FN_HDR MCEConfigurationUpdateFailure
col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Failure ");
#.FN_HDR M3SetupRequest
col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Request ");
#.FN_HDR M3SetupResponse
col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Response ");
#.FN_HDR M3SetupFailure
col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Failure ");
#.ASSIGN_VALUE_TO_TYPE # M3AP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-mBMSsessionStart ProcedureCode
id-mBMSsessionStop ProcedureCode
id-errorIndication ProcedureCode
id-privateMessage ProcedureCode
id-Reset ProcedureCode
id-mBMSsessionUpdate ProcedureCode
id-mCEConfigurationUpdate ProcedureCode
id-m3Setup ProcedureCode
# ProtocolIE
id-MME-MBMS-M3AP-ID ProtocolIE-ID
id-MCE-MBMS-M3AP-ID ProtocolIE-ID
id-TMGI ProtocolIE-ID
id-MBMS-Session-ID ProtocolIE-ID
id-MBMS-E-RAB-QoS-Parameters ProtocolIE-ID
id-MBMS-Session-Duration ProtocolIE-ID
id-MBMS-Service-Area ProtocolIE-ID
id-TNL-Information ProtocolIE-ID
id-CriticalityDiagnostics ProtocolIE-ID
id-Cause ProtocolIE-ID
id-MBMS-Service-Area-List ProtocolIE-ID
id-MBMS-Service-Area-List-Item ProtocolIE-ID
id-TimeToWait ProtocolIE-ID
id-ResetType ProtocolIE-ID
id-MBMS-Service-associatedLogicalM3-ConnectionItem ProtocolIE-ID
id-MBMS-Service-associatedLogicalM3-ConnectionListResAck ProtocolIE-ID
id-MinimumTimeToMBMSDataTransfer ProtocolIE-ID
id-AllocationAndRetentionPriority ProtocolIE-ID
id-Global-MCE-ID ProtocolIE-ID
id-MCEname ProtocolIE-ID
id-MBMSServiceAreaList ProtocolIE-ID
id-Time-ofMBMS-DataTransfer ProtocolIE-ID
id-Time-ofMBMS-DataStop ProtocolIE-ID
id-Reestablishment ProtocolIE-ID
id-Alternative-TNL-Information ProtocolIE-ID
id-MBMS-Cell-List ProtocolIE-ID
#.REGISTER
#M3AP-PROTOCOL-IES
MME-MBMS-M3AP-ID N m3ap.ies id-MME-MBMS-M3AP-ID
MCE-MBMS-M3AP-ID N m3ap.ies id-MCE-MBMS-M3AP-ID
TMGI N m3ap.ies id-TMGI
MBMS-Session-ID N m3ap.ies id-MBMS-Session-ID
MBMS-E-RAB-QoS-Parameters N m3ap.ies id-MBMS-E-RAB-QoS-Parameters
MBMS-Session-Duration N m3ap.ies id-MBMS-Session-Duration
MBMS-Service-Area N m3ap.ies id-MBMS-Service-Area
TNL-Information N m3ap.ies id-TNL-Information
CriticalityDiagnostics N m3ap.ies id-CriticalityDiagnostics
Cause N m3ap.ies id-Cause
#MBMS-Service-Area-List N m3ap.ies id-MBMS-Service-Area-List
#MBMS-Service-Area-List-Item N m3ap.ies id-MBMS-Service-Area-List-Item
TimeToWait N m3ap.ies id-TimeToWait
ResetType N m3ap.ies id-ResetType
MBMS-Service-associatedLogicalM3-ConnectionItem N m3ap.ies id-MBMS-Service-associatedLogicalM3-ConnectionItem
MBMS-Service-associatedLogicalM3-ConnectionListResAck N m3ap.ies id-MBMS-Service-associatedLogicalM3-ConnectionListResAck
MinimumTimeToMBMSDataTransfer N m3ap.ies id-MinimumTimeToMBMSDataTransfer
AllocationAndRetentionPriority N m3ap.ies id-AllocationAndRetentionPriority
Global-MCE-ID N m3ap.ies id-Global-MCE-ID
MCEname N m3ap.ies id-MCEname
MBMSServiceAreaListItem N m3ap.ies id-MBMSServiceAreaList
Absolute-Time-ofMBMS-Data N m3ap.ies id-Time-ofMBMS-DataTransfer
Absolute-Time-ofMBMS-Data N m3ap.ies id-Time-ofMBMS-DataStop
Reestablishment N m3ap.ies id-Reestablishment
TNL-Information N m3ap.ies id-Alternative-TNL-Information
MBMS-Cell-List N m3ap.ies id-MBMS-Cell-List
#M3AP-ELEMENTARY-PROCEDURE
MBMSSessionStartRequest N m3ap.proc.imsg id-mBMSsessionStart
MBMSSessionStartResponse N m3ap.proc.sout id-mBMSsessionStart
MBMSSessionStartFailure N m3ap.proc.uout id-mBMSsessionStart
MBMSSessionStopRequest N m3ap.proc.imsg id-mBMSsessionStop
MBMSSessionStopResponse N m3ap.proc.sout id-mBMSsessionStop
MBMSSessionUpdateRequest N m3ap.proc.imsg id-mBMSsessionUpdate
MBMSSessionUpdateResponse N m3ap.proc.sout id-mBMSsessionUpdate
MBMSSessionUpdateFailure N m3ap.proc.uout id-mBMSsessionUpdate
ErrorIndication N m3ap.proc.imsg id-errorIndication
Reset N m3ap.proc.imsg id-Reset
ResetAcknowledge N m3ap.proc.sout id-Reset
PrivateMessage N m3ap.proc.imsg id-privateMessage
MCEConfigurationUpdate N m3ap.proc.imsg id-mCEConfigurationUpdate
MCEConfigurationUpdateAcknowledge N m3ap.proc.sout id-mCEConfigurationUpdate
MCEConfigurationUpdateFailure N m3ap.proc.uout id-mCEConfigurationUpdate
M3SetupRequest N m3ap.proc.imsg id-m3Setup
M3SetupResponse N m3ap.proc.sout id-m3Setup
M3SetupFailure N m3ap.proc.uout id-m3Setup
#.END
|