blob: e55f2125bf4bd44bc9a2c4d102a92752fb987e5b [file] [log] [blame]
Harald Weltea013e682018-06-18 19:49:39 +02001module RANAP_Templates {
2
3import from General_Types all;
4
5import from RANAP_IEs all;
6import from RANAP_CommonDataTypes all;
7import from RANAP_Constants all;
8import from RANAP_Containers all;
9import from RANAP_PDU_Contents all;
10import from RANAP_PDU_Descriptions all;
11
12template (value) Cause ts_RanapCause_om_intervention := { misc := 113 };
13
14/*****************************************************************************************************
15 * Reset
16 *****************************************************************************************************/
17
18template (value) RANAP_PDU
19ts_RANAP_Reset(template (value) Cause cause, template (value) CN_DomainIndicator dom,
20 template (omit) Reset.protocolExtensions exts := omit) := {
21 initiatingMessage := {
22 procedureCode := id_Reset,
23 criticality := reject,
24 value_ := {
25 Reset := {
26 protocolIEs := {
27 {
28 id := id_Cause,
29 criticality := ignore,
30 value_ := {
31 cause := cause
32 }
33 }, {
34 id := id_CN_DomainIndicator,
35 criticality := reject,
36 value_ := {
37 cN_DomainIndicator := dom
38 }
39 }
40 },
41 protocolExtensions := exts
42 }
43 }
44 }
45}
46template RANAP_PDU
47tr_RANAP_Reset(template Cause cause := ?, template CN_DomainIndicator dom := ?,
48 template Reset.protocolExtensions exts := *) := {
49 initiatingMessage := {
50 procedureCode := id_Reset,
51 criticality := reject,
52 value_ := {
53 Reset := {
54 protocolIEs := {
55 {
56 id := id_Cause,
57 criticality := ignore,
58 value_ := {
59 cause := cause
60 }
61 }, {
62 id := id_CN_DomainIndicator,
63 criticality := reject,
64 value_ := {
65 cN_DomainIndicator := dom
66 }
67 }, *
68 },
69 protocolExtensions := exts
70 }
71 }
72 }
73}
74
75template (value) RANAP_PDU
76ts_RANAP_ResetAck(template (value) CN_DomainIndicator dom,
77 template (omit) ResetAcknowledge.protocolExtensions exts := omit) := {
78 successfulOutcome := {
79 procedureCode := id_Reset,
80 criticality := reject,
81 value_ := {
82 ResetAcknowledge := {
83 protocolIEs := {
84 {
85 id := id_CN_DomainIndicator,
86 criticality := reject,
87 value_ := {
88 cN_DomainIndicator := dom
89 }
90 }
91 },
92 protocolExtensions := exts
93 }
94 }
95 }
96}
97template RANAP_PDU
98tr_RANAP_ResetAck(template CN_DomainIndicator dom := ?,
99 template ResetAcknowledge.protocolExtensions exts := *) := {
100 successfulOutcome := {
101 procedureCode := id_Reset,
102 criticality := reject,
103 value_ := {
104 ResetAcknowledge := {
105 protocolIEs := {
106 {
107 id := id_CN_DomainIndicator,
108 criticality := reject,
109 value_ := {
110 cN_DomainIndicator := dom
111 }
112 }, *
113 },
114 protocolExtensions := exts
115 }
116 }
117 }
118}
119
120/*****************************************************************************************************
121 * Security Mode Control
122 *****************************************************************************************************/
123
124template (value) RANAP_PDU
125ts_RANAP_SecurityModeCmd(template (value) PermittedIntegrityProtectionAlgorithms uia_algs,
126 template (value) IntegrityProtectionKey uia_key,
127 template (value) KeyStatus key_sts,
128 template (omit) SecurityModeCommand.protocolExtensions exts := omit) := {
129 initiatingMessage := {
130 procedureCode := id_SecurityModeControl,
131 criticality := reject,
132 value_ := {
133 securityModeCommand := {
134 protocolIEs := {
135 {
136 id := id_IntegrityProtectionInformation,
137 criticality := reject,
138 value_ := {
139 integrityProtectionInformation := {
140 permittedAlgorithms := uia_algs,
141 key := uia_key,
142 iE_Extensions := omit
143 }
144 }
145 }, {
146 id := id_KeyStatus,
147 criticality := reject,
148 value_ := {
149 keyStatus := key_sts
150 }
151 }
152 },
153 protocolExtensions := exts
154 }
155 }
156 }
157}
158template RANAP_PDU
159tr_RANAP_SecurityModeCmd(template PermittedIntegrityProtectionAlgorithms uia_algs,
160 template IntegrityProtectionKey uia_key,
161 template KeyStatus key_sts,
162 template SecurityModeCommand.protocolExtensions exts := *) := {
163 initiatingMessage := {
164 procedureCode := id_SecurityModeControl,
165 criticality := reject,
166 value_ := {
167 securityModeCommand := {
168 protocolIEs := {
169 {
170 id := id_IntegrityProtectionInformation,
171 criticality := reject,
172 value_ := {
173 integrityProtectionInformation := {
174 permittedAlgorithms := uia_algs,
175 key := uia_key,
176 iE_Extensions := *
177 }
178 }
179 }, {
180 id := id_KeyStatus,
181 criticality := reject,
182 value_ := {
183 keyStatus := key_sts
184 }
185 }
186 },
187 protocolExtensions := exts
188 }
189 }
190 }
191}
192
193template (value) RANAP_PDU
194ts_RANAP_SecurityModeCmdEnc(template (value) PermittedIntegrityProtectionAlgorithms uia_algs,
195 template (value) IntegrityProtectionKey uia_key,
196 template (value) KeyStatus key_sts,
197 template (value) PermittedEncryptionAlgorithms uea_algs,
198 template (value) EncryptionKey uea_key,
199 template (omit) SecurityModeCommand.protocolExtensions exts := omit) := {
200 initiatingMessage := {
201 procedureCode := id_SecurityModeControl,
202 criticality := reject,
203 value_ := {
204 securityModeCommand := {
205 protocolIEs := {
206 {
207 id := id_IntegrityProtectionInformation,
208 criticality := reject,
209 value_ := {
210 integrityProtectionInformation := {
211 permittedAlgorithms := uia_algs,
212 key := uia_key,
213 iE_Extensions := omit
214 }
215 }
216 }, {
217 id := id_EncryptionInformation,
218 criticality := ignore,
219 value_ := {
220 encryptionInformation := {
221 permittedAlgorithms := uea_algs,
222 key := uea_key,
223 iE_Extensions := omit
224 }
225 }
226 }, {
227 id := id_KeyStatus,
228 criticality := reject,
229 value_ := {
230 keyStatus := key_sts
231 }
232 }
233 },
234 protocolExtensions := exts
235 }
236 }
237 }
238}
239template RANAP_PDU
240tr_RANAP_SecurityModeCmdEnc(template PermittedIntegrityProtectionAlgorithms uia_algs,
241 template IntegrityProtectionKey uia_key,
242 template KeyStatus key_sts,
243 template PermittedEncryptionAlgorithms uea_algs,
244 template EncryptionKey uea_key,
245 template SecurityModeCommand.protocolExtensions exts := *) := {
246 initiatingMessage := {
247 procedureCode := id_SecurityModeControl,
248 criticality := reject,
249 value_ := {
250 securityModeCommand := {
251 protocolIEs := {
252 {
253 id := id_IntegrityProtectionInformation,
254 criticality := reject,
255 value_ := {
256 integrityProtectionInformation := {
257 permittedAlgorithms := uia_algs,
258 key := uia_key,
259 iE_Extensions := *
260 }
261 }
262 }, {
263 id := id_EncryptionInformation,
264 criticality := ignore,
265 value_ := {
266 encryptionInformation := {
267 permittedAlgorithms := uea_algs,
268 key := uea_key,
269 iE_Extensions := *
270 }
271 }
272 }, {
273 id := id_KeyStatus,
274 criticality := reject,
275 value_ := {
276 keyStatus := key_sts
277 }
278 }
279 },
280 protocolExtensions := exts
281 }
282 }
283 }
284}
285
286template (value) RANAP_PDU
287ts_RANAP_SecurityModeComplete(template (value) IntegrityProtectionAlgorithm uia_alg,
288 template (omit) SecurityModeComplete.protocolExtensions exts := omit) := {
289 successfulOutcome := {
290 procedureCode := id_SecurityModeControl,
291 criticality := reject,
292 value_ := {
293 securityModeComplete := {
294 protocolIEs := {
295 {
296 id := id_ChosenIntegrityProtectionAlgorithm,
297 criticality := reject,
298 value_ := {
299 chosenIntegrityProtectionAlgorithm := uia_alg
300 }
301 }
302 },
303 protocolExtensions := exts
304 }
305 }
306 }
307}
308template RANAP_PDU
309tr_RANAP_SecurityModeComplete(template IntegrityProtectionAlgorithm uia_alg,
310 template SecurityModeComplete.protocolExtensions exts := *) := {
311 successfulOutcome := {
312 procedureCode := id_SecurityModeControl,
313 criticality := reject,
314 value_ := {
315 securityModeComplete := {
316 protocolIEs := {
317 {
318 id := id_ChosenIntegrityProtectionAlgorithm,
319 criticality := reject,
320 value_ := {
321 chosenIntegrityProtectionAlgorithm := uia_alg
322 }
323 }
324 },
325 protocolExtensions := exts
326 }
327 }
328 }
329}
330
331template (value) RANAP_PDU
332ts_RANAP_SecurityModeCompleteEnc(template (value) IntegrityProtectionAlgorithm uia_alg,
333 template (value) EncryptionAlgorithm uea_alg,
334 template (omit) SecurityModeComplete.protocolExtensions exts := omit) := {
335 successfulOutcome := {
336 procedureCode := id_SecurityModeControl,
337 criticality := reject,
338 value_ := {
339 securityModeComplete := {
340 protocolIEs := {
341 {
342 id := id_ChosenIntegrityProtectionAlgorithm,
343 criticality := reject,
344 value_ := {
345 chosenIntegrityProtectionAlgorithm := uia_alg
346 }
347 }, {
348 id := id_ChosenEncryptionAlgorithm,
349 criticality := ignore,
350 value_ := {
351 chosenEncryptionAlgorithm := uea_alg
352 }
353 }
354 },
355 protocolExtensions := exts
356 }
357 }
358 }
359}
360template RANAP_PDU
361tr_RANAP_SecurityModeCompleteEnc(template IntegrityProtectionAlgorithm uia_alg,
362 template EncryptionAlgorithm uea_alg,
363 template SecurityModeComplete.protocolExtensions exts := *) := {
364 successfulOutcome := {
365 procedureCode := id_SecurityModeControl,
366 criticality := reject,
367 value_ := {
368 securityModeComplete := {
369 protocolIEs := {
370 {
371 id := id_ChosenIntegrityProtectionAlgorithm,
372 criticality := reject,
373 value_ := {
374 chosenIntegrityProtectionAlgorithm := uia_alg
375 }
376 }, {
377 id := id_ChosenEncryptionAlgorithm,
378 criticality := ignore,
379 value_ := {
380 chosenEncryptionAlgorithm := uea_alg
381 }
382 }
383 },
384 protocolExtensions := exts
385 }
386 }
387 }
388}
389
390template (value) RANAP_PDU
391ts_RANAP_SecurityModeReject(template (value) Cause cause,
392 template (omit) SecurityModeReject.protocolExtensions exts := omit) := {
393 unsuccessfulOutcome := {
394 procedureCode := id_SecurityModeControl,
395 criticality := reject,
396 value_ := {
397 securityModeReject := {
398 protocolIEs := {
399 {
400 id := id_Cause,
401 criticality := ignore,
402 value_ := {
403 cause := cause
404 }
405 }
406 },
407 protocolExtensions := exts
408 }
409 }
410 }
411}
412template RANAP_PDU
413tr_RANAP_SecurityModeReject(template Cause cause,
414 template SecurityModeReject.protocolExtensions exts := *) := {
415 unsuccessfulOutcome := {
416 procedureCode := id_SecurityModeControl,
417 criticality := reject,
418 value_ := {
419 securityModeReject := {
420 protocolIEs := {
421 {
422 id := id_Cause,
423 criticality := ignore,
424 value_ := {
425 cause := cause
426 }
427 }
428 },
429 protocolExtensions := exts
430 }
431 }
432 }
433}
434
435
436
437/*****************************************************************************************************
438 * Iu Release Request
439 *****************************************************************************************************/
440
441template (value) RANAP_PDU
442ts_RANAP_IuReleaseRequest(template (value) Cause cause,
443 template (omit) Iu_ReleaseRequest.protocolExtensions exts := omit) := {
444 initiatingMessage := {
445 procedureCode := id_Iu_ReleaseRequest,
446 criticality := ignore,
447 value_ := {
448 iu_ReleaseRequest := {
449 protocolIEs := {
450 {
451 id := id_Cause,
452 criticality := reject,
453 value_ := {
454 cause := cause
455 }
456 }
457 },
458 protocolExtensions := exts
459 }
460 }
461 }
462}
463template RANAP_PDU
464tr_RANAP_IuReleaseRequest(template Cause cause,
465 template Iu_ReleaseRequest.protocolExtensions exts := *) := {
466 initiatingMessage := {
467 procedureCode := id_Iu_ReleaseRequest,
468 criticality := ignore,
469 value_ := {
470 iu_ReleaseRequest := {
471 protocolIEs := {
472 {
473 id := id_Cause,
474 criticality := reject,
475 value_ := {
476 cause := cause
477 }
478 }
479 },
480 protocolExtensions := exts
481 }
482 }
483 }
484}
485
486/*****************************************************************************************************
487 * RAB Release
488 *****************************************************************************************************/
489
490template (value) RANAP_PDU
491ts_RANAP_RabReleaseRequest(template (value) RAB_ID rab_id, template (value) Cause cause,
492 template (omit) RAB_ReleaseRequest.protocolExtensions exts := omit) := {
493 initiatingMessage := {
494 procedureCode := id_RAB_ReleaseRequest,
495 criticality := ignore,
496 value_ := {
497 rAB_ReleaseRequest := {
498 protocolIEs := {
499 {
500 id := id_RAB_ReleaseList,
501 criticality := ignore,
502 value_ := {
503 rAB_ReleaseList := {{
504 {
505 id := id_RAB_ReleaseItem,
506 criticality := ignore,
507 value_ := {
508 rAB_ReleaseItem := {
509 rAB_ID := rab_id,
510 cause := cause,
511 iE_Extensions := omit
512 }
513 }
514 }
515 }}
516 }
517 }
518 },
519 protocolExtensions := exts
520 }
521 }
522 }
523}
524template RANAP_PDU
525tr_RANAP_RabReleaseRequest(template RAB_ID rab_id, template Cause cause,
526 template RAB_ReleaseRequest.protocolExtensions exts := *) := {
527 initiatingMessage := {
528 procedureCode := id_RAB_ReleaseRequest,
529 criticality := ignore,
530 value_ := {
531 rAB_ReleaseRequest := {
532 protocolIEs := {
533 {
534 id := id_RAB_ReleaseList,
535 criticality := ignore,
536 value_ := {
537 rAB_ReleaseList := {{
538 {
539 id := id_RAB_ReleaseItem,
540 criticality := ignore,
541 value_ := {
542 rAB_ReleaseItem := {
543 rAB_ID := rab_id,
544 cause := cause,
545 iE_Extensions := *
546 }
547 }
548 }
549 }}
550 }
551 }
552 },
553 protocolExtensions := exts
554 }
555 }
556 }
557}
558
559
560/*****************************************************************************************************
561 * Iu Release
562 *****************************************************************************************************/
563
564template (value) RANAP_PDU
565ts_RANAP_IuReleaseCommand(template (value) Cause cause,
566 template (omit) Iu_ReleaseCommand.protocolExtensions exts := omit) := {
567 initiatingMessage := {
568 procedureCode := id_Iu_Release,
569 criticality := reject,
570 value_ := {
571 iu_ReleaseCommand := {
572 protocolIEs := {
573 {
574 id := id_Cause,
575 criticality := ignore,
576 value_ := {
577 cause := cause
578 }
579 }
580 },
581 protocolExtensions := exts
582 }
583 }
584 }
585}
586template RANAP_PDU
587tr_RANAP_IuReleaseCommand(template Cause cause,
588 template Iu_ReleaseCommand.protocolExtensions exts := *) := {
589 initiatingMessage := {
590 procedureCode := id_Iu_Release,
591 criticality := reject,
592 value_ := {
593 iu_ReleaseCommand := {
594 protocolIEs := {
595 {
596 id := id_Cause,
597 criticality := ignore,
598 value_ := {
599 cause := cause
600 }
601 }
602 },
603 protocolExtensions := exts
604 }
605 }
606 }
607}
608
609template (value) RANAP_PDU
610ts_RANAP_IuReleaseComplete(template (omit) Iu_ReleaseComplete.protocolIEs ies := {},
611 template (omit) Iu_ReleaseComplete.protocolExtensions exts := omit) := {
612 successfulOutcome := {
613 procedureCode := id_Iu_Release,
614 criticality := reject,
615 value_ := {
616 iu_ReleaseComplete := {
617 protocolIEs := ies,
618 protocolExtensions := exts
619 }
620 }
621 }
622}
623template RANAP_PDU
624tr_RANAP_IuReleaseComplete(template Iu_ReleaseComplete.protocolIEs ies := *,
625 template Iu_ReleaseComplete.protocolExtensions exts := *) := {
626 successfulOutcome := {
627 procedureCode := id_Iu_Release,
628 criticality := reject,
629 value_ := {
630 iu_ReleaseComplete:= {
631 protocolIEs := ies,
632 protocolExtensions := exts
633 }
634 }
635 }
636}
637
638/*****************************************************************************************************
639 * Paging
640 *****************************************************************************************************/
641
642template (value) RANAP_PDU
643ts_RANAP_Paging(template (value) CN_DomainIndicator dom, template (value) IMSI imsi,
644 template (omit) TemporaryUE_ID temp_id := omit,
645 template (omit) Paging.protocolExtensions exts := omit) := {
646 initiatingMessage := {
647 procedureCode := id_Paging,
648 criticality := ignore,
649 value_ := {
650 paging := {
651 protocolIEs := {
652 {
653 id := id_CN_DomainIndicator,
654 criticality := ignore,
655 value_ := {
656 cN_DomainIndicator := dom
657 }
658 }, {
659 id := id_PermanentNAS_UE_ID,
660 criticality := ignore,
661 value_ := {
662 permanentNAS_UE_ID := {
663 iMSI := imsi
664 }
665 }
666 }
667 },
668 protocolExtensions := exts
669 }
670 }
671 }
672}
673template RANAP_PDU
674tr_RANAP_Paging(template CN_DomainIndicator dom, template IMSI imsi,
675 template Paging.protocolExtensions exts := *) := {
676 initiatingMessage := {
677 procedureCode := id_Paging,
678 criticality := ignore,
679 value_ := {
680 paging := {
681 protocolIEs := {
682 {
683 id := id_CN_DomainIndicator,
684 criticality := ignore,
685 value_ := {
686 cN_DomainIndicator := dom
687 }
688 }, {
689 id := id_PermanentNAS_UE_ID,
690 criticality := ignore,
691 value_ := {
692 permanentNAS_UE_ID := {
693 iMSI := imsi
694 }
695 }
696 }, *
697 },
698 protocolExtensions := exts
699 }
700 }
701 }
702}
703
704
705
706/*****************************************************************************************************
707 * Common ID
708 *****************************************************************************************************/
709
710template (value) RANAP_PDU
711ts_RANAP_CommonId(template (value) IMSI imsi,
712 template (omit) CommonID.protocolExtensions exts := omit) := {
713 initiatingMessage := {
714 procedureCode := id_CommonID,
715 criticality := ignore,
716 value_ := {
717 commonID := {
718 protocolIEs := {
719 {
720 id := id_PermanentNAS_UE_ID,
721 criticality := ignore,
722 value_ := {
723 permanentNAS_UE_ID := {
724 iMSI := imsi
725 }
726 }
727 }
728 },
729 protocolExtensions := exts
730 }
731 }
732 }
733}
734template RANAP_PDU
735tr_RANAP_CommonId(template IMSI imsi,
736 template CommonID.protocolExtensions exts := *) := {
737 initiatingMessage := {
738 procedureCode := id_CommonID,
739 criticality := ignore,
740 value_ := {
741 commonID := {
742 protocolIEs := {
743 {
744 id := id_PermanentNAS_UE_ID,
745 criticality := ignore,
746 value_ := {
747 permanentNAS_UE_ID := {
748 iMSI := imsi
749 }
750 }
751 }
752 },
753 protocolExtensions := exts
754 }
755 }
756 }
757}
758
759/*****************************************************************************************************
760 * Initial UE Message
761 *****************************************************************************************************/
762
763template (value) RANAP_PDU
764ts_RANAP_initialUE_CS(template (value) LAI lai, template (value) SAI sai,
765 template (value) NAS_PDU nas,
766 template (value) IuSignallingConnectionIdentifier sigc_id,
767 template (value) GlobalRNC_ID grnc_id,
768 template (omit) InitialUE_Message.protocolExtensions exts := omit) := {
769 initiatingMessage := {
770 procedureCode := id_InitialUE_Message,
771 criticality := ignore,
772 value_ := {
773 initialUE_Message := {
774 protocolIEs := {
775 {
776 id := id_CN_DomainIndicator,
777 criticality := ignore,
778 value_ := {
779 cN_DomainIndicator := cs_domain
780 }
781 }, {
782 id := id_LAI,
783 criticality := ignore,
784 value_ := {
785 lAI := lai
786 }
787 }, {
788 id := id_SAI,
789 criticality := ignore,
790 value_ := {
791 sAI := sai
792 }
793 }, {
794 id := id_NAS_PDU,
795 criticality := ignore,
796 value_ := {
797 nAS_PDU := nas
798 }
799 }, {
800 id := id_IuSigConId,
801 criticality := ignore,
802 value_ := {
803 iuSignallingConnectionIdentifier := sigc_id
804 }
805 }, {
806 id := id_GlobalRNC_ID,
807 criticality := ignore,
808 value_ := {
809 globalRNC_ID := grnc_id
810 }
811 }
812 },
813 protocolExtensions := exts
814 }
815 }
816 }
817}
818template RANAP_PDU
819tr_RANAP_initialUE_CS(template LAI lai, template SAI sai,
820 template NAS_PDU nas,
821 template IuSignallingConnectionIdentifier sigc_id,
822 template GlobalRNC_ID grnc_id,
823 template InitialUE_Message.protocolExtensions exts := *) := {
824 initiatingMessage := {
825 procedureCode := id_InitialUE_Message,
826 criticality := ignore,
827 value_ := {
828 initialUE_Message := {
829 protocolIEs := {
830 {
831 id := id_CN_DomainIndicator,
832 criticality := ignore,
833 value_ := {
834 cN_DomainIndicator := cs_domain
835 }
836 }, {
837 id := id_LAI,
838 criticality := ignore,
839 value_ := {
840 lAI := lai
841 }
842 }, {
843 id := id_SAI,
844 criticality := ignore,
845 value_ := {
846 sAI := sai
847 }
848 }, {
849 id := id_NAS_PDU,
850 criticality := ignore,
851 value_ := {
852 nAS_PDU := nas
853 }
854 }, {
855 id := id_IuSigConId,
856 criticality := ignore,
857 value_ := {
858 iuSignallingConnectionIdentifier := sigc_id
859 }
860 }, {
861 id := id_GlobalRNC_ID,
862 criticality := ignore,
863 value_ := {
864 globalRNC_ID := grnc_id
865 }
866 }
867 },
868 protocolExtensions := exts
869 }
870 }
871 }
872}
873
874template (value) RANAP_PDU
875ts_RANAP_initialUE_PS(template (value) LAI lai, template (value) RAC rac, template (value) SAI sai,
876 template (value) NAS_PDU nas,
877 template (value) IuSignallingConnectionIdentifier sigc_id,
878 template (value) GlobalRNC_ID grnc_id,
879 template (omit) InitialUE_Message.protocolExtensions exts := omit) := {
880 initiatingMessage := {
881 procedureCode := id_InitialUE_Message,
882 criticality := ignore,
883 value_ := {
884 initialUE_Message := {
885 protocolIEs := {
886 {
887 id := id_CN_DomainIndicator,
888 criticality := ignore,
889 value_ := {
890 cN_DomainIndicator := ps_domain
891 }
892 }, {
893 id := id_LAI,
894 criticality := ignore,
895 value_ := {
896 lAI := lai
897 }
898 }, {
899 id := id_RAC,
900 criticality := ignore,
901 value_ := {
902 rAC := rac
903 }
904 }, {
905 id := id_SAI,
906 criticality := ignore,
907 value_ := {
908 sAI := sai
909 }
910 }, {
911 id := id_NAS_PDU,
912 criticality := ignore,
913 value_ := {
914 nAS_PDU := nas
915 }
916 }, {
917 id := id_IuSigConId,
918 criticality := ignore,
919 value_ := {
920 iuSignallingConnectionIdentifier := sigc_id
921 }
922 }, {
923 id := id_GlobalRNC_ID,
924 criticality := ignore,
925 value_ := {
926 globalRNC_ID := grnc_id
927 }
928 }
929 },
930 protocolExtensions := exts
931 }
932 }
933 }
934}
935template RANAP_PDU
936tr_RANAP_initialUE_PS(template LAI lai, template RAC rac, template SAI sai,
937 template NAS_PDU nas,
938 template IuSignallingConnectionIdentifier sigc_id,
939 template GlobalRNC_ID grnc_id,
940 template InitialUE_Message.protocolExtensions exts := *) := {
941 initiatingMessage := {
942 procedureCode := id_InitialUE_Message,
943 criticality := ignore,
944 value_ := {
945 initialUE_Message := {
946 protocolIEs := {
947 {
948 id := id_CN_DomainIndicator,
949 criticality := ignore,
950 value_ := {
951 cN_DomainIndicator := ps_domain
952 }
953 }, {
954 id := id_LAI,
955 criticality := ignore,
956 value_ := {
957 lAI := lai
958 }
959 }, {
960 id := id_RAC,
961 criticality := ignore,
962 value_ := {
963 rAC := rac
964 }
965 }, {
966 id := id_SAI,
967 criticality := ignore,
968 value_ := {
969 sAI := sai
970 }
971 }, {
972 id := id_NAS_PDU,
973 criticality := ignore,
974 value_ := {
975 nAS_PDU := nas
976 }
977 }, {
978 id := id_IuSigConId,
979 criticality := ignore,
980 value_ := {
981 iuSignallingConnectionIdentifier := sigc_id
982 }
983 }, {
984 id := id_GlobalRNC_ID,
985 criticality := ignore,
986 value_ := {
987 globalRNC_ID := grnc_id
988 }
989 }
990 },
991 protocolExtensions := exts
992 }
993 }
994 }
995}
996
997/*****************************************************************************************************
998 * Direct Transfer
999 *****************************************************************************************************/
1000
1001template (value) RANAP_PDU
1002ts_RANAP_DirectTransfer(template (value) NAS_PDU nas,
1003 /* template DirectTransfer.protocolIEs ies := {}, */
1004 template (omit) DirectTransfer.protocolExtensions exts := omit) := {
1005 initiatingMessage := {
1006 procedureCode := id_DirectTransfer,
1007 criticality := ignore,
1008 value_ := {
1009 directTransfer := {
1010 protocolIEs := {
1011 {
1012 id := id_NAS_PDU,
1013 criticality := ignore,
1014 value_ := {
1015 nAS_PDU := nas
1016 }
1017 }
1018 /* LAI, RAC, SAI */
1019 },
1020 protocolExtensions := exts
1021 }
1022 }
1023 }
1024}
1025template RANAP_PDU
1026tr_RANAP_DirectTransfer(template NAS_PDU nas,
1027 template SAPI sapi := sapi_0,
1028 /* template DirectTransfer.protocolIEs ies := {}, */
1029 template DirectTransfer.protocolExtensions exts := *) := {
1030 initiatingMessage := {
1031 procedureCode := id_DirectTransfer,
1032 criticality := ignore,
1033 value_ := {
1034 directTransfer := {
1035 protocolIEs := {
1036 {
1037 id := id_NAS_PDU,
1038 criticality := ignore,
1039 value_ := {
1040 nAS_PDU := nas
1041 }
1042 },
1043 * /* LAI, RAC, SAI */
1044 },
1045 protocolExtensions := exts
1046 }
1047 }
1048 }
1049}
1050
1051template (value) RANAP_PDU
1052ts_RANAP_DirectTransferSAPI(template (value) NAS_PDU nas,
1053 template (value) SAPI sapi := sapi_0,
1054 /* template DirectTransfer.protocolIEs ies := {}, */
1055 template (omit) DirectTransfer.protocolExtensions exts := omit) := {
1056 initiatingMessage := {
1057 procedureCode := id_DirectTransfer,
1058 criticality := ignore,
1059 value_ := {
1060 directTransfer := {
1061 protocolIEs := {
1062 {
1063 id := id_NAS_PDU,
1064 criticality := ignore,
1065 value_ := {
1066 nAS_PDU := nas
1067 }
1068 },
1069 /* LAI, RAC, SAI */
1070 {
1071 id := id_SAPI,
1072 criticality := ignore,
1073 value_ := {
1074 sAPI := sapi
1075 }
1076 }
1077 },
1078 protocolExtensions := exts
1079 }
1080 }
1081 }
1082}
1083template RANAP_PDU
1084tr_RANAP_DirectTransferSAPI(template NAS_PDU nas,
1085 template SAPI sapi := sapi_0,
1086 /* template DirectTransfer.protocolIEs ies := {}, */
1087 template DirectTransfer.protocolExtensions exts := *) := {
1088 initiatingMessage := {
1089 procedureCode := id_DirectTransfer,
1090 criticality := ignore,
1091 value_ := {
1092 directTransfer := {
1093 protocolIEs := {
1094 {
1095 id := id_NAS_PDU,
1096 criticality := ignore,
1097 value_ := {
1098 nAS_PDU := nas
1099 }
1100 },
1101 *, /* LAI, RAC, SAI */
1102 {
1103 id := id_SAPI,
1104 criticality := ignore,
1105 value_ := {
1106 sAPI := sapi
1107 }
1108 }
1109 },
1110 protocolExtensions := exts
1111 }
1112 }
1113 }
1114}
1115
1116
1117/*****************************************************************************************************
1118 * RAB Assignment Request
1119 *****************************************************************************************************/
1120
1121template (value) RAB_Parameters ts_RabParams := {
1122 trafficClass := conversational,
1123 rAB_AsymmetryIndicator := symmetric_bidirectional,
1124 maxBitrate := { 12200 },
1125 guaranteedBitRate := { 12200 },
1126 deliveryOrder := delivery_order_requested,
1127 maxSDU_Size := 244,
1128 sDU_Parameters := {
1129 {
1130 sDU_ErrorRatio := { mantissa := 1, exponent := 5, iE_Extensions := omit },
1131 residualBitErrorRatio := { mantissa := 1, exponent := 6, iE_Extensions := omit },
1132 deliveryOfErroneousSDU := yes,
1133 sDU_FormatInformationParameters := {
1134 {
1135 subflowSDU_Size := 81,
1136 rAB_SubflowCombinationBitRate := omit,
1137 iE_Extensions := omit
1138 }, {
1139 subflowSDU_Size := 39,
1140 rAB_SubflowCombinationBitRate := omit,
1141 iE_Extensions := omit
1142 }
1143 },
1144 iE_Extensions := omit
1145 }, {
1146 sDU_ErrorRatio := omit,
1147 residualBitErrorRatio := { mantissa := 1, exponent := 3, iE_Extensions := omit },
1148 deliveryOfErroneousSDU := no_error_detection_consideration,
1149 sDU_FormatInformationParameters := {
1150 {
1151 subflowSDU_Size := 103,
1152 rAB_SubflowCombinationBitRate := omit,
1153 iE_Extensions := omit
1154 }, {
1155 subflowSDU_Size := 0,
1156 rAB_SubflowCombinationBitRate := omit,
1157 iE_Extensions := omit
1158 }
1159 },
1160 iE_Extensions := omit
1161 }, {
1162 sDU_ErrorRatio := omit,
1163 residualBitErrorRatio := { mantissa := 5, exponent := 3, iE_Extensions := omit },
1164 deliveryOfErroneousSDU := no_error_detection_consideration,
1165 sDU_FormatInformationParameters := {
1166 {
1167 subflowSDU_Size := 60,
1168 rAB_SubflowCombinationBitRate := omit,
1169 iE_Extensions := omit
1170 }, {
1171 subflowSDU_Size := 0,
1172 rAB_SubflowCombinationBitRate := omit,
1173 iE_Extensions := omit
1174 }
1175 },
1176 iE_Extensions := omit
1177 }
1178 },
1179 transferDelay := 80,
1180 trafficHandlingPriority := omit,
1181 allocationOrRetentionPriority := {
1182 priorityLevel := 15,
1183 pre_emptionCapability := shall_not_trigger_pre_emption,
1184 pre_emptionVulnerability := pre_emptable,
1185 queuingAllowed := queueing_not_allowed,
1186 iE_Extensions := omit
1187 },
1188 sourceStatisticsDescriptor := omit,
1189 relocationRequirement := omit,
1190 iE_Extensions := omit
1191}
1192
1193template (value) UserPlaneInformation ts_UserPlaneInfo := {
1194 userPlaneMode := support_mode_for_predefined_SDU_sizes,
1195 uP_ModeVersions := '0000000000000010'B,
1196 iE_Extensions := omit
1197}
1198
1199template (value) TransportLayerInformation ts_TLI(template (value) TransportLayerAddress tla,
1200 template (value) BindingID binding_id) := {
1201 transportLayerAddress := tla,
1202 iuTransportAssociation := {
1203 bindingID := binding_id
1204 },
1205 iE_Extensions := omit
1206}
1207template TransportLayerInformation tr_TLI(template TransportLayerAddress tla,
1208 template BindingID binding_id) := {
1209 transportLayerAddress := tla,
1210 iuTransportAssociation := {
1211 bindingID := binding_id
1212 },
1213 iE_Extensions := *
1214}
1215
1216template (value) RAB_SetupOrModifyList ts_RAB_SML(template (value) RAB_ID rab_id,
1217 template (value) TransportLayerAddress tla,
1218 template (value) BindingID binding_id) := { {
1219 {
1220 id := id_RAB_SetupOrModifyItem,
1221 firstCriticality := reject,
1222 firstValue := {
1223 rAB_SetupOrModifyItemFirst := {
1224 rAB_ID := rab_id,
1225 nAS_SynchronisationIndicator := omit,
1226 rAB_Parameters := ts_RabParams,
1227 userPlaneInformation := ts_UserPlaneInfo,
1228 transportLayerInformation := ts_TLI(tla, binding_id),
1229 service_Handover := omit,
1230 iE_Extensions := omit
1231 }
1232 },
1233 secondCriticality := ignore,
1234 secondValue := {
1235 rAB_SetupOrModifyItemSecond := {
1236 pDP_TypeInformation := omit,
1237 dataVolumeReportingIndication := omit,
1238 dl_GTP_PDU_SequenceNumber := omit,
1239 ul_GTP_PDU_SequenceNumber := omit,
1240 dl_N_PDU_SequenceNumber := omit,
1241 ul_N_PDU_SequenceNumber := omit,
1242 iE_Extensions := omit
1243 }
1244 }
1245 }
1246} }
1247template RAB_SetupOrModifyList tr_RAB_SML(template RAB_ID rab_id,
1248 template TransportLayerAddress tla,
1249 template BindingID binding_id) := { {
1250 {
1251 id := id_RAB_SetupOrModifyItem,
1252 firstCriticality := reject,
1253 firstValue := {
1254 rAB_SetupOrModifyItemFirst := {
1255 rAB_ID := rab_id,
1256 nAS_SynchronisationIndicator := *,
1257 rAB_Parameters := ts_RabParams,
1258 userPlaneInformation := ts_UserPlaneInfo,
1259 transportLayerInformation := tr_TLI(tla, binding_id),
1260 service_Handover := *,
1261 iE_Extensions := *
1262 }
1263 },
1264 secondCriticality := ignore,
1265 secondValue := {
1266 rAB_SetupOrModifyItemSecond := {
1267 pDP_TypeInformation := omit,
1268 dataVolumeReportingIndication := omit,
1269 dl_GTP_PDU_SequenceNumber := omit,
1270 ul_GTP_PDU_SequenceNumber := omit,
1271 dl_N_PDU_SequenceNumber := omit,
1272 ul_N_PDU_SequenceNumber := omit,
1273 iE_Extensions := omit
1274 }
1275 }
1276 }
1277} }
1278
1279
1280template (value) RANAP_PDU
1281ts_RANAP_RabAssReq(template (value) RAB_SetupOrModifyList rab_sml,
1282 template (omit) RAB_AssignmentRequest.protocolExtensions exts := omit) := {
1283 initiatingMessage := {
1284 procedureCode := id_RAB_Assignment,
1285 criticality := reject,
1286 value_ := {
1287 rAB_AssignmentRequest := {
1288 protocolIEs := {
1289 {
1290 id := id_RAB_SetupOrModifyList,
1291 criticality := reject,
1292 value_ := {
1293 rAB_SetupOrModifyList := rab_sml
1294 }
1295 }
1296 },
1297 protocolExtensions := exts
1298 }
1299 }
1300 }
1301}
1302template RANAP_PDU
1303tr_RANAP_RabAssReq(template RAB_SetupOrModifyList rab_sml,
1304 template RAB_AssignmentRequest.protocolExtensions exts := *) := {
1305 initiatingMessage := {
1306 procedureCode := id_RAB_Assignment,
1307 criticality := reject,
1308 value_ := {
1309 rAB_AssignmentRequest := {
1310 protocolIEs := {
1311 {
1312 id := id_RAB_SetupOrModifyList,
1313 criticality := reject,
1314 value_ := {
1315 rAB_SetupOrModifyList := rab_sml
1316 }
1317 }
1318 },
1319 protocolExtensions := exts
1320 }
1321 }
1322 }
1323}
1324
1325
1326template (value) RANAP_PDU
1327ts_RANAP_RabAssResp(template (value) RAB_SetupOrModifiedList rab_sml,
1328 template (omit) RAB_AssignmentResponse.protocolExtensions exts := omit) := {
1329 outcome := {
1330 procedureCode := id_RAB_Assignment,
1331 criticality := reject,
1332 value_ := {
1333 rAB_AssignmentResponse := {
1334 protocolIEs := {
1335 {
1336 id := id_RAB_SetupOrModifiedList,
1337 criticality := ignore,
1338 value_ := {
1339 rAB_SetupOrModifiedList := rab_sml
1340 }
1341 }
1342 /* RAB-ReleasedList */
1343 /* RAB-QueuedList */
1344 /* RAB-FailedList */
1345 /* RAB-ReleaseFailedList */
1346 },
1347 protocolExtensions := exts
1348 }
1349 }
1350 }
1351}
1352template RANAP_PDU
1353tr_RANAP_RabAssResp(template RAB_SetupOrModifiedList rab_sml,
1354 template RAB_AssignmentResponse.protocolExtensions exts := *) := {
1355 outcome := {
1356 procedureCode := id_RAB_Assignment,
1357 criticality := reject,
1358 value_ := {
1359 rAB_AssignmentResponse := {
1360 protocolIEs := {
1361 {
1362 id := id_RAB_SetupOrModifiedList,
1363 criticality := ignore,
1364 value_ := {
1365 rAB_SetupOrModifiedList := rab_sml
1366 }
1367 }, *
1368 /* RAB-ReleasedList */
1369 /* RAB-QueuedList */
1370 /* RAB-FailedList */
1371 /* RAB-ReleaseFailedList */
1372 },
1373 protocolExtensions := exts
1374 }
1375 }
1376 }
1377}
1378
1379
1380/*****************************************************************************************************
1381 *
1382 *****************************************************************************************************/
1383
1384/* extract the L3 (NAS) from a given RANAP message */
1385function f_ranap_extract_l3(RANAP_PDU ranap) return template (omit) octetstring
1386{
1387 var integer i;
1388
1389 if (match(ranap, tr_RANAP_initialUE_CS(?, ?, ?, ?, ?)) or
1390 match(ranap, tr_RANAP_initialUE_PS(?, ?, ?, ?, ?, ?)) ) {
1391 var InitialUE_Message.protocolIEs ies := ranap.initiatingMessage.value_.initialUE_Message.protocolIEs;
1392 for (i := 0; i < lengthof(ies); i := i+1) {
1393 if (ies[i].id == id_NAS_PDU) {
1394 return ies[i].value_.nAS_PDU;
1395 }
1396 }
1397 } else if (match(ranap, tr_RANAP_DirectTransfer(?, ?))) {
1398 var DirectTransfer.protocolIEs ies := ranap.initiatingMessage.value_.directTransfer.protocolIEs;
1399 for (i := 0; i < lengthof(ies); i := i+1) {
1400 if (ies[i].id == id_NAS_PDU) {
1401 return ies[i].value_.nAS_PDU;
1402 }
1403 }
1404 } else {
1405 /* relocationInformation not supported yet*/
1406 }
1407 return omit;
1408}
1409
1410function f_ranap_extract_sapi(RANAP_PDU ranap) return template (omit) SAPI
1411{
1412 var integer i;
1413
1414 /* InitialUE message has no SAPI */
1415 if (match(ranap, tr_RANAP_DirectTransfer(?, ?))) {
1416 var DirectTransfer.protocolIEs ies := ranap.initiatingMessage.value_.directTransfer.protocolIEs;
1417 for (i := 0; i < lengthof(ies); i := i+1) {
1418 if (ies[i].id == id_SAPI) {
1419 return ies[i].value_.sAPI;
1420 }
1421 }
1422 }
1423 return omit;
1424}
1425
1426
1427}