blob: 64167ec0b1959df8b2a714cb89000ed740a8ab3f [file] [log] [blame]
Harald Weltece818da2019-07-03 22:03:16 +08001/* S1AP Templates in TTCN-3
2 * (C) 2019 Harald Welte <laforge@gnumonks.org>
3 * All rights reserved.
4 *
5 * Released under the terms of GNU General Public License, Version 2 or
6 * (at your option) any later version.
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10
11module S1AP_Templates {
12
13import from S1AP_IEs all;
14import from S1AP_CommonDataTypes all;
15import from S1AP_Constants all;
16import from S1AP_Containers all;
17import from S1AP_PDU_Contents all;
18import from S1AP_PDU_Descriptions all;
19
20/*********************************************************************************
21 * non-UE related
22 *********************************************************************************/
23
24/*********************************************************************************
Pau Espin Pedrolecfc7d62023-12-13 18:49:29 +010025 * 9.1.8 Management Messages
Harald Weltece818da2019-07-03 22:03:16 +080026 *********************************************************************************/
27
28/* 9.1.8.4 S1 SETUP REQUEST */
29template (value) S1AP_PDU
30ts_S1AP_SetupReq(template (value) Global_ENB_ID p_global_ENB_ID,
31 template (value) SupportedTAs p_supportedTAs,
32 template (value) PagingDRX p_pagingDRXs) := {
33 initiatingMessage := {
34 procedureCode := id_S1Setup,
35 criticality := reject,
36 value_ := {
37 S1SetupRequest := {
38 protocolIEs := {
39 {
40 id := S1AP_Constants.id_Global_ENB_ID,
41 criticality := ignore,
42 value_ := { Global_ENB_ID := p_global_ENB_ID }
43 }, {
44 id := S1AP_Constants.id_SupportedTAs,
45 criticality := reject,
46 value_ := {SupportedTAs := p_supportedTAs}
47 } /* HACK: work around nextepc bug
48 , {
49 id := S1AP_Constants.id_pagingDRX,
50 criticality := ignore,
51 value_ := {PagingDRX := p_pagingDRXs}
52 } */
53 }
54 }
55 }
56 }
57}
58template (present) S1AP_PDU
59tr_S1AP_SetupReq(template (present) Global_ENB_ID p_global_ENB_ID := ?,
60 template (present) SupportedTAs p_supportedTAs := ?,
61 template (present) PagingDRX p_pagingDRXs := ?) := {
62 initiatingMessage := {
63 procedureCode := id_S1Setup,
64 criticality := reject,
65 value_ := {
66 S1SetupRequest := {
67 protocolIEs := {
68 {
69 id := S1AP_Constants.id_Global_ENB_ID,
70 criticality := ignore,
71 value_ := { Global_ENB_ID := p_global_ENB_ID }
Philipp Maier7f521fe2023-07-07 10:23:22 +020072 }, *, {
Harald Weltece818da2019-07-03 22:03:16 +080073 id := S1AP_Constants.id_SupportedTAs,
74 criticality := reject,
75 value_ := {SupportedTAs := p_supportedTAs}
76 }, *
77 }
78 }
79 }
80 }
81}
82
83/* 9.1.8.5 S1 SETUP RESPONSE */
84template (value) S1AP_PDU
85ts_S1AP_SetupResp(template (value) ServedGUMMEIs served_gummeis,
86 template (value) RelativeMMECapacity rel_mme_capacity) := {
87 successfulOutcome := {
88 procedureCode := id_S1Setup,
89 criticality := reject,
90 value_ := {
91 S1SetupResponse := {
92 protocolIEs := {
93 {
94 id := S1AP_Constants.id_ServedGUMMEIs,
95 criticality := reject,
96 value_ := { ServedGUMMEIs := served_gummeis }
97 }, {
98 id := S1AP_Constants.id_RelativeMMECapacity,
99 criticality := ignore,
100 value_ := { RelativeMMECapacity := rel_mme_capacity }
101 }
102 }
103 }
104 }
105 }
106}
107template (present) S1AP_PDU
108tr_S1AP_SetupResp(template (present) ServedGUMMEIs served_gummeis := ?,
109 template (present) RelativeMMECapacity rel_mme_capacity := ?) := {
110 successfulOutcome := {
111 procedureCode := id_S1Setup,
112 criticality := reject,
113 value_ := {
114 S1SetupResponse := {
115 protocolIEs := {
Philipp Maier16ab8392023-07-07 10:26:19 +0200116 *, {
Harald Weltece818da2019-07-03 22:03:16 +0800117 id := S1AP_Constants.id_ServedGUMMEIs,
118 criticality := reject,
119 value_ := { ServedGUMMEIs := served_gummeis }
120 }, {
121 id := S1AP_Constants.id_RelativeMMECapacity,
122 criticality := ignore,
123 value_ := { RelativeMMECapacity := rel_mme_capacity }
124 }, *
125 }
126 }
127 }
128 }
129}
130
131/* 9.1.8.6 S1 SETUP FAILURE */
132template (value) S1AP_PDU
133ts_S1AP_SetupFail(template (value) Cause cause) := {
134 unsuccessfulOutcome := {
135 procedureCode := id_S1Setup,
136 criticality := reject,
137 value_ := {
138 S1SetupFailure := {
139 protocolIEs := {
140 {
141 id := S1AP_Constants.id_Cause,
142 criticality := ignore,
143 value_ := { Cause := cause }
144 }
145 }
146 }
147 }
148 }
149}
150template (present) S1AP_PDU
151tr_S1AP_SetupFail(template (present) Cause cause := ?) := {
152 unsuccessfulOutcome := {
153 procedureCode := id_S1Setup,
154 criticality := reject,
155 value_ := {
156 S1SetupFailure := {
157 protocolIEs := {
158 {
159 id := S1AP_Constants.id_Cause,
160 criticality := ignore,
161 value_ := { Cause := cause }
162 }, *
163 }
164 }
165 }
166 }
167}
168
169/* 9.1.8.1 RESET */
170template (value) S1AP_PDU
171ts_S1AP_Reset(template (value) Cause cause,
172 template (value) ResetType reset_type) := {
173 initiatingMessage := {
174 procedureCode := id_Reset,
175 criticality := reject,
176 value_ := {
177 Reset := {
178 protocolIEs := {
179 {
180 id := S1AP_Constants.id_Cause,
181 criticality := ignore,
182 value_ := { Cause := cause }
183 } , {
184 id := S1AP_Constants.id_ResetType,
185 criticality := reject,
186 value_ := { resetType := reset_type }
187 }
188 }
189 }
190 }
191 }
192}
193template (present) S1AP_PDU
194tr_S1AP_Reset(template (present) Cause cause := ?,
195 template (present) ResetType reset_type := ?) := {
196 initiatingMessage := {
197 procedureCode := id_Reset,
198 criticality := reject,
199 value_ := {
200 Reset := {
201 protocolIEs := {
202 {
203 id := S1AP_Constants.id_Cause,
204 criticality := ignore,
205 value_ := { Cause := cause }
Philipp Maier20bed062023-07-07 10:20:19 +0200206 }, {
Harald Weltece818da2019-07-03 22:03:16 +0800207 id := S1AP_Constants.id_ResetType,
208 criticality := reject,
209 value_ := { resetType := reset_type }
210 }, *
211 }
212 }
213 }
214 }
215}
216
217/* 9.1.8.2 RESET ACKNOWLEDGE */
218template (value) S1AP_PDU
219ts_S1AP_ResetAck(template (value) UE_associatedLogicalS1_ConnectionListResAck val) := {
220 successfulOutcome := {
221 procedureCode := id_Reset,
222 criticality := reject,
223 value_ := {
224 ResetAcknowledge := {
225 protocolIEs := {
226 {
227 id := S1AP_Constants.id_UE_associatedLogicalS1_ConnectionListResAck,
228 criticality := ignore,
229 value_ := { UE_associatedLogicalS1_ConnectionListResAck := val }
230 }
231 }
232 }
233 }
234 }
235}
236template (present) S1AP_PDU
237tr_S1AP_ResetAck(template (present) UE_associatedLogicalS1_ConnectionListResAck val := ?) := {
238 successfulOutcome := {
239 procedureCode := id_Reset,
240 criticality := reject,
241 value_ := {
242 ResetAcknowledge := {
243 protocolIEs := {
244 {
245 id := S1AP_Constants.id_UE_associatedLogicalS1_ConnectionListResAck,
246 criticality := ignore,
247 value_ := { UE_associatedLogicalS1_ConnectionListResAck := val }
248 }, *
249 }
250 }
251 }
252 }
253}
Philipp Maier46059f02023-08-16 14:45:27 +0200254template (present) S1AP_PDU
255tr_S1AP_ResetAck_any := {
256 successfulOutcome := {
257 procedureCode := id_Reset,
258 criticality := reject,
259 value_ := {
260 ResetAcknowledge := {
261 protocolIEs := ?
262 }
263 }
264 }
265}
Harald Weltece818da2019-07-03 22:03:16 +0800266
267
268/*********************************************************************************
269 * 9.1.7 NAS Transport
270 *********************************************************************************/
271
272/* 9.1.7.1 INITIAL UE MESSAGE */
273template (value) S1AP_PDU
274ts_S1AP_InitialUE(template (value) ENB_UE_S1AP_ID p_eNB_value,
275 template (value) NAS_PDU p_nasPdu,
276 template (value) TAI p_tAI,
277 template (value) EUTRAN_CGI p_eUTRAN_CGI,
278 template (value) RRC_Establishment_Cause p_rrcCause) := {
279 initiatingMessage := {
280 procedureCode := id_initialUEMessage,
281 criticality := ignore,
282 value_ := {
283 InitialUEMessage := {
284 protocolIEs := {
285 {
286 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
287 criticality := reject,
288 value_ := {ENB_UE_S1AP_ID := p_eNB_value}
289 }, {
290 id := S1AP_Constants.id_NAS_PDU,
291 criticality := reject,
292 value_ := {nAS_PDU := p_nasPdu}
293 }, {
294 id := S1AP_Constants.id_TAI,
295 criticality := ignore,
296 value_ := {TAI := p_tAI}
297 }, {
298 id := S1AP_Constants.id_EUTRAN_CGI,
299 criticality := ignore,
300 value_ := {EUTRAN_CGI := p_eUTRAN_CGI}
301 }, {
302 id := S1AP_Constants.id_RRC_Establishment_Cause,
303 criticality := ignore,
304 value_ := {RRC_Establishment_Cause := p_rrcCause}
305 }
306 }
307 }
308 }
309 }
310}
311template (present) S1AP_PDU
312tr_S1AP_InitialUE(template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
313 template (present) NAS_PDU p_nasPdu := ?,
314 template (present) TAI p_tAI := ?,
315 template (present) EUTRAN_CGI p_eUTRAN_CGI := ?,
316 template (present) RRC_Establishment_Cause p_rrcCause := ?) := {
317 initiatingMessage := {
318 procedureCode := id_initialUEMessage,
319 criticality := ignore,
320 value_ := {
321 InitialUEMessage := {
322 protocolIEs := {
323 {
324 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
325 criticality := reject,
326 value_ := {ENB_UE_S1AP_ID := p_eNB_value}
327 }, {
328 id := S1AP_Constants.id_NAS_PDU,
329 criticality := reject,
330 value_ := {nAS_PDU := p_nasPdu}
331 }, {
332 id := S1AP_Constants.id_TAI,
333 criticality := ignore,
334 value_ := {TAI := p_tAI}
335 }, {
336 id := S1AP_Constants.id_EUTRAN_CGI,
337 criticality := ignore,
338 value_ := {EUTRAN_CGI := p_eUTRAN_CGI}
339 }, {
340 id := S1AP_Constants.id_RRC_Establishment_Cause,
341 criticality := ignore,
342 value_ := {RRC_Establishment_Cause := p_rrcCause}
343 }, *
344 }
345 }
346 }
347 }
348}
349
350
351/* 9.1.7.2 DOWNLINK NAS TRANSPORT */
352template (value) S1AP_PDU
353ts_S1AP_DlNasTransport(template (value) MME_UE_S1AP_ID mme_id,
354 template (value) ENB_UE_S1AP_ID enb_id,
355 template (value) octetstring p_nasPdu) := {
356 initiatingMessage := {
357 procedureCode := id_downlinkNASTransport,
358 criticality := ignore,
359 value_ := {
360 DownlinkNASTransport := {
361 protocolIEs := {
362 {
363 id := S1AP_Constants.id_MME_UE_S1AP_ID,
364 criticality := reject,
365 value_ := {MME_UE_S1AP_ID := mme_id}
366 }, {
367 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
368 criticality := reject,
369 value_ := {ENB_UE_S1AP_ID := enb_id}
370 }, {
371 id := S1AP_Constants.id_NAS_PDU,
372 criticality := reject,
373 value_ := {nAS_PDU := p_nasPdu}
374 }
375 }
376 }
377 }
378 }
379}
380template (present) S1AP_PDU
381tr_S1AP_DlNasTransport(template (present) MME_UE_S1AP_ID mme_id := ?,
382 template (present) ENB_UE_S1AP_ID enb_id := ?,
383 template (present) octetstring p_nasPdu := ?) := {
384 initiatingMessage := {
385 procedureCode := id_downlinkNASTransport,
386 criticality := ignore,
387 value_ := {
388 DownlinkNASTransport := {
389 protocolIEs := {
390 {
391 id := S1AP_Constants.id_MME_UE_S1AP_ID,
392 criticality := reject,
393 value_ := {MME_UE_S1AP_ID := mme_id}
394 }, {
395 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
396 criticality := reject,
397 value_ := {ENB_UE_S1AP_ID := enb_id}
398 }, {
399 id := S1AP_Constants.id_NAS_PDU,
400 criticality := reject,
401 value_ := {nAS_PDU := p_nasPdu}
402 }, *
403 }
404 }
405 }
406 }
407}
408
409
410/* 9.1.7.3 UPNLINK NAS TRANSPORT */
411template (value) S1AP_PDU
412ts_S1AP_UlNasTransport(template (value) MME_UE_S1AP_ID mme_id,
413 template (value) ENB_UE_S1AP_ID enb_id,
414 template (value) octetstring p_nasPdu,
415 template (value) EUTRAN_CGI p_eUTRAN_CGI,
416 template (value) TAI p_tAI) := {
417 initiatingMessage := {
418 procedureCode := id_uplinkNASTransport,
419 criticality := ignore,
420 value_ := {
421 UplinkNASTransport := {
422 protocolIEs := {
423 {
424 id := S1AP_Constants.id_MME_UE_S1AP_ID,
425 criticality := reject,
426 value_ := {MME_UE_S1AP_ID := mme_id}
427 }, {
428 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
429 criticality := reject,
430 value_ := {ENB_UE_S1AP_ID := enb_id}
431 }, {
432 id := S1AP_Constants.id_NAS_PDU,
433 criticality := reject,
434 value_ := {nAS_PDU := p_nasPdu}
435 }, {
436 id := S1AP_Constants.id_EUTRAN_CGI,
437 criticality := ignore,
438 value_ := {EUTRAN_CGI := p_eUTRAN_CGI}
439 }, {
440 id := S1AP_Constants.id_TAI,
441 criticality := ignore,
442 value_ := {TAI := p_tAI}
443 }
444 }
445 }
446 }
447 }
448}
449template (present) S1AP_PDU
450tr_S1AP_UlNasTransport(template (present) MME_UE_S1AP_ID mme_id := ?,
451 template (present) ENB_UE_S1AP_ID enb_id := ?,
452 template (present) octetstring p_nasPdu := ?,
453 template (present) EUTRAN_CGI p_eUTRAN_CGI := ?,
454 template (present) TAI p_tAI := ?) := {
455 initiatingMessage := {
456 procedureCode := id_uplinkNASTransport,
457 criticality := ignore,
458 value_ := {
459 UplinkNASTransport := {
460 protocolIEs := {
461 {
462 id := S1AP_Constants.id_MME_UE_S1AP_ID,
463 criticality := reject,
464 value_ := {MME_UE_S1AP_ID := mme_id}
465 }, {
466 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
467 criticality := reject,
468 value_ := {ENB_UE_S1AP_ID := enb_id}
469 }, {
470 id := S1AP_Constants.id_NAS_PDU,
471 criticality := reject,
472 value_ := {nAS_PDU := p_nasPdu}
473 }, {
474 id := S1AP_Constants.id_EUTRAN_CGI,
475 criticality := ignore,
476 value_ := {EUTRAN_CGI := p_eUTRAN_CGI}
477 }, {
478 id := S1AP_Constants.id_TAI,
479 criticality := ignore,
480 value_ := {TAI := p_tAI}
481 }, *
482 }
483 }
484 }
485 }
486}
487
488/*********************************************************************************
489 * 9.1.4 Context Management
490 *********************************************************************************/
491
492/* 9.1.4.1 INITIAL CONTEXT SETUP REQ */
493template (value) S1AP_PDU
494ts_S1AP_IntialCtxSetupReq(template (value) MME_UE_S1AP_ID mme_id,
495 template (value) ENB_UE_S1AP_ID enb_id,
496 template (value) UEAggregateMaximumBitrate max_br,
497 template (value) E_RABToBeSetupListCtxtSUReq rab_setup_items,
498 template (value) UESecurityCapabilities ue_sec_par,
499 template (value) SecurityKey sec_key) := {
500 initiatingMessage := {
501 procedureCode := id_InitialContextSetup,
502 criticality := reject,
503 value_ := {
504 initialContextSetupRequest := {
505 protocolIEs := {
506 {
507 id := S1AP_Constants.id_MME_UE_S1AP_ID,
508 criticality := reject,
509 value_ := {MME_UE_S1AP_ID := mme_id}
510 }, {
511 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
512 criticality := reject,
513 value_ := {ENB_UE_S1AP_ID := enb_id}
514 }, {
515 id := S1AP_Constants.id_uEaggregateMaximumBitrate,
516 criticality := reject,
517 value_ := {UEAggregateMaximumBitrate := max_br}
518 }, {
519 id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq,
520 criticality := reject,
521 value_ := {E_RABToBeSetupListCtxtSUReq := rab_setup_items}
522 }, {
523 id := S1AP_Constants.id_UESecurityCapabilities,
524 criticality := reject,
525 value_ := {UESecurityCapabilities := ue_sec_par}
526 }, {
527 id := S1AP_Constants.id_SecurityKey,
528 criticality := reject,
529 value_ := {SecurityKey := sec_key}
530 }
531 }
532 }
533 }
534 }
535}
536template (present) S1AP_PDU
537tr_S1AP_IntialCtxSetupReq(template (present) MME_UE_S1AP_ID mme_id := ?,
538 template (present) ENB_UE_S1AP_ID enb_id := ?,
539 template (present) UEAggregateMaximumBitrate max_br := ?,
540 template (present) E_RABToBeSetupListCtxtSUReq rab_setup_items := ?,
541 template (present) UESecurityCapabilities ue_sec_par := ?,
542 template (present) SecurityKey sec_key := ?) := {
543 initiatingMessage := {
544 procedureCode := id_InitialContextSetup,
545 criticality := reject,
546 value_ := {
547 initialContextSetupRequest := {
548 protocolIEs := {
549 {
550 id := S1AP_Constants.id_MME_UE_S1AP_ID,
551 criticality := reject,
552 value_ := {MME_UE_S1AP_ID := mme_id}
553 }, {
554 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
555 criticality := reject,
556 value_ := {ENB_UE_S1AP_ID := enb_id}
557 }, {
558 id := S1AP_Constants.id_uEaggregateMaximumBitrate,
559 criticality := reject,
560 value_ := {UEAggregateMaximumBitrate := max_br}
561 }, {
562 id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq,
563 criticality := reject,
564 value_ := {E_RABToBeSetupListCtxtSUReq := rab_setup_items}
565 }, {
566 id := S1AP_Constants.id_UESecurityCapabilities,
567 criticality := reject,
568 value_ := {UESecurityCapabilities := ue_sec_par}
569 }, {
570 id := S1AP_Constants.id_SecurityKey,
571 criticality := reject,
572 value_ := {SecurityKey := sec_key}
573 }, *
574 }
575 }
576 }
577 }
578}
579
580/* 9.1.4.3 INITIAL CONTEXT SETUP RESPONSE */
Pau Espin Pedrolecfc7d62023-12-13 18:49:29 +0100581template (value) E_RABSetupItemCtxtSURes
582ts_S1AP_RABSetupItemCtxtSURes(template (value) E_RAB_ID rab_id := 5,
583 template (value) TransportLayerAddress tla := '00001010000101110001100000000100'B,
584 template (value) GTP_TEID gtp_teid := '00000002'O) := {
585 e_RAB_ID := rab_id,
586 transportLayerAddress := tla,
587 gTP_TEID := gtp_teid,
588 iE_Extensions := omit
589}
590template (value) E_RABSetupListCtxtSURes
591ts_S1AP_RABSetupListCtxtSURes(template (value) E_RABSetupItemCtxtSURes it := ts_S1AP_RABSetupItemCtxtSURes()) := {
592 {
593 id := S1AP_Constants.id_E_RABSetupItemCtxtSURes,
594 criticality := ignore,
595 value_ := { E_RABSetupItemCtxtSURes := it }
596 }
597}
598
Harald Weltece818da2019-07-03 22:03:16 +0800599template (value) S1AP_PDU
600ts_S1AP_InitialCtxSetupResp(template (value) MME_UE_S1AP_ID mme_id,
601 template (value) ENB_UE_S1AP_ID enb_id,
Pau Espin Pedrolecfc7d62023-12-13 18:49:29 +0100602 template (value) E_RABSetupListCtxtSURes rab_setup_items
603 /*OPTIONAL: template (value) E_RABList rab_items */
604 ) := {
Harald Weltece818da2019-07-03 22:03:16 +0800605 successfulOutcome := {
606 procedureCode := id_InitialContextSetup,
607 criticality := reject,
608 value_ := {
609 InitialContextSetupResponse := {
610 protocolIEs := {
611 {
612 id := S1AP_Constants.id_MME_UE_S1AP_ID,
613 criticality := reject,
614 value_ := {MME_UE_S1AP_ID := mme_id}
615 }, {
616 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
617 criticality := reject,
618 value_ := {ENB_UE_S1AP_ID := enb_id}
619 }, {
Pau Espin Pedrolecfc7d62023-12-13 18:49:29 +0100620 id := S1AP_Constants.id_E_RABSetupListCtxtSURes,
Harald Weltece818da2019-07-03 22:03:16 +0800621 criticality := ignore,
622 value_ := {E_RABSetupListCtxtSURes := rab_setup_items}
Pau Espin Pedrolecfc7d62023-12-13 18:49:29 +0100623 }
624 /*, {
Harald Weltece818da2019-07-03 22:03:16 +0800625 id := S1AP_Constants.id_E_RABFailedToSetupListBearerSURes,
626 criticality := ignore,
627 value_ := {E_RABList := rab_items}
Pau Espin Pedrolecfc7d62023-12-13 18:49:29 +0100628 }*/
Harald Weltece818da2019-07-03 22:03:16 +0800629 }
630 }
631 }
632 }
633}
634template (present) S1AP_PDU
635tr_S1AP_InitialCtxSetupResp(template (present) MME_UE_S1AP_ID mme_id := ?,
636 template (present) ENB_UE_S1AP_ID enb_id := ?,
637 template (present) E_RABSetupListCtxtSURes rab_setup_items := ?,
638 template (present) E_RABList rab_items := ?) := {
639 successfulOutcome := {
640 procedureCode := id_InitialContextSetup,
641 criticality := reject,
642 value_ := {
643 InitialContextSetupResponse := {
644 protocolIEs := {
645 {
646 id := S1AP_Constants.id_MME_UE_S1AP_ID,
647 criticality := reject,
648 value_ := {MME_UE_S1AP_ID := mme_id}
649 }, {
650 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
651 criticality := reject,
652 value_ := {ENB_UE_S1AP_ID := enb_id}
653 }, {
654 id := S1AP_Constants.id_E_RABSetupListBearerSURes,
655 criticality := ignore,
656 value_ := {E_RABSetupListCtxtSURes := rab_setup_items}
657 }, {
658 id := S1AP_Constants.id_E_RABFailedToSetupListBearerSURes,
659 criticality := ignore,
660 value_ := {E_RABList := rab_items}
Philipp Maier05c6ab22023-07-07 10:28:57 +0200661 }, *
Harald Weltece818da2019-07-03 22:03:16 +0800662 }
663 }
664 }
665 }
666}
667
668/* 9.1.4.4 INITIAL CONTEXT SETUP FAILURE */
669template (value) S1AP_PDU
670ts_S1AP_InitialCtxSetupFail(template (value) MME_UE_S1AP_ID mme_id,
671 template (value) ENB_UE_S1AP_ID enb_id,
672 template (value) Cause cause) := {
673 unsuccessfulOutcome := {
674 procedureCode := id_InitialContextSetup,
675 criticality := reject,
676 value_ := {
677 InitialContextSetupFailure := {
678 protocolIEs := {
679 {
680 id := S1AP_Constants.id_MME_UE_S1AP_ID,
681 criticality := ignore,
682 value_ := {MME_UE_S1AP_ID := mme_id}
683 }, {
684 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
685 criticality := ignore,
686 value_ := {ENB_UE_S1AP_ID := enb_id}
687 }, {
688 id := S1AP_Constants.id_Cause,
689 criticality := ignore,
690 value_ := {Cause := cause}
691 }
692 }
693 }
694 }
695 }
696}
697template (present) S1AP_PDU
698tr_S1AP_InitialCtxSetupFail(template (present) MME_UE_S1AP_ID mme_id := ?,
699 template (present) ENB_UE_S1AP_ID enb_id := ?,
700 template (present) Cause cause := ?) := {
701 unsuccessfulOutcome := {
702 procedureCode := id_InitialContextSetup,
703 criticality := reject,
704 value_ := {
705 InitialContextSetupFailure := {
706 protocolIEs := {
707 {
708 id := S1AP_Constants.id_MME_UE_S1AP_ID,
709 criticality := ignore,
710 value_ := {MME_UE_S1AP_ID := mme_id}
711 }, {
712 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
713 criticality := ignore,
714 value_ := {ENB_UE_S1AP_ID := enb_id}
715 }, {
716 id := S1AP_Constants.id_Cause,
717 criticality := ignore,
718 value_ := {Cause := cause}
719 }, *
720 }
721 }
722 }
723 }
724}
725
726/* 9.1.4.5 UE CONTEXT RELEASE REQUEST */
727template (value) S1AP_PDU
728ts_S1AP_UeContextReleaseReq(template (value) MME_UE_S1AP_ID mme_id,
729 template (value) ENB_UE_S1AP_ID enb_id,
730 template (value) Cause cause) := {
731 initiatingMessage := {
732 procedureCode := id_UEContextReleaseRequest,
733 criticality := reject,
734 value_ := {
735 UEContextReleaseRequest := {
736 protocolIEs := {
737 {
738 id := S1AP_Constants.id_MME_UE_S1AP_ID,
739 criticality := ignore,
740 value_ := {MME_UE_S1AP_ID := mme_id}
741 }, {
742 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
743 criticality := ignore,
744 value_ := {ENB_UE_S1AP_ID := enb_id}
745 }, {
746 id := S1AP_Constants.id_Cause,
747 criticality := ignore,
748 value_ := {Cause := cause}
749 }
750 }
751 }
752 }
753 }
754}
755template (present) S1AP_PDU
756tr_S1AP_UeContextReleaseReq(template (present) MME_UE_S1AP_ID mme_id := ?,
757 template (present) ENB_UE_S1AP_ID enb_id := ?,
758 template (present) Cause cause := ?) := {
759 initiatingMessage := {
760 procedureCode := id_UEContextReleaseRequest,
761 criticality := reject,
762 value_ := {
763 UEContextReleaseRequest := {
764 protocolIEs := {
765 {
766 id := S1AP_Constants.id_MME_UE_S1AP_ID,
767 criticality := ignore,
768 value_ := {MME_UE_S1AP_ID := mme_id}
769 }, {
770 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
771 criticality := ignore,
772 value_ := {ENB_UE_S1AP_ID := enb_id}
773 }, {
774 id := S1AP_Constants.id_Cause,
775 criticality := ignore,
776 value_ := {Cause := cause}
777 }, *
778 }
779 }
780 }
781 }
782}
783
784/* 9.1.4.6 UE CONTEXT RELEASE COMMAND */
785template (value) S1AP_PDU
786ts_S1AP_UeContextReleaseCmd(template (value) UE_S1AP_IDs mme_ids,
787 template (value) Cause cause) := {
788 initiatingMessage := {
789 procedureCode := id_UEContextRelease,
790 criticality := reject,
791 value_ := {
792 UEContextReleaseCommand := {
793 protocolIEs := {
794 {
795 id := S1AP_Constants.id_UE_S1AP_IDs,
796 criticality := ignore,
797 value_ := {UE_S1AP_IDs := mme_ids}
798 }, {
799 id := S1AP_Constants.id_Cause,
800 criticality := ignore,
801 value_ := {Cause := cause}
802 }
803 }
804 }
805 }
806 }
807}
808template (present) S1AP_PDU
809tr_S1AP_UeContextReleaseCmd(template (present) UE_S1AP_IDs ue_ids := ?,
810 template (present) Cause cause := ?) := {
811 initiatingMessage := {
812 procedureCode := id_UEContextRelease,
813 criticality := reject,
814 value_ := {
815 UEContextReleaseCommand := {
816 protocolIEs := {
817 {
818 id := S1AP_Constants.id_UE_S1AP_IDs,
819 criticality := reject,
820 value_ := {UE_S1AP_IDs := ue_ids}
821 }, {
822 id := S1AP_Constants.id_Cause,
823 criticality := ignore,
824 value_ := {Cause := cause}
825 }, *
826 }
827 }
828 }
829 }
830}
831
832/* 9.1.4.7 UE CONTEXT RELEASE COMPLETE */
833template (value) S1AP_PDU
834ts_S1AP_UeContextReleaseCompl(template (value) MME_UE_S1AP_ID mme_id,
835 template (value) ENB_UE_S1AP_ID enb_id) := {
836 successfulOutcome := {
837 procedureCode := id_UEContextRelease,
838 criticality := reject,
839 value_ := {
840 UEContextReleaseComplete := {
841 protocolIEs := {
842 {
843 id := S1AP_Constants.id_MME_UE_S1AP_ID,
844 criticality := reject,
845 value_ := {MME_UE_S1AP_ID := mme_id}
846 }, {
847 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
848 criticality := ignore,
849 value_ := {ENB_UE_S1AP_ID := enb_id}
850 }
851 }
852 }
853 }
854 }
855}
856template (present) S1AP_PDU
857tr_S1AP_UeContextReleaseCompl(template (present) MME_UE_S1AP_ID mme_id := ?,
858 template (present) ENB_UE_S1AP_ID enb_id := ?) := {
859 successfulOutcome := {
860 procedureCode := id_UEContextRelease,
861 criticality := reject,
862 value_ := {
863 UEContextReleaseComplete := {
864 protocolIEs := {
865 {
866 id := S1AP_Constants.id_MME_UE_S1AP_ID,
867 criticality := ignore,
868 value_ := {MME_UE_S1AP_ID := mme_id}
869 }, {
870 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
871 criticality := ignore,
872 value_ := {ENB_UE_S1AP_ID := enb_id}
873 }, *
874 }
875 }
876 }
877 }
878}
879
880/* 9.1.4.20 CONNECTION ESTABLISHMENT INDICATION */
881template (value) S1AP_PDU
882ts_S1AP_ConnEstInd(template (value) MME_UE_S1AP_ID mme_id,
883 template (value) ENB_UE_S1AP_ID enb_id) := {
884 initiatingMessage := {
885 procedureCode := id_ConnectionEstablishmentIndication,
886 criticality := reject,
887 value_ := {
888 ConnectionEstablishmentIndication := {
889 protocolIEs := {
890 {
891 id := S1AP_Constants.id_MME_UE_S1AP_ID,
892 criticality := ignore,
893 value_ := {MME_UE_S1AP_ID := mme_id}
894 }, {
895 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
896 criticality := ignore,
897 value_ := {ENB_UE_S1AP_ID := enb_id}
898 }
899 }
900 }
901 }
902 }
903}
904template (present) S1AP_PDU
905tr_S1AP_ConnEstInd(template (present) MME_UE_S1AP_ID mme_id := ?,
906 template (present) ENB_UE_S1AP_ID enb_id := ?) := {
907 initiatingMessage := {
908 procedureCode := id_ConnectionEstablishmentIndication,
909 criticality := reject,
910 value_ := {
911 ConnectionEstablishmentIndication := {
912 protocolIEs := {
913 {
914 id := S1AP_Constants.id_MME_UE_S1AP_ID,
915 criticality := ignore,
916 value_ := {MME_UE_S1AP_ID := mme_id}
917 }, {
918 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
919 criticality := ignore,
920 value_ := {ENB_UE_S1AP_ID := enb_id}
921 }, *
922 }
923 }
924 }
925 }
926}
927
Philipp Maier7ac8d332023-07-24 11:12:45 +0200928/* 9.1.14 eNB DIRECT INFORMATION TRANSFER */
929template (value) S1AP_PDU
930ts_S1AP_eNBDirectInfTrans(template (value) Inter_SystemInformationTransferType inf) := {
931 initiatingMessage := {
932 procedureCode := id_eNBDirectInformationTransfer,
933 criticality := reject,
934 value_ := {
935 eNBDirectInformationTransfer := {
936 protocolIEs := {
937 {
938 id := S1AP_Constants.id_Inter_SystemInformationTransferTypeEDT,
939 criticality := ignore,
940 value_ := {Inter_SystemInformationTransferType := inf}
941 }
942 }
943 }
944 }
945 }
946}
Harald Weltece818da2019-07-03 22:03:16 +0800947
Philipp Maier7ac8d332023-07-24 11:12:45 +0200948/* 9.1.15 MME DIRECT INFORMATION TRANSFER */
949template (present) S1AP_PDU
950tr_S1AP_MMEDirectInfTrans(template (present) Inter_SystemInformationTransferType inf := ?) := {
951 initiatingMessage := {
952 procedureCode := id_MMEDirectInformationTransfer,
953 criticality := ignore,
954 value_ := {
955 MMEDirectInformationTransfer := {
956 protocolIEs := {
957 {
958 id := S1AP_Constants.id_Inter_SystemInformationTransferTypeMDT,
959 criticality := reject,
960 value_ := {Inter_SystemInformationTransferType := inf}
961 }, *
962 }
963 }
964 }
965 }
966}
Harald Weltece818da2019-07-03 22:03:16 +0800967
968/* all non-UE-related S1AP messages */
969template (present) S1AP_PDU
970tr_S1AP_nonUErelated := (tr_S1AP_SetupReq, tr_S1AP_SetupResp, tr_S1AP_SetupFail,
Philipp Maier46059f02023-08-16 14:45:27 +0200971 tr_S1AP_Reset, tr_S1AP_ResetAck, tr_S1AP_ResetAck_any, tr_S1AP_MMEDirectInfTrans
Harald Weltece818da2019-07-03 22:03:16 +0800972 );
973
Vadim Yanitskiybadf38d2024-06-18 03:10:13 +0700974
975/* 9.1.3.1 E-RAB SETUP REQUEST */
976template (value) E_RABToBeSetupItemBearerSUReq
977ts_S1AP_RABToBeSetupItemBearerSUReq(template (value) E_RAB_ID rab_id,
978 template (value) E_RABLevelQoSParameters qos_params,
979 template (value) TransportLayerAddress tla,
980 template (value) GTP_TEID gtp_teid,
981 template (value) NAS_PDU nas_pdu) := {
982 e_RAB_ID := rab_id,
983 e_RABlevelQoSParameters := qos_params,
984 transportLayerAddress := tla,
985 gTP_TEID := gtp_teid,
986 nAS_PDU := nas_pdu,
987 iE_Extensions := omit
988}
989template (value) E_RABToBeSetupListBearerSUReq
990ts_S1AP_RABToBeSetupListBearerSUReq(template (value) E_RABToBeSetupItemBearerSUReq it) := {
991 {
992 id := S1AP_Constants.id_E_RABToBeSetupItemBearerSUReq,
993 criticality := reject,
994 value_ := { E_RABToBeSetupItemBearerSUReq := it }
995 }
996}
997
998template (value) S1AP_PDU
999ts_S1AP_RABSetupReq(template (value) MME_UE_S1AP_ID mme_id,
1000 template (value) ENB_UE_S1AP_ID enb_id,
1001 template (value) E_RABToBeSetupListBearerSUReq rab_setup_items) := {
1002 initiatingMessage := {
1003 procedureCode := S1AP_Constants.id_E_RABSetup,
1004 criticality := reject,
1005 value_ := {
1006 E_RABSetupRequest := {
1007 protocolIEs := {
1008 {
1009 id := S1AP_Constants.id_MME_UE_S1AP_ID,
1010 criticality := reject,
1011 value_ := { MME_UE_S1AP_ID := mme_id }
1012 }, {
1013 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
1014 criticality := reject,
1015 value_ := { ENB_UE_S1AP_ID := enb_id }
1016 }, {
1017 id := S1AP_Constants.id_E_RABToBeSetupListBearerSUReq,
1018 criticality := reject,
1019 value_ := { E_RABToBeSetupListBearerSUReq := rab_setup_items }
1020 }
1021 }
1022 }
1023 }
1024 }
1025}
1026template (present) S1AP_PDU
1027tr_S1AP_RABSetupReq(template (present) MME_UE_S1AP_ID mme_id := ?,
1028 template (present) ENB_UE_S1AP_ID enb_id := ?,
1029 template (present) E_RABToBeSetupListBearerSUReq rab_setup_items := ?) := {
1030 initiatingMessage := {
1031 procedureCode := S1AP_Constants.id_E_RABSetup,
1032 criticality := reject,
1033 value_ := {
1034 E_RABSetupRequest := {
1035 protocolIEs := {
1036 {
1037 id := S1AP_Constants.id_MME_UE_S1AP_ID,
1038 criticality := reject,
1039 value_ := { MME_UE_S1AP_ID := mme_id }
1040 }, {
1041 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
1042 criticality := reject,
1043 value_ := { ENB_UE_S1AP_ID := enb_id }
1044 }, {
1045 id := S1AP_Constants.id_E_RABToBeSetupListBearerSUReq,
1046 criticality := reject,
1047 value_ := { E_RABToBeSetupListBearerSUReq := rab_setup_items }
1048 }, *
1049 }
1050 }
1051 }
1052 }
1053}
1054
1055/* 9.1.3.2 E-RAB SETUP RESPONSE */
1056template (value) E_RABSetupItemBearerSURes
1057ts_S1AP_RABSetupItemBearerSURes(template (value) E_RAB_ID rab_id,
1058 template (value) TransportLayerAddress tla,
1059 template (value) GTP_TEID gtp_teid) := {
1060 e_RAB_ID := rab_id,
1061 transportLayerAddress := tla,
1062 gTP_TEID := gtp_teid,
1063 iE_Extensions := omit
1064}
1065template (value) E_RABSetupListBearerSURes
1066ts_S1AP_RABSetupListBearerSURes(template (value) E_RABSetupItemBearerSURes it) := {
1067 {
1068 id := S1AP_Constants.id_E_RABSetupItemBearerSURes,
1069 criticality := reject,
1070 value_ := { E_RABSetupItemBearerSURes := it }
1071 }
1072}
1073
1074template (value) S1AP_PDU
1075ts_S1AP_RABSetupRsp(template (value) MME_UE_S1AP_ID mme_id,
1076 template (value) ENB_UE_S1AP_ID enb_id,
1077 template (value) E_RABSetupListBearerSURes rab_setup_items) := {
1078 successfulOutcome := {
1079 procedureCode := S1AP_Constants.id_E_RABSetup,
1080 criticality := reject,
1081 value_ := {
1082 e_RABSetupResponse := {
1083 protocolIEs := {
1084 {
1085 id := S1AP_Constants.id_MME_UE_S1AP_ID,
1086 criticality := reject,
1087 value_ := { MME_UE_S1AP_ID := mme_id }
1088 }, {
1089 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
1090 criticality := reject,
1091 value_ := { ENB_UE_S1AP_ID := enb_id }
1092 }, {
1093 id := S1AP_Constants.id_E_RABSetupListBearerSURes,
1094 criticality := reject,
1095 value_ := { e_RABSetupListBearerSURes := rab_setup_items }
1096 }
1097 }
1098 }
1099 }
1100 }
1101}
1102template (present) S1AP_PDU
1103tr_S1AP_RABSetupRsp(template (present) MME_UE_S1AP_ID mme_id := ?,
1104 template (present) ENB_UE_S1AP_ID enb_id := ?,
1105 template (present) E_RABSetupListBearerSURes rab_setup_items := ?) := {
1106 successfulOutcome := {
1107 procedureCode := S1AP_Constants.id_E_RABSetup,
1108 criticality := reject,
1109 value_ := {
1110 e_RABSetupResponse := {
1111 protocolIEs := {
1112 {
1113 id := S1AP_Constants.id_MME_UE_S1AP_ID,
1114 criticality := reject,
1115 value_ := { MME_UE_S1AP_ID := mme_id }
1116 }, {
1117 id := S1AP_Constants.id_eNB_UE_S1AP_ID,
1118 criticality := reject,
1119 value_ := { ENB_UE_S1AP_ID := enb_id }
1120 }, {
1121 id := S1AP_Constants.id_E_RABSetupListBearerSURes,
1122 criticality := reject,
1123 value_ := { e_RABSetupListBearerSURes := rab_setup_items }
1124 }, *
1125 }
1126 }
1127 }
1128 }
1129}
1130
Harald Weltece818da2019-07-03 22:03:16 +08001131}