aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/m3ap/m3ap.cnf
blob: aa26d0d38b6caa2518f4c49e8473fee9902e74e1 (plain)
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
# 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 = &parameter_tvb
  tvbuff_t *parameter_tvb=NULL;

  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
                                       3, 3, FALSE, &parameter_tvb);

  if (!parameter_tvb)
    return offset;
  dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, E212_NONE, FALSE);
#.END

#.FN_BODY IPAddress VAL_PTR = &parameter_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 = &parameter_tvb
  tvbuff_t *parameter_tvb=NULL;
  const gchar *time_str;
  gint tvb_len;

%(DEFAULT_BODY)s

  if (!parameter_tvb)
    return offset;

  tvb_len = tvb_reported_length(parameter_tvb);

  time_str = tvb_ntp_fmt_ts(parameter_tvb, 0);
  proto_tree_add_string(tree, hf_m3ap_Absolute_Time_ofMBMS_Data_value, parameter_tvb, 0, tvb_len, time_str);
#.END

#.TYPE_ATTR
BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec

#.FN_BODY MBMS-Service-Area VAL_PTR = &parameter_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 = &parameter_tvb
  tvbuff_t *parameter_tvb=NULL;
  guint16 tvb_len;

  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
                                       3, 3, FALSE, &parameter_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 = &parameter_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