diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..83f3b28090a345d806304d048bb1d4b355347e9c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,10 @@ +[submodule "titan-test-system-framework"] + path = titan-test-system-framework + url = https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git + branch = devel +[submodule "ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module"] + path = ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module + url = https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Abstract_Socket.git +[submodule "ttcn/LibCommon"] + path = ttcn/LibCommon + url = https://forge.etsi.org/rep/LIBS/LibCommon.git diff --git a/LICENSE b/LICENSE index 2708889c31a25bec89b466c00cbfc7619617f6e7..7cae15525d27106ef0705c0055984716c4daa3dd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2024 ETSI +Copyright 2019-2022 ETSI Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..a41f49226d8274ed4a71b39f919adafceb94ca7f --- /dev/null +++ b/Makefile @@ -0,0 +1,139 @@ +-include config.mk + +ifeq (,$(ATS)) + $(error ATS shall be defined) +endif + +ifeq (,$(TOPDIR)) + TOPDIR := . +endif + +ifeq (,$(TTCN3_DIR)) + $(error TTCN3_DIR shall be defined in config.mk) +endif + +first: all + +define IncludeModule +undefine sources +undefine modules +undefine includes +include $(1)/module.mk +$$(foreach S, $$(sources), $$(eval all_sources += $$(if $$(filter /%, $$(S)), $$(TOPDIR)$$(S), $(1)/$$(S)))) +$$(foreach I, $$(includes), $$(eval all_includes += $$(if $$(filter /%, $$(I)), $$(TOPDIR)$$(I), $(1)/$$(I)))) +$$(foreach M, $$(modules), $$(eval $$(call IncludeModule, $$(if $$(filter /%, $$(M)), $$(TOPDIR)$$(M), $(1)/$$(M))))) +endef + +all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src /usr/include/jsoncpp /usr/include/libxml2 +defines += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS) AS_USE_SSL _GNU_SOURCE +libs += $(TTCN3_DIR)/lib/libttcn3-rt2-parallel.a -lstdc++fs + +ifeq (Windows_NT,$(OS)) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +defines += WIN32 +libs += $(patsubst %, -L%/lib, $(OPENSSL_DIR)) +all_includes += $(addsuffix /include, $(OPENSSL_DIR)) +libs += $(WPCAP_DLL_PATH) +else +defines += LINUX +libs += -lpcap -lrt -lpthread +endif + +libs += -lssl -lcrypto -lxml2 -ljsoncpp -L$(OSIP_LIB) -losipparser2 -lsctp + +$(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS))) + +outdir := $(TOPDIR)/build/$(ATS) +bindir := $(TOPDIR)/bin + +sources := $(all_sources) +includes := $(outdir) $(outdir)/.. $(outdir)/asn1 $(all_includes) $(NPCAP_INCLUDE) $(OSIP_INCLUDE) + +ifeq (Windows_NT,$(OS)) + EXE=.exe +endif + +ttcn_sources := $(filter %.ttcn , $(sources)) +ttcn3_sources := $(filter %.ttcn3, $(sources)) +asn_sources := $(filter %.asn, $(sources)) +asn1_sources := $(filter %.asn1, $(sources)) + +tt_sources := $(ttcn_sources) $(ttcn3_sources) $(asn_sources) $(asn1_sources) +cc_sources := $(filter %.cc, $(sources)) + +gen_ttcn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.cc, $(ttcn_sources)))) +gen_ttcn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.hh, $(ttcn_sources)))) +gen_ttcn3_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.cc, $(ttcn3_sources)))) +gen_ttcn3_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.hh, $(ttcn3_sources)))) +gen_asn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.cc, $(asn_sources)))) +gen_asn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.hh, $(asn_sources)))) +gen_asn1_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.cc, $(asn1_sources)))) +gen_asn1_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.hh, $(asn1_sources)))) + +gen_sources := $(gen_ttcn_sources) $(gen_ttcn3_sources) $(gen_asn_sources) $(gen_asn1_sources) +gen_headers := $(gen_ttcn_headers) $(gen_ttcn3_headers) $(gen_asn_headers) $(gen_asn1_headers) + +gen_objects := $(patsubst %.cc, %.o, $(gen_sources)) +cc_objects := $(patsubst %.cc, $(outdir)/%.o, $(cc_sources)) + +.PHONY: all FORCE echo + +all: $(bindir) $(outdir) $(bindir)/$(ATS)$(EXE) + +echo_sources: + @echo -e "$(addsuffix \n,$(all_sources))" + +echo: echo_sources + @echo -e "sources:\n $(addsuffix \n, $(sources))" + @echo -e "gen_sources:\n $(addsuffix \n, $(gen_sources))" + @echo -e "gen_objects:\n $(addsuffix \n, $(gen_objects))" + @echo -e "cc_objects:\n $(addsuffix \n, $(cc_objects))" + @echo -e "includes:\n $(addsuffix \n, $(includes))" + @echo -e "defines: $(addsuffix \n, $(defines))" + +clean: + rm -f $(outdir)/$(ATS)$(EXE) $(gen_objects) $(gen_sources) $(gen_headers) $(cc_objects) $(outdir)/.generate + +regen: force_regen $(outdir)/.generate +force_regen: + rm -f $(outdir)/.generate + +t3q: all + @echo -e "Code checking in progress..." + @java -Xmx3g -Xss512m -jar $(T3Q_PATH)/t3q.jar --config $(T3Q_PATH)/$(T3Q_CONFIG) $(tt_sources) > $(outdir)/t3q.out 2>&1 ; cd - + @echo -e "Code checking in done..." + @echo -e "Output file is located here: $(outdir)/t3q.out" + +t3d: all + @echo -e "TTCN-3 doc generation in progress..." + @java -Xmx3g -Xss512m -jar $(T3D_PATH)/t3d.jar --config $(T3D_PATH)/$(T3D_CONFIG) $(tt_sources) > $(outdir)/t3d.out 2>&1 ; cd - + @echo -e "TTCN-3 doc generation done..." + @echo -e "Output file is located here: $(outdir)/t3d.out" + +$(outdir) $(outdir)/asn1 $(bindir): + mkdir -p $@ + +$(bindir)/$(ATS)$(EXE): $(gen_objects) $(cc_objects) + g++ -g -O0 -std=c++17 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(libs) + +$(gen_objects) :%.o :%.cc + g++ -g -O0 -std=c++17 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $< + +$(cc_objects) : $(outdir)/%.o : %.cc + mkdir -p $(dir $@) + g++ -g -O0 -std=c++17 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $< + +#$(gen_sources): +# $(TTCN3_DIR)/bin/asn1_compiler $(TTCN3_COMPILER_OPTIONS) -o $(outdir) $(tt_sources) + +$(gen_sources): $(outdir)/.generate + +$(outdir)/.generate: Makefile $(tt_sources) + $(TTCN3_DIR)/bin/compiler $(TTCN3_COMPILER_OPTIONS) -o $(outdir) $(tt_sources) + touch $@ + +$(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S))) +$(foreach S, $(ttcn3_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn3, %.cc, $(S))): $(S))) +$(foreach S, $(asn_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn, %.cc, $(S))): $(S))) +$(foreach S, $(asn1_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn1, %.cc, $(S))): $(S))) diff --git a/NAS_ETSI.code-workspace b/NAS_ETSI.code-workspace new file mode 100644 index 0000000000000000000000000000000000000000..e2a5ee7e96b9364d80101f3adcb07ff35a3b2e68 --- /dev/null +++ b/NAS_ETSI.code-workspace @@ -0,0 +1,87 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../ngap" + }, + { + "path": "../../frameworks/titan/titan.core" + }, + { + "path": "../5G-AKA-simulation-in-C" + } + ], + "settings": { + "files.associations": { + "pdusessionresourcemodifyindication.h": "c", + "random": "cpp", + "export": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "bitset": "cpp", + "chrono": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "ratio": "cpp", + "regex": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "hash_map": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "semaphore": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "stop_token": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "cinttypes": "cpp", + "typeinfo": "cpp", + "variant": "cpp" + } + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..29d516e7efc0ff6c2dd18d7e36b152d7b5c7a5fb --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# NG_NAS + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://forge.etsi.org/rep/int/5g-core/nas.git +git branch -M main +git push -uf origin main +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://forge.etsi.org/rep/int/5g-core/nas/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/TP_ideas_and_status.md b/TP_ideas_and_status.md new file mode 100644 index 0000000000000000000000000000000000000000..2502fba4c8071f469fdbb5cfde917544567976e8 --- /dev/null +++ b/TP_ideas_and_status.md @@ -0,0 +1,336 @@ +# TP (objectives) implemented +- TP_5GNAS_AMF_AUT_REQ_01 (FF) + - Verify that the IUT sends an AUTHENTICATION REQUEST message correctly upon receipt of a NAS Registration without an active security context. + +- TP_5GNAS_AMF_AUT_REQ_02 (FF) + - Verify that the IUT sends an AUTHENTICATION REJECT message correctly upon receipt of an AUTHENTICATION RESPONSE message indicating a wrong ARP IEI. + +- TP_5GNAS_AMF_AUT_REQ_03 (FF) + - 5.4.1.3.7.b) + - Verify that the IUT stops re-sending an AUTHENTICATION REQUEST message if no AUTHENTICATION RESPONSE message is received on the fifth expiry of timer T3560. + +- TP_5GNAS_AMF_AUT_REQ_04 (FF) + - Verify that the IUT sends an IDENTITY REQUEST message correctly upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #20 - MAC failure. + +- TP_5GNAS_AMF_AUT_REQ_05 (FF) + - Verify that the IUT sends a new AUTHENTICATION REQUEST message with new ngKSI value to re-initiate the 5G AKA based primary authentication upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #71 - ngKSI already in use. + +- TP_NGNAS_AMF_AUT_SEQ_01 (FF) + - Verify that the IUT sends a SECURITY MODE CONTROL message correctly to indicate NAS security mode procedure upon receipt of a NAS AUTHENTICATION RESPONSE. + +- TP_5GNAS_AMF_REG_REJ_01 (SINTESIO) + - Verify that the IUT rejects initial registration request due to general NAS level mobility management congestion control with 5GMM cause value #22 - congestion and assign a value for back-off timer T3346. + +- TP_5GNAS_AMF_REG_REJ_02 (SINTESIO) + - Verify that the IUT rejects initial registration request because all the S-NSSAI(s) included in the requested NSSAI are either rejected for current PLMN, rejected for the current registration area or rejected due to failed or revoked NSSAIs. + +## Section 5.5.1.2.4: Initial registration accepted by the network (SINTESIO) +- TP_5GNAS_AMF_REG_ACC_01 + - Verify that the IUT sends a REGISTRATION ACCEPT message containing the 5GS registration result, TAI list, 5G-GUTI and T3512 when initial registration is accepted by the network. + +- TP_5GNAS_AMF_REG_ACC_02 + - Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS allowed when initial registration with SMS over NAS is requested and network allows SMS service. + +- TP_5GNAS_AMF_REG_ACC_03 + - Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS not allowed when initial registration with SMS over NAS is requested and network does not support SMS service. + +## Section 5.4.1.3.7 (FF) +- TP_5GNAS_AMF_AUT_ABN_01 + - Verify that the IUT sends a new IDENTITY REQUEST message to obtain the SUCI from the UE upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #26 - non-5G authentication unacceptable. (FF) + - This case is also valid in cases where the UE send Auth Response, but the response parameters do not match. + - Please check Note 2: "... the network may also terminate the 5G AKA based primary authentication ..." Depends on ID used in Initial NAS message + +## Section 5.4.2: Security mode control procedure (FF) +- TP_5GNAS_AMF_SEC_ACC_01 + - Verify that the IUT, upon receiving the NAS Security Mode Complete Message after completing the NAS Authentication and Security procedure, successfully completes the registration process by accepting the registration. + +- TP_5GNAS_AMF_SEC_REJ_01 + - Verify that the IUT, upon receiving the NAS Security Mode Reject Message after a failed NAS Authentication and security procedure, successfully aborts the registration process by rejecting the registration. + +## Section 5.4.5: NAS transport procedure (FF) ( 8.2.10, 8.2.11) +- TP_5GNAS_AMF_DLN_ACC_01 + - Verify that the IUT correctly handles a UL NAS transport message containing a PDU SESSION ESTABLISHMENT REQUEST from the UE and responds with a DL NAS transport message containing a PDU SESSION ESTABLISHMENT ACCEPT. + +## Section 5.5.1.2.4: Initial registration accepted by the network (SINTESIO) +- TP_5GNAS_AMF_REG_ACC_04 + - Verify that the IUT includes the allowed NSSAI in the REGISTRATION ACCEPT message when the UE includes a requested NSSAI in the REGISTRATION REQUEST message and the network allows one or more S-NSSAIs from the requested NSSAI. + +- TP_5GNAS_AMF_REG_ACC_05 + - Verify that the IUT optionally includes rejected NSSAI in the REGISTRATION ACCEPT message when the network rejects one or more S-NSSAIs from the requested NSSAI. + + +## Section 5.5.2.2.3 UE-initiated de-registration procedure completion (SINTESIO) +- TP_5GNAS_AMF_DRG_ACC_01 + - Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with "Normal de-registration" from the UE, sends a DEREGISTRATION ACCEPT message. + +- TP_5GNAS_AMF_DRG_ACC_02 + - Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with "Switch off" from the UE, does not send a DEREGISTRATION ACCEPT message and IUT completes de-registration procedure. + +## Section 5.5.2.3.1 Network-initiated de-registration procedure initiation (SINTESIO) +- TP_5GNAS_AMF_DRG_REQ_01 + - Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message containing De-registration type IE with re-registration not required and the access type based on the UE’s registration status (3GPP access only). **NOTE:** explicit network deregistration triggered by O&M - deactivation of UE + +- TP_5GNAS_AMF_DRG_REQ_02 + - Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message and if UE does not send DEREGISTRATION ACCEPT then IUT retransmits DEREGISTRATION REQUEST message after timer T3522 expiration. **NOTE:** explicit network deregistration triggered by O&M - UE deregistration + +- TP_5GNAS_AMF_DRG_REQ_03 + - Verify that the IUT initiates network de-registration by sending DEREGISTRATION REQUEST message containing De-registration type IE with re-registration required and the access type based on the UE’s registration status (3GPP access only). **NOTE 1:** UE sends DEREGISTRATION ACCEPT and starts with re-registration procedure.(also used ref 5.5.2.3.2 1st paragraph) **NOTE 2:** explicit network deregistration triggered by O&M - UE deregistration + + + +# TP objective ideas reviewed + +## Section 5.4.1.3.7 (FF) + +- TP_5GNAS_AMF_AUT_ABN_02 + - Verify that the IUT sends a new AUTHENTICATION REQUEST message to re-initiate the 5G AKA based primary authentication upon receipt of an IDENTIFICATION RESPONSE message indicating an incorrect 5G-GUTI to SUPI mapping. (FF) + +- TP_5GNAS_AMF_AUT_ABN_03 + - Verify that the IUT sends a AUTHENTICATION REJECT message to terminate the 5G AKA based primary authentication and key agreement authentication procedure upon receipt of an IDENTIFICATION RESPONSE message indicating an correct 5G-GUTI to SUPI mapping. (FF) + +- TP_5GNAS_AMF_AUT_ABN_04 + - Verify that the IUT sends a new AUTHENTICATION REQUEST message after a successful re-synchronisation procedure upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #21 (Synch failure) and including the AUTS parameter. (FF) + + +## Section 5.4.2: Security mode control procedure (FF) +- TP_5GNAS_AMF_SEC_ABN_01 + - Verify that the IUT sends a new AUTHENTICATION REQUEST message to re-initiate the 5G AKA based primary authentication upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #71 (ngKSI already in use). (FF) See above in Section 5.4.1.3.7 + + +## ## Section 5.4.3: Identification procedure (FF) +- TP_5GNAS_AMF_IDN_ACC_02 + - Verify that the IUT sends an IDENTITY REQUEST message correctly upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #20. (already implemented as: TP_5GNAS_AMF_AUT_REQ_04) + +- TP_5GNAS_AMF_IDN_RES_01 + - Verify that the IUT, upon receiving an IDENTITY RESPONSE message from the UE with an incorrect IMSI, correctly sends an AUTHENTICATION REQUEST message. The IDENTITY REQUEST message is triggered during an authentication procedure with a failed authentication (AUTHENTICATION FAILURE). + +- TP_5GNAS_AMF_IDN_REJ_01 + - Verify that the IUT, upon receiving an IDENTITY RESPONSE message from the UE with a correct IMSI, correctly sends an AUTHENTICATION REJECT message. The IDENTITY REQUEST message is triggered during an authentication procedure with a failed authentication (AUTHENTICATION FAILURE). + +- TP_5GNAS_AMF_IDN_RES_02 + - Verify that the IUT stops re-sending an Identity REQUEST message if no Identity RESPONSE message is received on the fifth expiry of timer T3519. + + +## Section 5.5.2.3.1 Network-initiated de-registration procedure initiation (SINTESIO) +- TP_5GNAS_AMF_DRG_REQ_04 + - Verify that if de-registration is triggered due to IUT slice-specific authentication and authorization failure or revocation, the network sets the 5GMM cause value to #62 "No network slices available" and includes the rejected NSSAI IE in the DEREGISTRATION REQUEST message. + + +## 5.5.1.2.8 Abnormal cases on the network side - Initial Registration (SINTESIO) + - TP_5GNAS_AMF_REG_ABN_01 + - Verify that the IUT retransmits the REGISTRATION ACCEPT message and restarts timer T3550 upon the first four expirations. + + - TP_5GNAS_AMF_REG_ABN_02 + - Verify that the IUT aborts the registration procedure for initial registration and enters the 5GMM-REGISTERED state on the fifth expiry. NOTE: 5GMM-REGISTERED state can be checked over O&M + + - TP_5GNAS_AMF_REG_ABN_03 + - Verify that the IUT aborts the registration procedure for initial registration and enters the 5GMM-REGISTERED state when a lower layer failure occurs before receiving the REGISTRATION COMPLETE message while timer T3550 is running. NOTE: 5GMM-REGISTERED state can be checked over O&M + + - TP_5GNAS_AMF_REG_ABN_04 [BPIN: It shall be investigate what kind of message can be constructed to get proposed cause. Should be possible since 5G-NAS is not ASN1 and therefore type system fully controled by ttcn-3] + - Verify that the IUT responds to a REGISTRATION REQUEST message with a protocol error by sending a REGISTRATION REJECT message with appropriate 5GMM cause values: + #96: Invalid mandatory information + #99: Information element non-existent or not implemented + #100: Conditional IE error + #111: Protocol error, unspecified. + + - TP_5GNAS_AMF_REG_ABN_05 + - Verify that the IUT aborts the previous registration procedure and initiates a new registration procedure if the information elements in a second REGISTRATION REQUEST message differ from those in the first and if the REGISTRATION COMPLETE message has not been received for first registration. + + - TP_5GNAS_AMF_REG_ABN_06 + - Verify that the IUT resends the REGISTRATION ACCEPT message and restarts T3550 if the information elements in the first and second REGISTRATION REQUEST message do not differ and if the REGISTRATION COMPLETE message has not been received for first registration. The retransmission counter related to T3550 is not incremented. + + - TP_5GNAS_AMF_REG_ABN_07 + - Verify that the IUT aborts the registration procedure for initial registration and progresses the de-registration procedure as specified when a DEREGISTRATION REQUEST is received before the REGISTRATION COMPLETE message. + + - TP_5GNAS_AMF_REG_ABN_08 + - Validate that the AMF rejects a REGISTRATION REQUEST message with invalid or unacceptable UE security capabilities by sending a REGISTRATION REJECT message. + +## 5.5.2.3.5 Abnormal cases in the network side (SINTESIO) +- TP_5GNAS_AMF_DRG_ABN_01 + - Verify that the IUT retransmits DEREGISTRATION REQUEST message after timer T3522 expiration four times (i.e. on the fifth expiry of timer T3522, the de-registration procedure shall be aborted). + +- TP_5GNAS_AMF_DRG_ABN_02 + - Verify that if IUT receives a DEREGISTRATION REQUEST message with "switch off" indication, before the network-initiated de-registration procedure has been completed, both procedures shall be considered completed. + +- TP_5GNAS_AMF_DRG_ABN_03 + - Verify that if IUT receives a DEREGISTRATION REQUEST message without "switch off" indication, before the network-initiated de-registration procedure has been completed, the IUT shall send a DEREGISTRATION ACCEPT message to the UE. + +- TP_5GNAS_AMF_DRG_ABN_04 + - Verify that if IUT receives a REGISTRATION REQUEST message indicating "initial registration" in the 5GS registration type IE before the network-initiated de-registration procedure has been completed, the IUT shall aborted the de-registration procedure and the registration procedure shall be progressed. + +- TP_5GNAS_AMF_DRG_ABN_05 + - Verify that if IUT sends a DEREGISTRATION REQUEST message without 5GMM cause value #11, #12, #13 or #15 and the IUT receives a REGISTRATION REQUEST message indicating either "mobility registration updating" or "periodic registration updating" in the 5GS registration type IE before the network-initiated de-registration procedure has been completed, the de-registration procedure shall be progressed, i.e. the REGISTRATION REQUEST message shall be ignored. + +- TP_5GNAS_AMF_DRG_ABN_06 + - Verify that if IUT sends a DEREGISTRATION REQUEST message with 5GMM cause value #11, #12, #13 or #15 and the IUT receives a REGISTRATION REQUEST message indicating either "mobility registration updating" or "periodic registration updating" in the 5GS registration type IE before the network-initiated de-registration procedure has been completed, the de-registration procedure shall be aborted and the registration procedure shall be progressed. + +- TP_5GNAS_AMF_DRG_ABN_07 + - Verify that if IUT receives a SERVICE REQUEST message or a CONTROL PLANE SERVICE REQUEST message before the network-initiated de-registration procedure has been completed (e.g. the DEREGISTRATION REQUEST message is pending to be sent to the UE), the network shall progress the de-registration procedure. + + +## 6.3.1.1 (FF) +- TP_5GNAS_AMF_UPA_ACC_01 + - Verify that the IUT, upon receiving the PDU SESSION AUTHENTICATION COMPLETE Message after completing the PDU session authentication and authorization procedure, successfully completes the process by sending PDU SESSION ESTABLISHMENT ACCEPT. + +## 6.3.1.2.3 Abnormal cases on the network side (FF) +- TP_5GNAS_AMF_UPA_ABN_01 + - Verify that the IUT retransmits PDU SESSION AUTHENTICATION COMMAND message after timer T3590 expiration first time. + +- TP_5GNAS_AMF_UPA_ABN_02 + - Verify that the IUT aborts the procedure after timer T3590 expiration four times. + + +## 6.4.1.3 UE-requested PDU session establishment procedure accepted by the network (FF) + - TP_5GNAS_AMF_UPE_ACC_01 + - Verify that the IUT, upon receiving the PDU SESSION ESTABLISHMENT REQUEST from the UE with correct data and with type initial request, sends PDU SESSION ESTABLISHMENT ACCEPT meesage + + +## 6.4.1.7 Abnormal cases on the network side (FF) +- TP_5GNAS_AMF_UPE_ABN_01 + - Verify that the IUT sends a PDU SESSION ESTABLISHMENT REJECT with cause #31 (request rejected, unspecified), when the UE sends a PDU SESSION ESTABLISHMENT REQUEST with type initial emergency request and there is already a emergency PDU session for the UE. + Note: possible, that the IUT releases the existing emergency session and don't sends a REJECT. Maybe implementation-dependend? + +- TP_5GNAS_AMF_UPE_ABN_02 + - Verify that the IUT sends a PDU SESSION ESTABLISHMENT REJECT with cause #54 (PDU session does not exist), when the UE sends a PDU SESSION ESTABLISHMENT REQUEST with type existing PDU session and there is no PDU session with that ID. + +- TP_5GNAS_AMF_UPE_ABN_03 + - Verify that the IUT sends a PDU SESSION ESTABLISHMENT REJECT with cause #29 (user authentication or authorization failed), when the UE sends a PDU SESSION ESTABLISHMENT REQUEST with type initial request and the provided authentication and authorization data don't match local policy and user's subscription data. + + +## 6.4.2.4.1 UE-requested PDU session modification procedure not accepted by the network (FF) +- TP_5GNAS_AMF_UPN_REJ_01 + - Verify the IUT, upon receiving a PDU SESSION MODIFICATION REQUEST by the UE with a request of LADN modification and UE outside service area, sends a SESSION MODIFICATION REJECT with reason #46 (out of LADN service area). + +- TP_5GNAS_AMF_UPN_REJ_02 + - Verify the IUT, upon receiving a PDU SESSION MODIFICATION REQUEST by the UE with a request for a not supported service by the PLMN, sends a SESSION MODIFICATION REJECT with reason #32 (Service option not supported). + +- TP_5GNAS_AMF_UPN_REJ_03 + - Verify the IUT, upon receiving a PDU SESSION MODIFICATION REQUEST by the UE with a request including a PTI that is already in use, sends a SESSION MODIFICATION REJECT with reason #35 (PTI already in use). + +- TP_5GNAS_AMF_UPN_REJ_04 + - Verify the IUT, upon receiving a PDU SESSION MODIFICATION REQUEST by the UE with a request for a wrong 5QI, sends a SESSION MODIFICATION REJECT with reason #59 (Unsupported 5QI value). + +## 6.4.3.2, 6.4.3.4 (FF) +- TP_5GNAS_AMF_UPR_REJ_01 + - Verify that the IUT sends correctly a PDU SESSION RELEASE REJECT after receiving a PDU SESSION RELEASE REQUEST by the UE and not accepts the session release with reason #35 (PTI already in use). + +- TP_5GNAS_AMF_UPR_REJ_02 + - Verify that the IUT sends correctly a PDU SESSION RELEASE REJECT after receiving a PDU SESSION RELEASE REQUEST by the UE and not accepts the session release with reason #43 (Invalid PDU session identity). + Note: there can be other protocol reasons for not accepting the PDU Session release + + +## 6.4.3.6 Abnormal cases on the network side (FF) +- TP_5GNAS_AMF_UPR_ABN_01 + - Verify that the IUT sends correctly a PDU SESSION RELEASE REJECT after receiving a PDU SESSION RELEASE REQUEST with a wrong PDU Sesiion ID by the UE and not accepts the session release with reason #43 (Invalid PDU session identity). + +## 5.6.1.1 +- TP_5GNAS_AMF_SRP_ACC_01 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE, that was initated by a paging request to the UE in 5GMM-IDLE mode over 3GPP access. + +- TP_5GNAS_AMF_SRP_ACC_02 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE, that was initated by a notification with access type indicating non-3GPP access to the UE while in 5GMM-CONNECTED mode over 3GPP access. + +- TP_5GNAS_AMF_SRP_ACC_03 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to having uplink signalling pending while in 5GMM-CONNECTED mode over 3GPP access. + +- TP_5GNAS_AMF_SRP_ACC_04 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to having uplink user data pending while in 5GMM-CONNECTED mode over 3GPP access. + +- TP_5GNAS_AMF_SRP_ACC_05 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to having user data pending due to no user-plane resources established for PDU session(s) used for user data transport while in 5GMM-CONNECTED mode. + +- TP_5GNAS_AMF_SRP_ACC_06 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to having user data pending due to no user-plane resources established for PDU session(s) used for user data transport while in 5GMM-CONNECTED mode with RRC inactive indication. + +- TP_5GNAS_AMF_SRP_ACC_07 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to receiving a request from the upper layers to perform emergency service fallback while in 5GMM-IDLE mode. + +- TP_5GNAS_AMF_SRP_ACC_08 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to receiving a request from the upper layers to perform emergency service fallback while in 5GMM-CONNECTED mode over 3GPP access. + +- TP_5GNAS_AMF_SRP_ACC_09 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to receiving a request from the upper layers to perform emergency service fallback while in 5GMM-CONNECTED mode with RRC inactive indication. + +- TP_5GNAS_AMF_SRP_ACC_10 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to using 5GS services with control plane CIoT 5GS optimization and has pending user data to be sent via user-plane resources while in 5GMM-CONNECTED mode and has a NAS signalling connection only. + +- TP_5GNAS_AMF_SRP_ACC_11 + - Verify that the IUT sends a SERVICE ACCEPT message after receiving a SERVICE REQUEST message by the UE due to requesting resources for V2X communication over PC5 while in 5GMM-IDLE mode over 3GPP access. + +## 6.4.3.2, 6.4.3.4 (FF) +- TP_5GNAS_AMF_UPR_ACC_01 + - Verify that the IUT handles correctly a PDU session release by sending a PDU SESSION RELEASE COMAND with cause #36 (regular deactivation) after receiving a PDU SESSION RELEASE REQUEST by the UE with cause #36 (regular deactivation).## 5.4.6 5GMM status procedure (SINTESIO) +## 5.4.6.2 5GMM status received in the UE +- TP_5GNAS_AMF_EST_STA_01 + - Verify that IUT is able to trigger 5GMM STATUS message with all mandatory IEs. +## 5.4.6.3 5GMM status received in the network +- TP_5GNAS_AMF_EST_STA_02 + - Verify that IUT is able to receive 5GMM STATUS message from UE and no state transition and no specific action shall be taken. + +## 6.5.2 5GSM status received in the UE (SINTESIO) +- TP_5GNAS_AMF_SST_STA_01 + - Verify that IUT is able to trigger 5GSM STATUS message with all mandatory IEs. +## 6.5.3 5GSM status received in the SMF (SINTESIO) +- TP_5GNAS_AMF_SST_STA_02 + - Verify that IUT is able to receive 5GSM STATUS message from UE and no state transition and no specific action shall be taken. + + +## 5.4.4.2 Generic UE configuration update procedure initiated by the network (SINTESIO) +- TP_5GNAS_AMF_CNF_COM_01 + - Verify that the IUT initiates the generic UE configuration update procedure by sending the CONFIGURATION UPDATE COMMAND message and not contains Acknowledgment requested bit in the Configuration update indication IE when only the Network Identity and Time Zone (NITZ) parameter is included. + +- TP_5GNAS_AMF_CNF_COM_02 + - Verify that the IUT initiates the generic UE configuration update procedure by sending the CONFIGURATION UPDATE COMMAND message containing one or more parameters (e.g., 5G-GUTI, TAI list,...) and containing Configuration update indication IE with Acknowledgement bit set to "acknowledgement requested" + +- TP_5GNAS_AMF_CNF_COM_03 + - Verify that the IUT initiates the generic UE configuration update procedure only due to changes to the allowed NSSAI and +these changes require the UE to initiate a registration procedure then IUT sends the CONFIGURATION UPDATE COMMAND message not containing any other parameters except Configuration update indication IE with the Registration requested bit set to "registration requested" and Acknowledgement bit set to "acknowledgement requested" and + +## 5.4.4.4 Generic UE configuration update completion by the network (SINTESIO) + +- TP_5GNAS_AMF_CNF_REL_01 + - Verify that the IUT initiates the generic UE configuration update procedure by sending the CONFIGURATION UPDATE COMMAND message containing an allowed NSSAI, a configured NSSAI or both and Configuration update indication IE with the Registration requested bit set to "registration requested" and Acknowledgement bit set to "acknowledgement requested". +and then the IUT initiates the release of the N1 NAS signalling connection. + +## 5.4.4.6 Abnormal cases on the network side (SINTESIO) +- TP_5GNAS_AMF_CNF_ABN_01 + - Verify that the IUT retransmits the CONFIGURATION UPDATE COMMAND message and restarts timer T3555 upon the first four expirations. (i.e. on +the fifth expiry of timer T3555, the procedure shall be aborted.) + +- TP_5GNAS_AMF_CNF_ABN_02 + - Verify that IUT aborts the generic UE configuration update procedure +and progress the de-registration procedure in case if the network receives a DEREGISTRATION REQUEST message before the ongoing generic UE configuration +update procedure has been completed + +- TP_5GNAS_AMF_CNF_ABN_03 + - Verify that IUT aborts the generic UE configuration update procedure +and progress the registration procedure for mobility and periodic registration update procedure in case if the network receives a REGISTRATION REQUEST message before the ongoing generic UE configuration +update procedure has been completed + +- TP_5GNAS_AMF_CNF_ABN_04 + - Verify that IUT proceeds with both procedures in case if the network receives a SERVICE REQUEST message before the ongoing generic UE configuration update +procedure has been completed + + + +# TP objectives ideas + +[BPIN] TODOs for future TTFs + +## Section 5.4.5: NAS transport procedure (FF) ( 8.2.10, 8.2.11) +[KSCH] PDU Session control is just one procedure using UL and DL TRANSFERs. Chapter 5.4.5.1 lists 9 different payload container types (a) to (i) most of them are not covered by the proposed TPs till now. [BPIN] Comment is related to "Section 5.4.5: NAS transport procedure" and need to be considered in future to prepare additional TOs + +## 6.3.3.2 Network-requested PDU session release procedure initiation (FF) +Note: possible to test? In this case the IUT can't be triggered with a (interface) message. +[KSCH] Potential Tigger is also the UE originateed PDU SESSION RELEASE REQUEST, besides others e.g. O&M Disable SMF +[KSCH] There are several procedures, which can't be triggered with an interfce message. We should not restrict the environment in that way, as the overall test coverage would be reduced drastically. As mentioned above an O&M Interface has to be supported for other reasons as well. + +## +[KSCH] General Remark on Test Coverage +Potential Procedures to be tested - for the sake of total test coverage +- 5.6.1 Service request procedure (a) to l) 12 different types - some are covered) [BPIN 5.6.1.1 Done] +- 5.6.2 Paging procedure +- 5.6.3 Notification procedure +- 6.3.2 Network-requested PDU session modification + + diff --git a/ccsrc/EncDec/NAS_EncDec.cc b/ccsrc/EncDec/NAS_EncDec.cc new file mode 100644 index 0000000000000000000000000000000000000000..4966fb58ac5a57bdfaf543c9692115474f0905fc --- /dev/null +++ b/ccsrc/EncDec/NAS_EncDec.cc @@ -0,0 +1,45 @@ +/*! + * \file NAS_EncDec.cc + * \brief CC file for NAS encode/decode functions. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#include "NAS_EncdecDeclarations.hh" +#include "NAS_CommonTypeDefs.hh" +//#include "SMS_TypeDefs.hh" + +namespace NAS__EncdecDeclarations { + + /**************************************************** + * @desc External function to encode a ... type + * @param value to encode + * @return encoded value + ****************************************************/ + + BITSTRING fx__enc__PacketFilterComponent(const NAS__CommonTypeDefs::PacketFilterComponent &p){return int2bit(0,0);} + BITSTRING fx__enc__QoSParametersList(const NAS__CommonTypeDefs::QoSParametersList &p){return int2bit(0,0);} + BITSTRING fx__enc__EPS__QualityOfService(const NAS__CommonTypeDefs::EPS__QualityOfService &p){return int2bit(0,0);} + BITSTRING fx__enc__TrafficFlowTemplate(const NAS__CommonTypeDefs::TrafficFlowTemplate &p){return int2bit(0,0);} + // BITSTRING fx__enc__CP__PDU__Type(const SMS__TypeDefs::CP__PDU__Type &p){return int2bit(0,0);} + + /**************************************************** + * @desc External function to decode a ... type + * @param value to encode + * @return encoded value + ****************************************************/ + INTEGER fx__dec__PacketFilterComponent (BITSTRING &b, NAS__CommonTypeDefs::PacketFilterComponent &p) {return -1;} + INTEGER fx__dec__QoSParametersList (BITSTRING &b, NAS__CommonTypeDefs::QoSParametersList &p) {return -1;} + INTEGER fx__dec__EPS__QualityOfService (BITSTRING &b, NAS__CommonTypeDefs::EPS__QualityOfService &p) {return -1;} + INTEGER fx__dec__TrafficFlowTemplate (BITSTRING &b, NAS__CommonTypeDefs::TrafficFlowTemplate &p) {return -1;} + // INTEGER fx__dec__CP__PDU__Type (BITSTRING &b, SMS__TypeDefs::CP__PDU__Type &p) {return -1;} + + +} // namespace NAS__EncdecDeclarations + + + diff --git a/ccsrc/EncDec/NG_NAS_EncDec.cc b/ccsrc/EncDec/NG_NAS_EncDec.cc new file mode 100644 index 0000000000000000000000000000000000000000..af95a84a981441b29cdd7991d2aac5e395319b5a --- /dev/null +++ b/ccsrc/EncDec/NG_NAS_EncDec.cc @@ -0,0 +1,45 @@ +/*! + * \file NG_NAS_EncDec.cc + * \brief CC file for NG_NAS encode/decode functions. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#include "NG_NAS_EncdecDeclarations.hh" +#include "NG_NAS_MsgContainers.hh" +#include "NG_NAS_TypeDefs.hh" +#include "EAP_TypeDefs.hh" + +namespace NG__NAS__EncdecDeclarations { + + /**************************************************** + * @desc External function to encode a ... type + * @param value to encode + * @return encoded value + ****************************************************/ + + BITSTRING fx__enc__NG__NAS__UL__Message__Type(const NG__NAS__MsgContainers::NG__NAS__UL__Message__Type &p){return int2bit(0,0);} + BITSTRING fx__enc__NG__NAS__DL__Message__Type(const NG__NAS__MsgContainers::NG__NAS__DL__Message__Type &p){return int2bit(0,0);} + BITSTRING fx__enc__IntraN1TransparentContainer(const NG__NAS__TypeDefs::IntraN1TransparentContainer &p){return int2bit(0,0);} + BITSTRING fx__enc__CIoTSmallDataContainer(const NG__NAS__TypeDefs::CIoTSmallDataContainer &p){return int2bit(0,0);} + BITSTRING fx__enc__EAP__Message__Type(const EAP__TypeDefs::EAP__Message__Type &p){return int2bit(0,0);} + + /**************************************************** + * @desc External function to decode a ... type + * @param value to encode + * @return encoded value + ****************************************************/ + INTEGER fx__dec__NG__NAS__UL__Message__Type(BITSTRING &b, NG__NAS__MsgContainers::NG__NAS__UL__Message__Type &p) {return -1;} + INTEGER fx__dec__NG__NAS__DL__Message__Type(BITSTRING &b, NG__NAS__MsgContainers::NG__NAS__DL__Message__Type &p) {return -1;} + INTEGER fx__dec__IntraN1TransparentContainer(BITSTRING &b, NG__NAS__TypeDefs::IntraN1TransparentContainer &p) {return -1;} + INTEGER fx__dec__CIoTSmallDataContainer(BITSTRING &b, NG__NAS__TypeDefs::CIoTSmallDataContainer &p) {return -1;} + INTEGER fx__dec__EAP__Message__Type(BITSTRING &b, EAP__TypeDefs::EAP__Message__Type &p) {return -1;} + + +} // namespace NG__NAS__EncdecDeclarations + + diff --git a/ccsrc/EncDec/module.mk b/ccsrc/EncDec/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..39599f1b81e20c454b627c63b63275736c341025 --- /dev/null +++ b/ccsrc/EncDec/module.mk @@ -0,0 +1,14 @@ +sources := \ + NAS_EncDec.cc \ + NG_NAS_EncDec.cc + + + #Dhcpv4_Encdec.cc \ + #Dns_Encdec.cc \ + #ICMPv6_Encdec.cc \ + #HTTP_ASP_Encdec.cc \ + #NR_Encdec.cc \ + #LPP_PDU_EncDec.cc \ + #NAS_EncDec.cc \ + #NG_NAS_EncDec.cc + #NR_PDCP_Encdec.cc diff --git a/ccsrc/Externals/LIB_NG_NAS_Functions_ext.cc b/ccsrc/Externals/LIB_NG_NAS_Functions_ext.cc new file mode 100644 index 0000000000000000000000000000000000000000..3d6c46a6b9a7f1ae3cf1002cd9058d9f42083975 --- /dev/null +++ b/ccsrc/Externals/LIB_NG_NAS_Functions_ext.cc @@ -0,0 +1,265 @@ +#include "LIB_NG_NAS_Functions.hh" + +#include "loggers.hh" + +#include "rijndael.hh" +#include "opc.hh" + +namespace LIB__NG__NAS__Functions { + + static uint8_t OP[16] = {0}; // FIXME FSCOM To be refined. This is a Q&D implementation + + void fx__set__op(const OCTETSTRING& p_op) { + loggers::get_instance().log_msg(">>> fx__set__op: p_op: ", p_op); + std::memcpy(OP, static_cast(p_op), 16); + loggers::get_instance().log_to_hexa("<<< fx__set__op: OP: ", static_cast(OP), 16); + } + + INTEGER fx__f1(const BITSTRING& p_authK, const BITSTRING& p_rand, const BITSTRING& p_sqn, const BITSTRING& p_amf, BITSTRING& p_mac_a) { + loggers::get_instance().log_msg(">>> fx__f1: p_authK: ", p_authK); + loggers::get_instance().log_msg(">>> fx__f1: p_rand: ", p_rand); + + rijndael r; + OCTETSTRING authK = bit2oct(p_authK); + r.rijndael_key_schedule(authK); + opc op(r, OP); + uint8_t op_c[16] = { 0x00 }; + op.compute_opc(op_c); + + OCTETSTRING rand = bit2oct(p_rand); + uint8_t rijndael_input[16] = { 0x00 }; + for (int i = 0; i < 16; i++) { + rijndael_input[i] = rand[i].get_octet() ^ op_c[i]; + } // End of 'for' statement + uint8_t temp[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, temp); + + OCTETSTRING sqn = bit2oct(p_sqn); + uint8_t in1[16] = { 0x00 }; + for (int i = 0; i < 6; i++) { + in1[i] = sqn[i].get_octet(); + in1[i + 8] = sqn[i].get_octet(); + } // End of 'for' statement + OCTETSTRING amf = bit2oct(p_amf); + for (int i = 0; i < 2; i++) { + in1[i + 6] = amf[i].get_octet(); + in1[i + 14] = amf[i].get_octet(); + } // End of 'for' statement + + // XOR op_c and in1, rotate by r1=64, and XOR on the constant c1 (which is all zeroes) + for (int i = 0; i < 16; i++) { + rijndael_input[(i + 8) % 16] = in1[i] ^ op_c[i]; + } + + // XOR on the value temp computed before + for (int i = 0; i < 16; i++) { + rijndael_input[i] ^= temp[i]; + } // End of 'for' statement + + uint8_t out1[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, out1); + for (int i = 0; i < 16; i++) { + out1[i] ^= op_c[i]; + } // End of 'for' statement + + uint8_t mac_a[8] = { 0x00 }; + for (int i = 0; i < 8; i++) { + mac_a[i] = out1[i]; + } // End of 'for' statement + OCTETSTRING os(8, static_cast(&mac_a[0])); + p_mac_a = oct2bit(os); + loggers::get_instance().log_msg("fx__f1star: p_mac_a: ", os); + + return 0; + } + + INTEGER fx__f1star(const BITSTRING& p_authK, const BITSTRING& p_rand, const BITSTRING& p_sqn, const BITSTRING& p_amf, BITSTRING& p_mac_s) { + loggers::get_instance().log_msg(">>> fx__f1star: p_authK: ", p_authK); + loggers::get_instance().log_msg(">>> fx__f1star: p_rand: ", p_rand); + + rijndael r; + OCTETSTRING authK = bit2oct(p_authK); + r.rijndael_key_schedule(authK); + opc op(r, OP); + uint8_t op_c[16] = { 0x00 }; + op.compute_opc(op_c); + + OCTETSTRING rand = bit2oct(p_rand); + uint8_t rijndael_input[16] = { 0x00 }; + for (int i = 0; i < 16; i++) { + rijndael_input[i] = rand[i].get_octet() ^ op_c[i]; + } // End of 'for' statement + uint8_t temp[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, temp); + + OCTETSTRING sqn = bit2oct(p_sqn); + uint8_t in1[16] = { 0x00 }; + for (int i = 0; i < 6; i++) { + in1[i] = sqn[i].get_octet(); + in1[i + 8] = sqn[i].get_octet(); + } // End of 'for' statement + OCTETSTRING amf = bit2oct(p_amf); + for (int i = 0; i < 2; i++) { + in1[i + 6] = amf[i].get_octet(); + in1[i + 14] = amf[i].get_octet(); + } // End of 'for' statement + + // XOR op_c and in1, rotate by r1=64, and XOR on the constant c1 (which is all zeroes) + for (int i = 0; i < 16; i++) { + rijndael_input[(i + 8) % 16] = in1[i] ^ op_c[i]; + } + + // XOR on the value temp computed before + for (int i = 0; i < 16; i++) { + rijndael_input[i] ^= temp[i]; + } // End of 'for' statement + + uint8_t out1[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, out1); + for (int i = 0; i < 16; i++) { + out1[i] ^= op_c[i]; + } // End of 'for' statement + + uint8_t mac_s[8] = { 0x00 }; + for (int i = 0; i < 8; i++) { + mac_s[i] = out1[i + 8]; + } // End of 'for' statement + OCTETSTRING os(8, static_cast(&mac_s[0])); + p_mac_s = oct2bit(os); + loggers::get_instance().log_msg("fx__f1star: p_mac_s: ", os); + + return 0; + } + + INTEGER fx__f2345(const BITSTRING& p_authK, const BITSTRING& p_rand, BITSTRING& p_res, BITSTRING& p_ck, BITSTRING& p_ik, BITSTRING& p_ak) { + loggers::get_instance().log_msg(">>> fx_f2345: p_authK: ", p_authK); + loggers::get_instance().log_msg(">>> fx_f2345: p_rand: ", p_rand); + + rijndael r; + OCTETSTRING authK = bit2oct(p_authK); + r.rijndael_key_schedule(authK); + opc op(r, OP); + uint8_t op_c[16] = { 0x00 }; + op.compute_opc(op_c); + + OCTETSTRING rand = bit2oct(p_rand); + uint8_t rijndael_input[16] = { 0x00 }; + for (int i = 0; i < 16; i++) { + rijndael_input[i] = rand[i].get_octet() ^ op_c[i]; + } // End of 'for' statement + uint8_t temp[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, temp); + + // To obtain output block OUT2: XOR OPc and TEMP, rotate by r2=0, and XOR on the constant c2 (which is all zeroes except that the last bit is 1) + for (int i = 0; i < 16; i++) { + rijndael_input[i] = temp[i] ^ op_c[i]; + } // End of 'for' statement + rijndael_input[15] ^= 1; + + uint8_t out[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, out); + for (int i = 0; i < 16; i++) { + out[i] ^= op_c[i]; + } // End of 'for' statement + + uint8_t res[8] = { 0x00 }; + for (int i = 0; i < 8; i++) { + res[i] = out[i + 8]; + } // End of 'for' statement + + uint8_t ak[6] = { 0x00 }; + for (int i = 0; i < 6; i++) { + ak[i] = out[i]; + } // End of 'for' statement + + // To obtain output block OUT3: XOR OPc and TEMP, rotate by r3=32, and XOR on the constant c3 (which is all zeroes except that the next to last bit is 1) + for (int i = 0; i < 16; i++) { + rijndael_input[(i + 12) % 16] = temp[i] ^ op_c[i]; + } // End of 'for' statement + rijndael_input[15] ^= 2; + + r.rijndael_encrypt(rijndael_input, out); + for (int i = 0; i < 16; i++) { + out[i] ^= op_c[i]; + } // End of 'for' statement + + uint8_t ck[16] = { 0x00 }; + for (int i = 0; i < 16; i++) { + ck[i] = out[i]; + } // End of 'for' statement + + // To obtain output block OUT4: XOR OPc and TEMP, rotate by r4=64, and XOR on the constant c4 (which is all zeroes except that the 2nd from last bit is 1) + for (int i = 0; i < 16; i++) { + rijndael_input[(i+8) % 16] = temp[i] ^ op_c[i]; + } // End of 'for' statement + rijndael_input[15] ^= 4; + + r.rijndael_encrypt(rijndael_input, out); + for (int i = 0; i < 16; i++) { + out[i] ^= op_c[i]; + } // End of 'for' statement + + uint8_t ik[16] = { 0x00 }; + for (int i = 0; i < 16; i++) { + ik[i] = out[i]; + } // End of 'for' statement + + OCTETSTRING os(8, static_cast(&res[0])); + p_res = oct2bit(os); + os = OCTETSTRING(16, static_cast(&ik[0])); + p_ik = oct2bit(os); + os = OCTETSTRING(16, static_cast(&ck[0])); + p_ck = oct2bit(os); + os = OCTETSTRING(6, static_cast(&ak[0])); + p_ak = oct2bit(os); + loggers::get_instance().log_msg("fx_f2345: p_res: ", p_res); + loggers::get_instance().log_msg("fx_f2345: p_ck: ", p_ck); + loggers::get_instance().log_msg("fx_f2345: p_ik: ", p_ik); + loggers::get_instance().log_msg("fx_f2345: p_ak: ", p_ak); + + return 0; + } + + INTEGER fx__f5star(const BITSTRING& p_authK, const BITSTRING& p_rand, BITSTRING& p_ak) { + loggers::get_instance().log_msg(">>> fx__f5star: p_authK: ", p_authK); + loggers::get_instance().log_msg(">>> fx__f5star: p_rand: ", p_rand); + + rijndael r; + OCTETSTRING authK = bit2oct(p_authK); + r.rijndael_key_schedule(authK); + opc op(r, OP); + uint8_t op_c[16] = { 0x00 }; + op.compute_opc(op_c); + + OCTETSTRING rand = bit2oct(p_rand); + uint8_t rijndael_input[16] = { 0x00 }; + for (int i = 0; i < 16; i++) { + rijndael_input[i] = rand[i].get_octet() ^ op_c[i]; + } // End of 'for' statement + uint8_t temp[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, temp); + + // To obtain output block OUT5: XOR OPc and TEMP, rotate by r5=96, and XOR on the constant c5 (which is all zeroes except that the 3rd from last bit is 1) + for (int i = 0; i < 16; i++) { + rijndael_input[(i + 4) % 16] = temp[i] ^ op_c[i]; + } // End of 'for' statement + rijndael_input[15] ^= 8; + + uint8_t out[16] = { 0x00 }; + r.rijndael_encrypt(rijndael_input, out); + for (int i = 0; i < 16; i++) { + out[i] ^= op_c[i]; + } // End of 'for' statement + + uint8_t ak[6] = { 0x00 }; + for (int i = 0; i < 6; i++) { + ak[i] = out[i]; + } + OCTETSTRING os(6, static_cast(&ak[0])); + p_ak = oct2bit(os); + loggers::get_instance().log_msg("fx__f5star: p_ak: ", os); + + return 0; + } + +} // End of namespace LIB__NG__NAS__Functions diff --git a/ccsrc/Externals/NG_security_ext.cc b/ccsrc/Externals/NG_security_ext.cc new file mode 100644 index 0000000000000000000000000000000000000000..db85ed3c3ee4b783269ce09b83700108c40f8f56 --- /dev/null +++ b/ccsrc/Externals/NG_security_ext.cc @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +//#include "NG_SecurityDefinitionsAndExternalFunctions.hh" +#include "NG_NAS_SecurityFunctions.hh" +//#include "NR_RRC_ASN1_Definitions.hh" +#include "CommonDefs.hh" + +#include "base_time.hh" +//#include "converter.hh" +#include "loggers.hh" +//#include "xml_converters.hh" + + +//namespace NG__SecurityDefinitionsAndExternalFunctions { +namespace NG__NAS__SecurityFunctions { + + /** + * @desc This external function ... + * @return The ... + * @see fx_get...() return ... + */ + +//BITSTRING fx__NR__AsIntegrityAlgorithm(const OCTETSTRING &a, const NR__RRC__ASN1__Definitions::IntegrityProtAlgorithm& b, const BITSTRING &c, const OCTETSTRING &d, const BITSTRING &e, const INTEGER &f){ +//return int2bit(0, 0); +//} + +OCTETSTRING fx__NG__NasIntegrityAlgorithm(const OCTETSTRING& p_EncodedNasPdu, const BITSTRING& p_IntegrityAlgorithm, const BITSTRING& p_KNASint, const OCTETSTRING& p_NasCount, const BITSTRING& p_BearerId, const INTEGER& p_Direction){ +return int2oct(0, 0); +} + +OCTETSTRING fx__NG__NasCiphering(const OCTETSTRING& p_EncodedNasPdu,const BITSTRING& p_CipheringAlgorithm, const BITSTRING& p_KNASenc, const OCTETSTRING& p_NasCount, const BITSTRING& p_BearerId){ +return int2oct(0, 0); +} + +OCTETSTRING fx__NG__NasDeciphering(const OCTETSTRING& p_CipheredNasMsg, const BITSTRING& p_CipheringAlgorithm, const BITSTRING& p_KNASenc, const OCTETSTRING& p_NasCount, const BITSTRING& p_BearerId){ +return int2oct(0, 0); +} + + + +} // namespace NG__NAS__SecurityFunctions + // namespace NG__SecurityDefinitionsAndExternalFunctions diff --git a/ccsrc/Externals/common_ext.cc b/ccsrc/Externals/common_ext.cc new file mode 100644 index 0000000000000000000000000000000000000000..204741c9290aaf9800433793381f16fd46086e60 --- /dev/null +++ b/ccsrc/Externals/common_ext.cc @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +#include "CommonDefs.hh" + +#include "base_time.hh" +//#include "converter.hh" +#include "loggers.hh" + +#include "hmac.hh" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif +#define earthRadius 6378137.0L +#define rbis = ((double)(earthRadius * M_PI / 180)) + +namespace CommonDefs { + + /** + * @desc This external function gets KEY + * @return The KEY + * @see fx_get...() return UInt64 + */ + //INTEGER fx__KeyDerivationFunction(INTEGER const&, BITSTRING const&, OCTETSTRING const&){ + BITSTRING fx__KeyDerivationFunction(const INTEGER& p__KDF, const BITSTRING& p__Key, const OCTETSTRING& p__String){ + + hmac h; // hash_algorithms::sha_256: p__KDF == 1 (tsc_KDF_HMAC_SHA_256 see CommonDefs.ttcn) + OCTETSTRING res; + if (h.generate(p__String, bit2oct(p__Key), res) == -1) { + return int2bit(0, 0); + } + + return oct2bit(res); + } + /** + * @desc This external function gets the current time since 01/01/1970 in UTC format + * @return The current time since 01/01/1970 in UTC format in milliseconds + * @see fx_getSystemTime() return UInt64 + */ +//INTEGER fx__GetSystemTime(CommonDefs::Struct__tm__Type&, INTEGER&){ +void fx__GetSystemTime(CommonDefs::Struct__tm__Type& p__Struct__tm, INTEGER& p__TimezoneInfo){ +return; +} +//void fx__CalculateFCS32(BITSTRING const&) { + BITSTRING fx__CalculateFCS32(const BITSTRING& p__TMSI){ +return int2bit(0, 0); +} + +} // namespace CommonDefs diff --git a/ccsrc/Externals/module.mk b/ccsrc/Externals/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..4701f0069489d370770fdebe90affeafc622c2f6 --- /dev/null +++ b/ccsrc/Externals/module.mk @@ -0,0 +1,7 @@ +sources := \ + common_ext.cc \ + NG_security_ext.cc \ + LIB_NG_NAS_Functions_ext.cc + + +includes := . diff --git a/ccsrc/Ports/LibNAS/NASEMU4G_CO_ORD_PORT.cc b/ccsrc/Ports/LibNAS/NASEMU4G_CO_ORD_PORT.cc new file mode 100644 index 0000000000000000000000000000000000000000..c89cb6ea8a55a8778a98c0be46a820b1612619e9 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NASEMU4G_CO_ORD_PORT.cc @@ -0,0 +1,118 @@ +//#include "HttpPort.hh" +//#include "http_layer_factory.hh" +//#include "http_layer.hh" +//#include "http_codec_emtel.hh" +#include "loggers.hh" + +//#include "LibHttp_TypesAndValues.hh" +#include "NasEmu_Common4G5G.hh" + +namespace NasEmu__Common4G5G { + + NASEMU4G__CO__ORD__PORT::NASEMU4G__CO__ORD__PORT(const char *par_port_name): NASEMU4G__CO__ORD__PORT_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("NASEMU4G__CO__ORD__PORT::contructor") { + // Nothing to do + } // End of constructor + + NASEMU4G__CO__ORD__PORT::~NASEMU4G__CO__ORD__PORT() { + loggers::get_instance().log(">>> NASEMU4G__CO__ORD__PORT::~NASEMU4G__CO__ORD__PORT"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void NASEMU4G__CO__ORD__PORT::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("NASEMU4G__CO__ORD__PORT::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void NASEMU4G__CO__ORD__PORT::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void NASEMU4G__CO__ORD__PORT::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void NASEMU4G__CO__ORD__PORT::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void NASEMU4G__CO__ORD__PORT::user_map(const char * system_port) + { + loggers::get_instance().log(">>> NASEMU4G__CO__ORD__PORT::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("NASEMU4G__CO__ORD__PORT::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + //_layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + /*if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("NASEMU4G__CO__ORD__PORT::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + if (!static_cast(_layer)->set_codec(new http_codec_emtel())) { + loggers::get_instance().error("NASEMU4G__CO__ORD__PORT::user_map: Null codec"); + } + static_cast(_layer)->add_upper_port(this);*/ + } else { + loggers::get_instance().error("NASEMU4G__CO__ORD__PORT::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void NASEMU4G__CO__ORD__PORT::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> NASEMU4G__CO__ORD__PORT:user_unmap: %s", system_port); + + // Reset layers + //if (_layer != nullptr) { + // delete _layer; + // _layer = nullptr; + //} + } // End of user_unmap method + + void NASEMU4G__CO__ORD__PORT::user_start() + { + loggers::get_instance().log(">>> NASEMU4G__CO__ORD__PORT::user_start"); + + } // End of user_start method + + void NASEMU4G__CO__ORD__PORT::user_stop() + { + loggers::get_instance().log(">>> NASEMU4G__CO__ORD__PORT::user_stop"); + + } // End of user_stop method + + void NASEMU4G__CO__ORD__PORT::outgoing_send(const NasEmu__Common4G5G::NASEmu__CoOrd__REQ& send_par) + { + loggers::get_instance().log_msg(">>> NASEMU4G__CO__ORD__PORT::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + //static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void NASEMU4G__CO__ORD__PORT::receiveMsg (const NasEmu__Common4G5G::NASEmu__CoOrd__CNF& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> NASEMU4G__CO__ORD__PORT::receive_msg: ", p_ind); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + } + +} // End of namespace NasEmu__Common4G5G + diff --git a/ccsrc/Ports/LibNAS/NASEMU4G_CO_ORD_PORT.hh b/ccsrc/Ports/LibNAS/NASEMU4G_CO_ORD_PORT.hh new file mode 100644 index 0000000000000000000000000000000000000000..c5e03e6db194e767c077fc1689f6fc0532075314 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NASEMU4G_CO_ORD_PORT.hh @@ -0,0 +1,48 @@ +#pragma once + +#include "NasEmu_Common4G5G.hh" + +#include "layer.hh" +#include "params.hh" + +namespace NasEmu__Common4G5G { + class NASEmu__CoOrd__REQ; + class NASEmu__CoOrd__CNF; +} + +namespace NasEmu__Common4G5G { + + //class HttpPort : public HttpPort_BASE { + class NASEMU4G__CO__ORD__PORT : public NASEMU4G__CO__ORD__PORT_BASE{ + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + NASEMU4G__CO__ORD__PORT(const char *par_port_name); + ~NASEMU4G__CO__ORD__PORT(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const NasEmu__Common4G5G::NASEmu__CoOrd__CNF& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const NasEmu__Common4G5G::NASEmu__CoOrd__REQ& send_par); + }; // End of class NASEMU4G__CO__ORD__PORT + +} // End of namespace NasEmu__Common4G5G + diff --git a/ccsrc/Ports/LibNAS/NASEMU5G_CO_ORD_PORT.cc b/ccsrc/Ports/LibNAS/NASEMU5G_CO_ORD_PORT.cc new file mode 100644 index 0000000000000000000000000000000000000000..90f7bd085d3fece1b3a15d9bf5727502bee05033 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NASEMU5G_CO_ORD_PORT.cc @@ -0,0 +1,118 @@ +//#include "HttpPort.hh" +//#include "http_layer_factory.hh" +//#include "http_layer.hh" +//#include "http_codec_emtel.hh" +#include "loggers.hh" + +//#include "LibHttp_TypesAndValues.hh" +#include "NasEmu_Common4G5G.hh" + +namespace NasEmu__Common4G5G { + + NASEMU5G__CO__ORD__PORT::NASEMU5G__CO__ORD__PORT(const char *par_port_name): NASEMU5G__CO__ORD__PORT_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("NASEMU5G__CO__ORD__PORT::contructor") { + // Nothing to do + } // End of constructor + + NASEMU5G__CO__ORD__PORT::~NASEMU5G__CO__ORD__PORT() { + loggers::get_instance().log(">>> NASEMU5G__CO__ORD__PORT::~NASEMU5G__CO__ORD__PORT"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void NASEMU5G__CO__ORD__PORT::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("NASEMU5G__CO__ORD__PORT::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void NASEMU5G__CO__ORD__PORT::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void NASEMU5G__CO__ORD__PORT::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void NASEMU5G__CO__ORD__PORT::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void NASEMU5G__CO__ORD__PORT::user_map(const char * system_port) + { + loggers::get_instance().log(">>> NASEMU5G__CO__ORD__PORT::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("NASEMU5G__CO__ORD__PORT::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + //_layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + /*if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("NASEMU5G__CO__ORD__PORT::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + if (!static_cast(_layer)->set_codec(new http_codec_emtel())) { + loggers::get_instance().error("NASEMU5G__CO__ORD__PORT::user_map: Null codec"); + } + static_cast(_layer)->add_upper_port(this);*/ + } else { + loggers::get_instance().error("NASEMU5G__CO__ORD__PORT::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void NASEMU5G__CO__ORD__PORT::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> NASEMU5G__CO__ORD__PORT:user_unmap: %s", system_port); + + // Reset layers + //if (_layer != nullptr) { + // delete _layer; + // _layer = nullptr; + //} + } // End of user_unmap method + + void NASEMU5G__CO__ORD__PORT::user_start() + { + loggers::get_instance().log(">>> NASEMU5G__CO__ORD__PORT::user_start"); + + } // End of user_start method + + void NASEMU5G__CO__ORD__PORT::user_stop() + { + loggers::get_instance().log(">>> NASEMU5G__CO__ORD__PORT::user_stop"); + + } // End of user_stop method + + void NASEMU5G__CO__ORD__PORT::outgoing_send(const NasEmu__Common4G5G::NASEmu__CoOrd__CNF& send_par) + { + loggers::get_instance().log_msg(">>> NASEMU5G__CO__ORD__PORT::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + //static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void NASEMU5G__CO__ORD__PORT::receiveMsg (const NasEmu__Common4G5G::NASEmu__CoOrd__REQ& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> NASEMU5G__CO__ORD__PORT::receive_msg: ", p_ind); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + } + +} // End of namespace NasEmu__Common4G5G + diff --git a/ccsrc/Ports/LibNAS/NASEMU5G_CO_ORD_PORT.hh b/ccsrc/Ports/LibNAS/NASEMU5G_CO_ORD_PORT.hh new file mode 100644 index 0000000000000000000000000000000000000000..01d8c8d6f665fe8f502c852b816e55d942d64bf2 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NASEMU5G_CO_ORD_PORT.hh @@ -0,0 +1,48 @@ +#pragma once + +#include "NasEmu_Common4G5G.hh" + +#include "layer.hh" +#include "params.hh" + +namespace NasEmu__Common4G5G { + class NASEmu__CoOrd__REQ; + class NASEmu__CoOrd__CNF; +} + +namespace NasEmu__Common4G5G { + + //class HttpPort : public HttpPort_BASE { + class NASEMU5G__CO__ORD__PORT : public NASEMU5G__CO__ORD__PORT_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + NASEMU5G__CO__ORD__PORT(const char *par_port_name); + ~NASEMU5G__CO__ORD__PORT(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const NasEmu__Common4G5G::NASEmu__CoOrd__REQ& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const NasEmu__Common4G5G::NASEmu__CoOrd__CNF& send_par); + }; // End of class NASEMU5G__CO__ORD__PORT + +} // End of namespace NasEmu__Common4G5G + diff --git a/ccsrc/Ports/LibNAS/NG_NASCTRL_PORT.cc b/ccsrc/Ports/LibNAS/NG_NASCTRL_PORT.cc new file mode 100644 index 0000000000000000000000000000000000000000..140f478932570775dd0c0ae5671f3e2eab4ed960 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NG_NASCTRL_PORT.cc @@ -0,0 +1,118 @@ +//#include "HttpPort.hh" +//#include "http_layer_factory.hh" +//#include "http_layer.hh" +//#include "http_codec_emtel.hh" +#include "loggers.hh" + +//#include "LibHttp_TypesAndValues.hh" +#include "NG_NasEmu_CtrlAspTypes.hh" + +namespace NG__NasEmu__CtrlAspTypes { + + NG__NASCTRL__PORT::NG__NASCTRL__PORT(const char *par_port_name): NG__NASCTRL__PORT_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("NG__NASCTRL__PORT::contructor") { + // Nothing to do + } // End of constructor + + NG__NASCTRL__PORT::~NG__NASCTRL__PORT() { + loggers::get_instance().log(">>> NG__NASCTRL__PORT::~NG__NASCTRL__PORT"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void NG__NASCTRL__PORT::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("NG__NASCTRL__PORT::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void NG__NASCTRL__PORT::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void NG__NASCTRL__PORT::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void NG__NASCTRL__PORT::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void NG__NASCTRL__PORT::user_map(const char * system_port) + { + loggers::get_instance().log(">>> NG__NASCTRL__PORT::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("NG__NASCTRL__PORT::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + //_layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + /*if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("NG__NASCTRL__PORT::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + if (!static_cast(_layer)->set_codec(new http_codec_emtel())) { + loggers::get_instance().error("NG__NASCTRL__PORT::user_map: Null codec"); + } + static_cast(_layer)->add_upper_port(this);*/ + } else { + loggers::get_instance().error("NG__NASCTRL__PORT::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void NG__NASCTRL__PORT::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> NG__NASCTRL__PORT:user_unmap: %s", system_port); + + // Reset layers + //if (_layer != nullptr) { + // delete _layer; + // _layer = nullptr; + //} + } // End of user_unmap method + + void NG__NASCTRL__PORT::user_start() + { + loggers::get_instance().log(">>> NG__NASCTRL__PORT::user_start"); + + } // End of user_start method + + void NG__NASCTRL__PORT::user_stop() + { + loggers::get_instance().log(">>> NG__NASCTRL__PORT::user_stop"); + + } // End of user_stop method + + void NG__NASCTRL__PORT::outgoing_send(const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__REQ& send_par) + { + loggers::get_instance().log_msg(">>> NG__NASCTRL__PORT::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + //static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void NG__NASCTRL__PORT::receiveMsg (const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__CNF& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> NG__NASCTRL__PORT::receive_msg: ", p_ind); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + } + +} // End of namespace NG__NasEmu__CtrlAspTypes + diff --git a/ccsrc/Ports/LibNAS/NG_NASCTRL_PORT.hh b/ccsrc/Ports/LibNAS/NG_NASCTRL_PORT.hh new file mode 100644 index 0000000000000000000000000000000000000000..bea96914a724d17c30f4af05fccf3a21bf4a18fa --- /dev/null +++ b/ccsrc/Ports/LibNAS/NG_NASCTRL_PORT.hh @@ -0,0 +1,49 @@ +#pragma once + +#include "NG_NasEmu_CtrlAspTypes.hh" + + +#include "layer.hh" +#include "params.hh" + +namespace NG__NasEmu__CtrlAspTypes { + class NG__NAS__CTRL__REQ; + class NG__NAS__CTRL__CNF; +} + +namespace NG__NasEmu__CtrlAspTypes { + + //class HttpPort : public HttpPort_BASE { + class NG__NASCTRL__PORT : public NG__NASCTRL__PORT_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + NG__NASCTRL__PORT(const char *par_port_name); + ~NG__NASCTRL__PORT(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__CNF& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__REQ& send_par); + }; // End of class NG__NASCTRL__PORT + +} // End of namespace NG__NasEmu__CtrlAspTypes + diff --git a/ccsrc/Ports/LibNAS/NG_NASEMU_CTRL_PORT.cc b/ccsrc/Ports/LibNAS/NG_NASEMU_CTRL_PORT.cc new file mode 100644 index 0000000000000000000000000000000000000000..e49079cec1dc5cc2cef2105bb7d9e2557de55ca2 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NG_NASEMU_CTRL_PORT.cc @@ -0,0 +1,118 @@ +//#include "HttpPort.hh" +//#include "http_layer_factory.hh" +//#include "http_layer.hh" +//#include "http_codec_emtel.hh" +#include "loggers.hh" + +//#include "LibHttp_TypesAndValues.hh" +#include "NG_NasEmu_CtrlAspTypes.hh" + +namespace NG__NasEmu__CtrlAspTypes { + + NG__NASEMU__CTRL__PORT::NG__NASEMU__CTRL__PORT(const char *par_port_name): NG__NASEMU__CTRL__PORT_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("NG__NASEMU__CTRL__PORT::contructor") { + // Nothing to do + } // End of constructor + + NG__NASEMU__CTRL__PORT::~NG__NASEMU__CTRL__PORT() { + loggers::get_instance().log(">>> NG__NASEMU__CTRL__PORT::~NG__NASEMU__CTRL__PORT"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void NG__NASEMU__CTRL__PORT::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("NG__NASEMU__CTRL__PORT::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void NG__NASEMU__CTRL__PORT::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void NG__NASEMU__CTRL__PORT::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void NG__NASEMU__CTRL__PORT::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void NG__NASEMU__CTRL__PORT::user_map(const char * system_port) + { + loggers::get_instance().log(">>> NG__NASEMU__CTRL__PORT::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("NG__NASEMU__CTRL__PORT::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + //_layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + /*if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("NG__NASEMU__CTRL__PORT::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + if (!static_cast(_layer)->set_codec(new http_codec_emtel())) { + loggers::get_instance().error("NG__NASEMU__CTRL__PORT::user_map: Null codec"); + } + static_cast(_layer)->add_upper_port(this);*/ + } else { + loggers::get_instance().error("NG__NASEMU__CTRL__PORT::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void NG__NASEMU__CTRL__PORT::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> NG__NASEMU__CTRL__PORT:user_unmap: %s", system_port); + + // Reset layers + //if (_layer != nullptr) { + // delete _layer; + // _layer = nullptr; + //} + } // End of user_unmap method + + void NG__NASEMU__CTRL__PORT::user_start() + { + loggers::get_instance().log(">>> NG__NASEMU__CTRL__PORT::user_start"); + + } // End of user_start method + + void NG__NASEMU__CTRL__PORT::user_stop() + { + loggers::get_instance().log(">>> NG__NASEMU__CTRL__PORT::user_stop"); + + } // End of user_stop method + + void NG__NASEMU__CTRL__PORT::outgoing_send(const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__CNF& send_par) + { + loggers::get_instance().log_msg(">>> NG__NASEMU__CTRL__PORT::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + //static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void NG__NASEMU__CTRL__PORT::receiveMsg (const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__REQ& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> NG__NASEMU__CTRL__PORT::receive_msg: ", p_ind); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + } + +} // End of namespace NG__NasEmu__CtrlAspTypes + diff --git a/ccsrc/Ports/LibNAS/NG_NASEMU_CTRL_PORT.hh b/ccsrc/Ports/LibNAS/NG_NASEMU_CTRL_PORT.hh new file mode 100644 index 0000000000000000000000000000000000000000..fecf1f1544faa85971800cfc4f9807f442599a18 --- /dev/null +++ b/ccsrc/Ports/LibNAS/NG_NASEMU_CTRL_PORT.hh @@ -0,0 +1,49 @@ +#pragma once + +#include "NG_NasEmu_CtrlAspTypes.hh" + + +#include "layer.hh" +#include "params.hh" + +namespace NG__NasEmu__CtrlAspTypes { + class NG__NAS__CTRL__REQ; + class NG__NAS__CTRL__CNF; +} + +namespace NG__NasEmu__CtrlAspTypes { + + //class HttpPort : public HttpPort_BASE { + class NG__NASEMU__CTRL__PORT : public NG__NASEMU__CTRL__PORT_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + NG__NASEMU__CTRL__PORT(const char *par_port_name); + ~NG__NASEMU__CTRL__PORT(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__REQ& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const NG__NasEmu__CtrlAspTypes::NG__NAS__CTRL__CNF& send_par); + }; // End of class NG__NASEMU__CTRL__PORT + +} // End of namespace NG__NasEmu__CtrlAspTypes + diff --git a/ccsrc/Ports/LibNAS/module.mk b/ccsrc/Ports/LibNAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..a27645c3f7f7526557499a1e591a67fc2f12d350 --- /dev/null +++ b/ccsrc/Ports/LibNAS/module.mk @@ -0,0 +1,6 @@ +sources := NASEMU4G_CO_ORD_PORT.cc \ + NASEMU5G_CO_ORD_PORT.cc \ + NG_NASCTRL_PORT.cc \ + NG_NASEMU_CTRL_PORT.cc +includes := . + diff --git a/ccsrc/Ports/LibNGAP/NGAPPort.cc b/ccsrc/Ports/LibNGAP/NGAPPort.cc new file mode 100644 index 0000000000000000000000000000000000000000..15486ccd870a6776ea0a1db869acbad4fadd271a --- /dev/null +++ b/ccsrc/Ports/LibNGAP/NGAPPort.cc @@ -0,0 +1,139 @@ +/*! + * \file NGAPPort.cc + * \brief CC file for NGAPPort. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#include "loggers.hh" + +#include "LibNGAP_Interface.hh" +#include "NGAP_PDU_Descriptions.hh" +#include "ngap_layer_factory.hh" +#include "layer.hh" +#include "params.hh" + +namespace NGAP__PDU__Descriptions{ + class NGAP__PDU; +} +namespace LibNGAP__Interface { + + NGAPPort::NGAPPort(const char *par_port_name): NGAPPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("NGAPPort::") { + // Nothing to do + } // End of constructor + + NGAPPort::~NGAPPort() { + loggers::get_instance().log(">>> NGAPPort::~NGAPPort"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void NGAPPort::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("NGAPPort::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void NGAPPort::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void NGAPPort::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void NGAPPort::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void NGAPPort::user_map(const char * system_port) + { + loggers::get_instance().log(">>> NGAPPort::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("NGAPPort::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + + if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("NGAPPort::user_map: Invalid stack configurationi - NOT SCTP: %s", it->second.c_str()); + } + static_cast(_layer)->add_upper_port(this); + + // Create layer + _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + if (static_cast(_layer) == NULL) { + loggers::get_instance().error("NGAPPort::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + static_cast(_layer)->add_upper_port(this); + } else { + loggers::get_instance().error("NGAPPort::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void NGAPPort::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> NGAPPort:user_unmap: %s", system_port); + + // Reset layers + if (_layer != nullptr) { + delete _layer; + _layer = nullptr; + } + } // End of user_unmap method + + void NGAPPort::user_start() + { + loggers::get_instance().log(">>> NGAPPort::user_start"); + + } // End of user_start method + + void NGAPPort::user_stop() + { + loggers::get_instance().log(">>> NGAPPort::user_stop"); + + } // End of user_stop method + + void NGAPPort::outgoing_send(const NGAP__PDU__Descriptions::NGAP__PDU& send_par) + { + loggers::get_instance().log_msg(">>> NGAPPort::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void NGAPPort::receiveMsg (const NGAP__PDU__Descriptions::NGAP__PDU& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> NGAPPort::receive_msg: ", p_ind); + float duration; + loggers::get_instance().set_start_time(_time_key); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + loggers::get_instance().set_stop_time(_time_key, duration); + } + +} // End of namespace LibNGAP__Interface + diff --git a/ccsrc/Ports/LibNGAP/NGAPPort.hh b/ccsrc/Ports/LibNGAP/NGAPPort.hh new file mode 100644 index 0000000000000000000000000000000000000000..d51edbcdeb412f92ebb15d5746869709cad99b59 --- /dev/null +++ b/ccsrc/Ports/LibNGAP/NGAPPort.hh @@ -0,0 +1,59 @@ +/*! + * \file NGAPPort.hh + * \brief Header file for NGAPPort. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#pragma once + +#include "LibNGAP_Interface.hh" +#include "NGAP_PDU_Descriptions.hh" + +#include "layer.hh" +#include "params.hh" + +namespace NGAP__PDU__Descriptions{ + class NGAP__PDU; +} +namespace LibNGAP__Interface { + + class NGAPPort : public NGAPPort_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + NGAPPort(const char *par_port_name); + ~ NGAPPort(); + + //inline const char *get_name() const { return port_name; } + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const NGAP__PDU__Descriptions::NGAP__PDU& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + const char *port_name; + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const NGAP__PDU__Descriptions::NGAP__PDU& send_par); + }; // End of class NGAPPort + +} // End of namespace LibNGAP__Interface + diff --git a/ccsrc/Ports/LibNGAP/module.mk b/ccsrc/Ports/LibNGAP/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..20b21a72e353d3fcaff2ddfa907fab64e4c172f3 --- /dev/null +++ b/ccsrc/Ports/LibNGAP/module.mk @@ -0,0 +1,3 @@ +sources := NGAPPort.cc +includes := . + diff --git a/ccsrc/Protocols/FiveG_AKA/fiveg_aka.cc b/ccsrc/Protocols/FiveG_AKA/fiveg_aka.cc new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ccsrc/Protocols/FiveG_AKA/fiveg_aka.hh b/ccsrc/Protocols/FiveG_AKA/fiveg_aka.hh new file mode 100644 index 0000000000000000000000000000000000000000..3f59c932d39b02caf58f2abac65bdd9246f0a7da --- /dev/null +++ b/ccsrc/Protocols/FiveG_AKA/fiveg_aka.hh @@ -0,0 +1,2 @@ +#pragma once + diff --git a/ccsrc/Protocols/FiveG_AKA/module.mk b/ccsrc/Protocols/FiveG_AKA/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..7b7f6235cc5a9a5888cb80bf2ab087221075311a --- /dev/null +++ b/ccsrc/Protocols/FiveG_AKA/module.mk @@ -0,0 +1,2 @@ +sources := fiveg_aka.cc rijndael.cc opc.cc +includes := . diff --git a/ccsrc/Protocols/FiveG_AKA/opc.cc b/ccsrc/Protocols/FiveG_AKA/opc.cc new file mode 100644 index 0000000000000000000000000000000000000000..34d39664dfe976e01b51cc50ec89b2e5d1c3b0c1 --- /dev/null +++ b/ccsrc/Protocols/FiveG_AKA/opc.cc @@ -0,0 +1,12 @@ +#include "opc.hh" + +void opc::compute_opc(uint8_t p_opc[16]) { + if (!_computed) { + _rijndael.rijndael_encrypt(_op, p_opc); + for (uint8_t i = 0; i < 16; i++) { + p_opc[i] ^= _op[i]; + } // End of 'for' statement + } else { + std::memcpy(p_opc, _op, 16); + } +} diff --git a/ccsrc/Protocols/FiveG_AKA/opc.hh b/ccsrc/Protocols/FiveG_AKA/opc.hh new file mode 100644 index 0000000000000000000000000000000000000000..eeaaf80ea06f62e440d1b043ec08748b28f4f17f --- /dev/null +++ b/ccsrc/Protocols/FiveG_AKA/opc.hh @@ -0,0 +1,20 @@ +#pragma once + +#include + +#include "rijndael.hh" + +class opc { + const uint8_t OP[16]{0x63, 0xbf, 0xa5, 0x0e, 0xe6, 0x52, 0x33, 0x65, 0xff, 0x14, 0xc1, 0xf4, 0x5f, 0x88, 0x73, 0x7d}; //>2] = p_key[i]; + } // End of 'for' statementSW + + /* now calculate round keys */ + for (int i = 1; i < 11; i++) { + _round_keys[i][0][0] = S[_round_keys[i - 1][1][3]] ^ _round_keys[i - 1][0][0] ^ round_const; + _round_keys[i][1][0] = S[_round_keys[i - 1][2][3]] ^ _round_keys[i - 1][1][0]; + _round_keys[i][2][0] = S[_round_keys[i - 1][3][3]] ^ _round_keys[i - 1][2][0]; + _round_keys[i][3][0] = S[_round_keys[i - 1][0][3]] ^ _round_keys[i - 1][3][0]; + + for (int j = 0; j < 4; j++) { + _round_keys[i][j][1] = _round_keys[i - 1][j][1] ^ _round_keys[i][j][0]; + _round_keys[i][j][2] = _round_keys[i - 1][j][2] ^ _round_keys[i][j][1]; + _round_keys[i][j][3] = _round_keys[i - 1][j][3] ^ _round_keys[i][j][2]; + } // End of 'for' statement + + // Update round constant + round_const = XTIME[round_const]; + } // End of 'for' statement + + return 0; +} + +void rijndael::rijndael_encrypt(const uint8_t p_input[16], uint8_t p_output[16]) { + + // Initialise state array from p_input byte string + uint8_t state[4][4]; + for (int i = 0; i < 16; i++) { + state[i & 0x3][i>>2] = p_input[i]; + } // End of 'for' statement + + // Add first round_key + key_add(state, _round_keys, 0); + + // Do lots of full rounds + int r = 1; + for ( ; r <= 9; r++) { + byte_sub(state); + shift_row(state); + mix_column(state); + key_add(state, _round_keys, r); + } // End of 'for' statement + + // Final round + byte_sub(state); + shift_row(state); + key_add(state, _round_keys, r); + + /* produce output byte string from state array */ + for (int i = 0; i < 16; i++) { + p_output[i] = state[i & 0x3][i>>2]; + } // End of 'for' statement +} + +void rijndael::key_add(uint8_t p_state[4][4], const uint8_t p_round_keys[11][4][4], const int p_round) { + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + p_state[i][j] ^= p_round_keys[p_round][i][j]; + } // End of 'for' statement + } // End of 'for' statement +} +void rijndael::byte_sub(uint8_t p_state[4][4]) { + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + p_state[i][j] = S[p_state[i][j]]; + } // End of 'for' statement + } // End of 'for' statement +} +void rijndael::shift_row(uint8_t p_state[4][4]) { + uint8_t temp; + + // Left rotate row 1 by 1 + temp = p_state[1][0]; + p_state[1][0] = p_state[1][1]; + p_state[1][1] = p_state[1][2]; + p_state[1][2] = p_state[1][3]; + p_state[1][3] = temp; + + // Left rotate row 2 by 2 + temp = p_state[2][0]; + p_state[2][0] = p_state[2][2]; + p_state[2][2] = temp; + temp = p_state[2][1]; + p_state[2][1] = p_state[2][3]; + p_state[2][3] = temp; + + // Left rotate row 3 by 3 + temp = p_state[3][0]; + p_state[3][0] = p_state[3][3]; + p_state[3][3] = p_state[3][2]; + p_state[3][2] = p_state[3][1]; + p_state[3][1] = temp; +} +void rijndael::mix_column(uint8_t p_state[4][4]) { + // Do one column at a time + uint8_t temp, tmp, tmp0; + for (int i = 0; i < 4; i++) { + temp = p_state[0][i] ^ p_state[1][i] ^ p_state[2][i] ^ p_state[3][i]; + tmp0 = p_state[0][i]; + + // XTIME array does multiply by x in GF2^8 + tmp = XTIME[p_state[0][i] ^ p_state[1][i]]; + p_state[0][i] ^= temp ^ tmp; + tmp = XTIME[p_state[1][i] ^ p_state[2][i]]; + p_state[1][i] ^= temp ^ tmp; + tmp = XTIME[p_state[2][i] ^ p_state[3][i]]; + p_state[2][i] ^= temp ^ tmp; + tmp = XTIME[p_state[3][i] ^ tmp0]; + p_state[3][i] ^= temp ^ tmp; + } // End of 'for' statement +} diff --git a/ccsrc/Protocols/FiveG_AKA/rijndael.hh b/ccsrc/Protocols/FiveG_AKA/rijndael.hh new file mode 100644 index 0000000000000000000000000000000000000000..09f078bc16cfccd6d3eb64ccfcdeec41ecd9f3e1 --- /dev/null +++ b/ccsrc/Protocols/FiveG_AKA/rijndael.hh @@ -0,0 +1,97 @@ +#pragma once + +#include + +/*! + * \class rijndael + * \brief Implement rijndael as defined in ETSI TS 135 206 V16.0.0 (2020-08) + */ +class rijndael { + const uint8_t S[256]{ //>> ngap_codec::encode: ", ngap); + + BITSTRING bs = LibNGAP__EncdecDeclarations::fx__enc__NGAP__PDU(ngap); + if (!bs.is_bound()) { + loggers::get_instance().error("ngap_codec::encode: Failed to encode NGAP value"); + return -1; + } + + data = bit2oct(bs); + return 0; +} + +int ngap_codec::decode(const OCTETSTRING &p_data, NGAP__PDU__Descriptions::NGAP__PDU &ngap, params_ngap *params) { + loggers::get_instance().log_msg(">>> ngap_codec::decode: ", p_data); + + BITSTRING bs = oct2bit(p_data); + int result = static_cast(LibNGAP__EncdecDeclarations::fx__dec__NGAP__PDU(bs, ngap)); + if (result != 0) { + loggers::get_instance().error("ngap_codec::decode: Failed to decode NGAP PDU"); + return -1; + } + + return 0; +} diff --git a/ccsrc/Protocols/NGAP/ngap_codec.hh b/ccsrc/Protocols/NGAP/ngap_codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..9652586d2e6f12c70081ad393f3994c09791be4a --- /dev/null +++ b/ccsrc/Protocols/NGAP/ngap_codec.hh @@ -0,0 +1,20 @@ +#pragma once + +#include "codec.hh" + +class BITSTRING; //! Forward declaration of TITAN class +class OCTETSTRING; //! Forward declaration of TITAN class + +namespace NGAP__PDU__Descriptions { //! Forward declaration of asn1c NGAP class + class NGAP__PDU; +} + +class ngap_codec { + +public: + explicit ngap_codec(){}; + virtual ~ngap_codec(){}; + + virtual int encode(const NGAP__PDU__Descriptions::NGAP__PDU& ngap, OCTETSTRING &data); + virtual int decode(const OCTETSTRING &data, NGAP__PDU__Descriptions::NGAP__PDU &ngap, params_ngap *params = NULL); +}; diff --git a/ccsrc/Protocols/NGAP/ngap_types.hh b/ccsrc/Protocols/NGAP/ngap_types.hh new file mode 100644 index 0000000000000000000000000000000000000000..5aa2e25d58d6275d39b88be5053ca1142e87d26e --- /dev/null +++ b/ccsrc/Protocols/NGAP/ngap_types.hh @@ -0,0 +1,15 @@ +/*! + * \file ngap_types.hh + * \brief Header file for TITAN NGAP types. + * \author ETSI + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +using namespace std; // Required for isnan() +#include "LibNGAP_TypesAndValues.hh" +#include "NGAP_PDU_Descriptions.hh" diff --git a/ccsrc/Protocols/NGAP_layer/module.mk b/ccsrc/Protocols/NGAP_layer/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..654f8ac098b4e4353f45366c450514bf62b01472 --- /dev/null +++ b/ccsrc/Protocols/NGAP_layer/module.mk @@ -0,0 +1,2 @@ +sources := ngap_layer.cc +includes := . ../NGAP/ diff --git a/ccsrc/Protocols/NGAP_layer/ngap_layer.cc b/ccsrc/Protocols/NGAP_layer/ngap_layer.cc new file mode 100644 index 0000000000000000000000000000000000000000..2adb22ded4b312eab02e5acf2e01b21c8f9d57f3 --- /dev/null +++ b/ccsrc/Protocols/NGAP_layer/ngap_layer.cc @@ -0,0 +1,68 @@ +/*! + * \file ngap_layer.cc + * \brief CC file for NGAP protocol layer. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#include "ngap_types.hh" + +#include "NGAP_TestSystem.hh" + +#include "ngap_layer_factory.hh" + +#include "registration.hh" + +#include "loggers.hh" + +ngap_layer::ngap_layer(const std::string &p_type, const std::string ¶m) : t_layer(p_type), _params(), _codec() { + loggers::get_instance().log(">>> ngap_layer::ngap_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + + // Register this object for AdapterControlPort + loggers::get_instance().log("ngap_layer::ngap_layer: Register %s/%p", p_type.c_str(), this); + registration::get_instance().add_item(p_type, this); +} + +void ngap_layer::sendMsg(const NGAP__PDU__Descriptions::NGAP__PDU& p, params ¶ms) { + loggers::get_instance().log_msg(">>> ngap_layer::sendMsg: ", p); + + // Encode NGAP PDU + OCTETSTRING data; + if (_codec.encode(p, data) < 0) { + loggers::get_instance().warning("ngap_layer::sendMsg: Encoding failure"); + data=int2oct(0,1); + //return; + } + loggers::get_instance().log_msg(">>> ngap_layer::sendMsg . encoded: ", data); + + send_data(data, _params); +} + +void ngap_layer::send_data(OCTETSTRING &data, params &p_params) { + loggers::get_instance().log_msg(">>> ngap_layer::send_data: ", data); + + send_to_all_layers(data, p_params); +} + +void ngap_layer::receive_data(OCTETSTRING &data, params &p_params) { + loggers::get_instance().log_msg(">>> ngap_layer::receive_data: ", data); + + // Decode the payload + NGAP__PDU__Descriptions::NGAP__PDU p; + _codec.decode(data, p); + if (!p.is_bound()) { + // Discard it + return; + } // else, continue + + // Pass it to the ports if any + to_all_upper_ports(p, p_params); +} + +ngap_layer_factory ngap_layer_factory::_f; diff --git a/ccsrc/Protocols/NGAP_layer/ngap_layer.hh b/ccsrc/Protocols/NGAP_layer/ngap_layer.hh new file mode 100644 index 0000000000000000000000000000000000000000..f00bbcdc69e943fe6820d4f45dfff278121a2d83 --- /dev/null +++ b/ccsrc/Protocols/NGAP_layer/ngap_layer.hh @@ -0,0 +1,74 @@ +/*! + * \file ngap_layer.hh + * \brief Header file for NGAP protocol layer. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "ngap_codec.hh" +#include "t_layer.hh" + +namespace LibNGAP__Interface { + class NGAPPort; //! Forward declaration of TITAN class +} // namespace NGAP__TestSystem + +/*! + * \class ngap_layer + * \brief This class provides description of ITS NGAP protocol layer + */ +class ngap_layer : public t_layer { + params_ngap _params; //! Layer parameters + ngap_codec _codec; //! NGAP codec +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the ngap_layer class + */ + explicit ngap_layer() : t_layer(), _params(), _codec(){}; + /*! + * \brief Specialised constructor + * Create a new instance of the ngap_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + ngap_layer(const std::string &p_type, const std::string ¶m); + /*! + * \brief Default destructor + */ + virtual ~ngap_layer(){}; + + /*! + * \fn void sendMsg(const LibItsCam__TestSystem::CamReq& p_ngap_req, params& p_params); + * \brief Send CA message to the lower layers + * \param[in] p_ngap_req The CA message to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + void sendMsg(const NGAP__PDU__Descriptions::NGAP__PDU& p_ngap, params &p_params); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING &data, params ¶ms); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING &data, params &info); + +// int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); + +// int disable_secured_mode(); + +}; // End of class ngap_layer diff --git a/ccsrc/Protocols/NGAP_layer/ngap_layer_factory.hh b/ccsrc/Protocols/NGAP_layer/ngap_layer_factory.hh new file mode 100644 index 0000000000000000000000000000000000000000..dc346e21dcdc989a4dfb8217fa8b0ec77dc9c827 --- /dev/null +++ b/ccsrc/Protocols/NGAP_layer/ngap_layer_factory.hh @@ -0,0 +1,41 @@ +/*! + * \file ngap_layer_factory.hh + * \brief Header file for NGAP protocol layer factory. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "ngap_layer.hh" + +/*! + * \class ngap_layer_factory + * \brief This class provides a factory class to create a ngap_layer class instance + */ +class ngap_layer_factory : public layer_factory { + static ngap_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the ngap_layer_factory class + * \remark The NGAP layer identifier is NGAP + */ + ngap_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("NGAP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + */ + inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new ngap_layer(p_type, p_param); }; +}; // End of class ngap_layer_factory diff --git a/ccsrc/Protocols/NG_NAS/module.mk b/ccsrc/Protocols/NG_NAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..051ffa45df54881198456156f82029e72e9b5671 --- /dev/null +++ b/ccsrc/Protocols/NG_NAS/module.mk @@ -0,0 +1,3 @@ +sources := ng_nas_dl_codec.cc ng_nas_ul_codec.cc +includes := . + diff --git a/ccsrc/Protocols/NG_NAS/ng_nas_codec_factory.hh b/ccsrc/Protocols/NG_NAS/ng_nas_codec_factory.hh new file mode 100644 index 0000000000000000000000000000000000000000..e1b6547de970633e9f65cc93344c6ff4edf8adbb --- /dev/null +++ b/ccsrc/Protocols/NG_NAS/ng_nas_codec_factory.hh @@ -0,0 +1,45 @@ +/*! + * \file ng_nas_codec_factory.hh + * \brief Header file for NG_NAS protocol codec_gen factory. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" +#include "ng_nas_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class ng_nas_codec_factory + * \brief This class provides a factory class to create an ng_nas_codec class instance + */ +class ng_nas_codec_factory: public codec_factory { + static ng_nas_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the ng_nas_codec_factory class + * \remark The + */ + ng_nas_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("ng_nas_codec", this); + }; + /*! + * \fn codec_gen* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec_gen* create_codec() { + return (codec_gen*)new ng_nas_codec(); + }; +}; // End of class ng_nas_codec_factory diff --git a/ccsrc/Protocols/NG_NAS/ng_nas_dl_codec.cc b/ccsrc/Protocols/NG_NAS/ng_nas_dl_codec.cc new file mode 100644 index 0000000000000000000000000000000000000000..9757d6ca860c82e99fc0db03b0435f972585edd0 --- /dev/null +++ b/ccsrc/Protocols/NG_NAS/ng_nas_dl_codec.cc @@ -0,0 +1,248 @@ +/*! + * \file ng_nas_dl_codec.cc + * \brief CC file for NG_NAS protocol codec. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#include +#include +#include + +//#include "ng_nas_dl_codec_factory.hh" + +#include "loggers.hh" + +#include "NG_NAS_TypeDefs.hh" +#include "NG_NAS_MsgContainers.hh" +#include "ng_nas_dl_codec.hh" + +class protocolDiscriminator{ + protocolDiscriminator(); + ~protocolDiscriminator(); + +int enc(NG__NAS__TypeDefs::ExtdProtocolDiscriminator &p){return 100;} + +}; + +int ng_nas_dl_codec::encode (const NG__NAS__MsgContainers::NG__NAS__DL__Message__Type& body, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> ng_nas_dl_codec::encode: ", (const Base_Type&)body); + + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + int level=0; + if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_authentication__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_authentication__Request)) { + loggers::get_instance().log("ng_nas_dl_codec::encode: Process NG_AUTHENTICATION_REQUEST"); + encode_(level,body.authentication__Request(), *body.authentication__Request().get_descriptor(), encoding_buffer); + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_authentication__Result)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_configuration__Update__Command)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_deregistration__Accept)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_deregistration__RequestMT)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_dl__Nas__Transport)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_gmm__Status)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_gsm__Status)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_identity__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_network__Slice__Specific__Authentication__Command)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_network__Slice__Specific__Authentication__Result)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_notification)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Authentication__Command)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Authentication__Result)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Establishment__Accept)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Establishment__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Modification__Command)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Modification__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Release__Command)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_pdu__Session__Release__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_registration__Accept)) { + loggers::get_instance().log("ng_nas_dl_codec::encode: Process NG_REGISTRATION_ACCEPT"); + encode_(level,body.registration__Accept(), *body.registration__Accept().get_descriptor(), encoding_buffer); + + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_registration__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_security__Mode__Command)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_security__Protected__Nas__Message)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_service__Accept)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_service__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_reset__UE__Positioning__Stored__Information)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_nssai__Delete__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_set__UAI__Request)) { + }else{} + /*if (body.raw().is_present() && body.raw().is_bound()) { + const CHARSTRING& v = static_cast(*body.raw().get_opt_value()); + data = char2oct(v); + } else { + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + const NG__NAS__MsgContainers::NG__NAS__DL__Message__Type& msg = body.msg(); + CHARSTRING h("\n"); + encoding_buffer.put_s(h.lengthof(), (const unsigned char*)static_cast(h)); + if (msg.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_locationRequest)) { + const urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequestType& location_request = msg.locationRequest(); + loggers::get_instance().log_msg("ng_nas_dl_codec::encode: Process LocationRequestType", (const Base_Type&)location_request); + location_request.encode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(NG__NAS__MsgContainers::NG__NAS__DL__Message__Type::ALT_locationResponse)) { + const urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponseType& location_response = msg.locationResponse(); + loggers::get_instance().log_msg("ng_nas_dl_codec::encode: Process LocationResponseType", (const Base_Type&)location_response); + location_response.encode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else { + loggers::get_instance().warning("ng_nas_dl_codec::encode: Unsupported variant"); + return -1; + } + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + { // TITAN issue: variant "name as 'device'"; does not work, need to replace "deviceIdenty" by "device" + std::string s(static_cast(data), data.lengthof() + static_cast(data)); + size_t idx = 0; + std::string f("deviceIdentity"); + std::string t("device"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + + // NG112-2021: Apply draft-ietf-geopriv-ng_nas-identity-extensions-06: Use of Device Identity in HTTP-Enabled Location Delivery (HELD) draft-ietf-geopriv-ng_nas-identity-extensions-06 + // FIXME: Add parameter to enable/disable draft-ietf-geopriv-ng_nas-identity-extensions-06 support + f.assign("xmlns:id"); + t.assign("xmlns"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("id:device"); + t.assign("device"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("device:id"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("xmlns:ng_nas"); + t.assign("xmlns"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("ng_nas:location"); + t.assign("location"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("location:ng_nas"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + + data = OCTETSTRING(s.length(), (const unsigned char*)s.c_str()); + } + }*/ + data = int2oct(0,1); + loggers::get_instance().log_msg("ng_nas_dl_codec::encode: After encoding: ", data); + + loggers::get_instance().log("<<< ng_nas_dl_codec::encode"); + return -1; +} + +int ng_nas_dl_codec::encode_(int level,const Base_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer) { + //loggers::get_instance().log(">>> ng_nas_dl_codec::encode_: processing %s/%s", type.get_descriptor()->name, field_descriptor.name); + // loggers::get_instance().log_msg(">>> geonetworking_codec::encode_: ", type); + std::string par(level,' '); + + if (dynamic_cast(&type) != NULL) { + const Record_Type &r = (const Record_Type &)type; + + for (int i = 0; i < r.get_count(); i++) { + //loggers::get_instance().log("ng_nas_dl_codec::encode_: processing - %s/%s - %d (1 ==> use dynamic_cast) - %d", r.fld_name(i), + //r.fld_descr(i)->name,/* r.get_at(i)->get_descriptor()->name,*/ r.get_at(i)->is_optional(), r.get_at(i)->is_present()); + loggers::get_instance().log("ng_nas_dl_codec::encode_: processing -%s- %s/%s -O %d -P %d", par.c_str(), r.fld_name(i), + r.fld_descr(i)->name,/* r.get_at(i)->get_descriptor()->name,*/ r.get_at(i)->is_optional(), r.get_at(i)->is_present()); + //if (r.get_at(i)->is_present()) { + // if (encode_(level++,*r.get_at(i), *r.fld_descr(i), encoding_buffer) == -1) { + // //return -1; + // } + //} + std::string s(r.fld_descr(i)->name); + if(s.compare("@NG_NAS_TypeDefs.ExtdProtocolDiscriminator") ==0){ + //encoding_buffer.put_c(r.get_value(i)); + // const NG__NAS__TypeDefs::ExtdProtocolDiscriminator& pd = (*r.get_at(i)); + loggers::get_instance().log_msg("_____________________",*r.get_at(i)); + } + if(s.compare("@NAS_CommonTypeDefs.SpareHalfOctet") ==0){ + //protocolDiscriminator pd; pd.enc(r); + loggers::get_instance().log("_____________________"); + } + if(s.compare("@NAS_CommonTypeDefs.SecurityHeaderType") ==0){ + //protocolDiscriminator pd; pd.enc(r); + loggers::get_instance().log("_____________________"); + } + if(s.compare("@NAS_CommonTypeDefs.MessageType") ==0){ + //protocolDiscriminator pd; pd.enc(r); + loggers::get_instance().log("_____________________"); + } + + } // End of 'for' statement + } + return 0; +} + +int ng_nas_dl_codec::decode (const OCTETSTRING& p_data, NG__NAS__MsgContainers::NG__NAS__DL__Message__Type& body, params* p_params) +{ + loggers::get_instance().log_msg(">>> ng_nas_dl_codec::decode: p_data=", p_data); + + /*// Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("ng_nas_dl_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("ng_nas_dl_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + loggers::get_instance().log_msg("body: ", body); + NG__NAS__MsgContainers::NG__NAS__DL__Message__Type& msg = body.msg(); + body.raw().set_to_omit(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(OCTETSTRING(it->second.length(), (const unsigned char*)it->second.c_str())); + + if ((it->second.find("second.find(":locationRequest") != std::string::npos)) { + urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequestType location_request; + location_request.decode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequest_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.locationRequest() = location_request; + } else if ((it->second.find("second.find(":locationResponse") != std::string::npos)) { + urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponseType location_response; + location_response.decode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.locationResponse() = location_response; + } else if ((it->second.find("second.find(":presence") != std::string::npos)) { + urn__ietf__params__xml__ns__pidf::Presence presence; + presence.decode(urn__ietf__params__xml__ns__pidf::Presence_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.presence() = presence; + } else if ((it->second.find("second.find(":error") != std::string::npos)) { + urn__ietf__params__xml__ns__geopriv__ng_nas::Error error; + error.decode(urn__ietf__params__xml__ns__geopriv__ng_nas::Error_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.errorType() = error; + } else { + loggers::get_instance().warning("ng_nas_dl_codec::decode: Unsupported variant"); + return -1; + } + + loggers::get_instance().log_msg("<<< ng_nas_dl_codec::decode: ", (const Base_Type&)msg);*/ + return -1; +} + +//ng_nas_dl_codec_factory ng_nas_dl_codec_factory::_f; diff --git a/ccsrc/Protocols/NG_NAS/ng_nas_dl_codec.hh b/ccsrc/Protocols/NG_NAS/ng_nas_dl_codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..f8541f812885518fa636a361f6f230954491adab --- /dev/null +++ b/ccsrc/Protocols/NG_NAS/ng_nas_dl_codec.hh @@ -0,0 +1,35 @@ +/*! + * \file ng_nas_dl_codec.hh + * \brief Header file for NG_NAS protocol codec. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_gen.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace NG__NAS__MsgContainers { + class NG__NAS__DL__Message__Type; +} + +class ng_nas_dl_codec: public codec_gen +{ + int encode_(int level,const Base_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer); + +public: + explicit ng_nas_dl_codec() : codec_gen() { }; + virtual ~ng_nas_dl_codec() { }; + + virtual int encode (const NG__NAS__MsgContainers::NG__NAS__DL__Message__Type& body, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, NG__NAS__MsgContainers::NG__NAS__DL__Message__Type& body, params* p_params = NULL); + +}; // End of class ng_nas_dl_codec diff --git a/ccsrc/Protocols/NG_NAS/ng_nas_ul_codec.cc b/ccsrc/Protocols/NG_NAS/ng_nas_ul_codec.cc new file mode 100644 index 0000000000000000000000000000000000000000..79c44c9bad050a91ed40b07a1c2922038a66ac2c --- /dev/null +++ b/ccsrc/Protocols/NG_NAS/ng_nas_ul_codec.cc @@ -0,0 +1,187 @@ +/*! + * \file ng_nas_ul_codec.cc + * \brief CC file for NG_NAS protocol codec. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#include +#include +#include + +//#include "ng_nas_ul_codec_factory.hh" + +#include "loggers.hh" + +#include "NG_NAS_TypeDefs.hh" +#include "NG_NAS_MsgContainers.hh" +#include "ng_nas_ul_codec.hh" + + +int ng_nas_ul_codec::encode (const NG__NAS__MsgContainers::NG__NAS__UL__Message__Type& body, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> ng_nas_ul_codec::encode: ", (const Base_Type&)body); + + /*if (body.raw().is_present() && body.raw().is_bound()) { + const CHARSTRING& v = static_cast(*body.raw().get_opt_value()); + data = char2oct(v); + } else {*/ + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_authentication__Failure)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_authentication__Response)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_configuration__Update__Complete)){ + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_cp__Service__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_deregistration__Accept)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_deregistration__RequestMO)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_gmm__Status)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_gsm__Status)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_network__Slice__Specific__Authentication__Complete)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_identity__Response)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_notification__Response)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Authentication__Complete)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Establishment__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Modification__Command__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Modification__Complete)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Modification__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Release__Complete)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_pdu__Session__Release__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_registration__Complete)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_registration__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_security__Mode__Complete)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_security__Mode__Reject)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_security__Protected__Nas__Message)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_service__Request)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_ul__Nas__Transport)) { + }else if (body.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_nssai__Delete__Response)) { + }else{} + + /*const NG__NAS__MsgContainers::NG__NAS__UL__Message__Type& msg = body.msg(); + CHARSTRING h("\n"); + encoding_buffer.put_s(h.lengthof(), (const unsigned char*)static_cast(h)); + if (msg.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_locationRequest)) { + const urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequestType& location_request = msg.locationRequest(); + loggers::get_instance().log_msg("ng_nas_ul_codec::encode: Process LocationRequestType", (const Base_Type&)location_request); + location_request.encode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(NG__NAS__MsgContainers::NG__NAS__UL__Message__Type::ALT_locationResponse)) { + const urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponseType& location_response = msg.locationResponse(); + loggers::get_instance().log_msg("ng_nas_ul_codec::encode: Process LocationResponseType", (const Base_Type&)location_response); + location_response.encode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else { + loggers::get_instance().warning("ng_nas_ul_codec::encode: Unsupported variant"); + return -1; + } + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + { // TITAN issue: variant "name as 'device'"; does not work, need to replace "deviceIdenty" by "device" + std::string s(static_cast(data), data.lengthof() + static_cast(data)); + size_t idx = 0; + std::string f("deviceIdentity"); + std::string t("device"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + + // NG112-2021: Apply draft-ietf-geopriv-ng_nas-identity-extensions-06: Use of Device Identity in HTTP-Enabled Location Delivery (HELD) draft-ietf-geopriv-ng_nas-identity-extensions-06 + // FIXME: Add parameter to enable/disable draft-ietf-geopriv-ng_nas-identity-extensions-06 support + f.assign("xmlns:id"); + t.assign("xmlns"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("id:device"); + t.assign("device"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("device:id"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("xmlns:ng_nas"); + t.assign("xmlns"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("ng_nas:location"); + t.assign("location"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + f.assign("location:ng_nas"); + while ((idx = s.find(f)) != std::string::npos) { + s.replace(idx, f.length(), t); + idx += t.length(); + } // End of 'while' statement + + data = OCTETSTRING(s.length(), (const unsigned char*)s.c_str()); + } + }*/ + data = int2oct(0,1); + loggers::get_instance().log_msg("ng_nas_ul_codec::encode: After encoding: ", data); + + loggers::get_instance().log("<<< ng_nas_ul_codec::encode"); + return -1; +} + +int ng_nas_ul_codec::decode (const OCTETSTRING& p_data, NG__NAS__MsgContainers::NG__NAS__UL__Message__Type& body, params* p_params) +{ + loggers::get_instance().log_msg(">>> ng_nas_ul_codec::decode: p_data=", p_data); + + /*// Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("ng_nas_ul_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("ng_nas_ul_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + loggers::get_instance().log_msg("body: ", body); + NG__NAS__MsgContainers::NG__NAS__UL__Message__Type& msg = body.msg(); + body.raw().set_to_omit(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(OCTETSTRING(it->second.length(), (const unsigned char*)it->second.c_str())); + + if ((it->second.find("second.find(":locationRequest") != std::string::npos)) { + urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequestType location_request; + location_request.decode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationRequest_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.locationRequest() = location_request; + } else if ((it->second.find("second.find(":locationResponse") != std::string::npos)) { + urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponseType location_response; + location_response.decode(urn__ietf__params__xml__ns__geopriv__ng_nas::LocationResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.locationResponse() = location_response; + } else if ((it->second.find("second.find(":presence") != std::string::npos)) { + urn__ietf__params__xml__ns__pidf::Presence presence; + presence.decode(urn__ietf__params__xml__ns__pidf::Presence_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.presence() = presence; + } else if ((it->second.find("second.find(":error") != std::string::npos)) { + urn__ietf__params__xml__ns__geopriv__ng_nas::Error error; + error.decode(urn__ietf__params__xml__ns__geopriv__ng_nas::Error_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.errorType() = error; + } else { + loggers::get_instance().warning("ng_nas_ul_codec::decode: Unsupported variant"); + return -1; + } + + loggers::get_instance().log_msg("<<< ng_nas_ul_codec::decode: ", (const Base_Type&)msg);*/ + return -1; +} + +//ng_nas_ul_codec_factory ng_nas_ul_codec_factory::_f; diff --git a/ccsrc/Protocols/NG_NAS/ng_nas_ul_codec.hh b/ccsrc/Protocols/NG_NAS/ng_nas_ul_codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..5d082815db6939408b6b68e90bac0f5ccace7bff --- /dev/null +++ b/ccsrc/Protocols/NG_NAS/ng_nas_ul_codec.hh @@ -0,0 +1,34 @@ +/*! + * \file ng_nas_dl_codec.hh + * \brief Header file for NG_NAS protocol codec. + * \author ETSI TTF041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ + +#pragma once + +#include "codec_gen.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace NG__NAS__MsgContainers { + class NG__NAS__UL__Message__Type; +} + +class ng_nas_ul_codec: public codec_gen +{ +public: + explicit ng_nas_ul_codec() : codec_gen() { }; + virtual ~ng_nas_ul_codec() { }; + + virtual int encode (const NG__NAS__MsgContainers::NG__NAS__UL__Message__Type& body, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, NG__NAS__MsgContainers::NG__NAS__UL__Message__Type& body, params* p_params = NULL); + +}; // End of class ng_nas_ul_codec diff --git a/ccsrc/framework/include/codec.hh b/ccsrc/framework/include/codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..19de78593aeebac395cc444addfa62ff819d1c8f --- /dev/null +++ b/ccsrc/framework/include/codec.hh @@ -0,0 +1,61 @@ +/*! + * \file codec.hh + * \brief Header file for ITS abstract codec definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "params_ngap.hh" + +class OCTETSTRING; //! Declare TITAN class +class CHARSTRING; //! Declare TITAN class +class BITSTRING; //! Declare TITAN class + +/*! + * \class codec + * \brief This class provides the interface for all ITS codecs, include UT and AC codecs + * \abstract + */ +template class codec { +protected: + params_ngap *_params; //! Reference to params stack + // \todo Use smart pointer std::unique_ptr + +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + * \todo Remove logs + */ + explicit codec() : _params(nullptr){}; + /*! + * \fn ~codec(); + * \brief Default destructor + * \virtual + * \todo Remove logs + */ + virtual ~codec(){}; + /*! + * \fn int encode(const TPDUEnc& msg, OCTETSTRING& data); + * \brief Encode typed message into an octet string + * \param[in] p_message The typed message to be encoded + * \param[out] p_data The encoding result + * \return 0 on success, -1 otherwise + * \pure + */ + virtual int encode(const TPDUEnc &p_message, OCTETSTRING &p_data) = 0; + /*! + * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params_ngap* p_params = NULL); + * \brief Encode typed message into an octet string format + * \param[in] p_data The message in its octet string + * \param[out] p_message The decoded typed message + * \return 0 on success, -1 otherwise + * \pure + */ + virtual int decode(const OCTETSTRING &p_, TPDUDec &p_message, params_ngap *p_params = NULL) = 0; +}; // End of class codec diff --git a/ccsrc/framework/include/data_event_notifier.hh b/ccsrc/framework/include/data_event_notifier.hh new file mode 100644 index 0000000000000000000000000000000000000000..3f5207a7b5599d37ab3c9f78a7b7ac216d99b926 --- /dev/null +++ b/ccsrc/framework/include/data_event_notifier.hh @@ -0,0 +1,11 @@ +#pragma once + +#include "params_ngap.hh" + +class OCTETSTRING; //! Forward declaration of TITAN class + +class data_event_notifier { +public: + virtual ~data_event_notifier() = default; + virtual void update(OCTETSTRING &p_data, params_ngap &p_params) {}; +}; // End of abstract class data_event_notifier diff --git a/ccsrc/framework/include/data_event_observer.hh b/ccsrc/framework/include/data_event_observer.hh new file mode 100644 index 0000000000000000000000000000000000000000..b677ab618b834102c61a118d2566f91d9b98e014 --- /dev/null +++ b/ccsrc/framework/include/data_event_observer.hh @@ -0,0 +1,19 @@ +#pragma once + +#include + +#include "data_event_notifier.hh" + +class OCTETSTRING; //! Forward declaration of TITAN class + +class data_event_observer { +protected: + std::vector _observers; + +public: + data_event_observer() : _observers() {}; + virtual ~data_event_observer() { _observers.clear(); }; + virtual void incoming_packet_observer_attach(data_event_notifier* p_observer) {}; + virtual void incoming_packet_observer_detach(data_event_notifier* p_observer) {}; + virtual void incoming_packet_notify(OCTETSTRING &p_data, params_ngap &p_params) {}; +}; // End of abstract class data_event_observer diff --git a/ccsrc/framework/include/params_nas.hh b/ccsrc/framework/include/params_nas.hh new file mode 100644 index 0000000000000000000000000000000000000000..df63dfb697a2f1d80c08f60dd946462b453f391f --- /dev/null +++ b/ccsrc/framework/include/params_nas.hh @@ -0,0 +1,37 @@ +/*! + * \file params_nas.hh + * \brief Header file for the parameter dictionary. + * \author ETSI TTF T041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include + +#include "params.hh" + +/*! + * \class params_nas + * \brief This class provides basic functionalities for an ITS dictionary + */ +class params_nas : public params { +public: //! \publicsection + + /*! + * \brief Default constructor + * Create a new instance of the params_nas class + */ + params_nas() : params() {}; + + /*! + * \brief Default destructor + */ + virtual ~params_nas(){}; + +}; // End of class params_nas diff --git a/ccsrc/framework/include/params_ngap.hh b/ccsrc/framework/include/params_ngap.hh new file mode 100644 index 0000000000000000000000000000000000000000..2c3df36bfc9ed3822431c7fd492f5d14afe2f994 --- /dev/null +++ b/ccsrc/framework/include/params_ngap.hh @@ -0,0 +1,37 @@ +/*! + * \file params_ngap.hh + * \brief Header file for the parameter dictionary. + * \author ETSI TTF T033 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include + +#include "params.hh" + +/*! + * \class params_ngap + * \brief This class provides basic functionalities for an ITS dictionary + */ +class params_ngap : public params { +public: //! \publicsection + + /*! + * \brief Default constructor + * Create a new instance of the params_ngap class + */ + params_ngap() : params() {}; + + /*! + * \brief Default destructor + */ + virtual ~params_ngap(){}; + +}; // End of class params_ngap diff --git a/ccsrc/framework/module.mk b/ccsrc/framework/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..34f1a7587cced9abffcb76b438c35fd1f42ae228 --- /dev/null +++ b/ccsrc/framework/module.mk @@ -0,0 +1,2 @@ +sources := src/params_nas.cc +includes += ./include diff --git a/ccsrc/framework/src/params_nas.cc b/ccsrc/framework/src/params_nas.cc new file mode 100644 index 0000000000000000000000000000000000000000..943d78e8f2642ec72dda34940ebca7e4e990d71a --- /dev/null +++ b/ccsrc/framework/src/params_nas.cc @@ -0,0 +1,17 @@ +/*! + * \file param_sits.cc + * \brief Source file for the parameter dictionary. + * \author ETSI TTF T041 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#include +#include + +#include "loggers.hh" +#include "params_nas.hh" + + diff --git a/ccsrc/framework/src/params_ngap.cc b/ccsrc/framework/src/params_ngap.cc new file mode 100644 index 0000000000000000000000000000000000000000..643011a75ac7e9bc271f4986acb8d940d17deb8a --- /dev/null +++ b/ccsrc/framework/src/params_ngap.cc @@ -0,0 +1,17 @@ +/*! + * \file param_sits.cc + * \brief Source file for the parameter dictionary. + * \author ETSI TTF T033 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#include +#include + +#include "loggers.hh" +#include "params_ngap.hh" + + diff --git a/config.mk b/config.mk new file mode 100644 index 0000000000000000000000000000000000000000..9aeee3f5ae6bf6df196a37ab43f48e1590bb2ee6 --- /dev/null +++ b/config.mk @@ -0,0 +1,16 @@ +# Do not use -X if -H is not used +#TTCN3_COMPILER_OPTIONS := -d -e -f -g -j -H -l -L -R -U none -x -X +TTCN3_COMPILER_OPTIONS := -b -d -e -f -g -j -l -L -O -P NGAP-PDU-Descriptions.NGAP-PDU -R -U none -x +TTCN3_DIR := $(HOME)/frameworks/titan/titan.core/Install +#TTCN3_DIR := $(HOME)/tmp/ttcn3-9.0.0 +#ASN1C_PATH := $(HOME)/frameworks/asn1c.denis +#ASN1C_PATH := /home/ubuntu/bin/asn1c.denis/ +#WPCAP_DLL_PATH := /cygdrive/c/windows/system32/npcap/wpcap.dll +#NPCAP_INCLUDE := /cygdrive/c/PROGRA~1/Npcap/sdk/include +#T3Q_PATH=./tools/t3q-v2.0.0b30 +#T3Q_CONFIG=t3q.cfg +#T3D_PATH=./tools/t3d-v2.0.0b30 +#T3D_CONFIG=t3d.cfg +#ITS_CONTAINER=../../../AtsDENM/lib/asn1/cdd/ITS_Container.asn +#OSIP_INCLUDE= /home/ubuntu/bin/osip/include/ +#OSIP_LIB= /home/ubuntu/bin/osip/src/osipparser2/.libs/ diff --git a/etc/Ats_NG_NAS/AtsNGAP_AMF.cfg_ b/etc/Ats_NG_NAS/AtsNGAP_AMF.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..9a5c40c22cc36e7e64ce6dea74fb6e8695e0304d --- /dev/null +++ b/etc/Ats_NG_NAS/AtsNGAP_AMF.cfg_ @@ -0,0 +1,97 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +#NAS_Pics.PICS_NAS_AMF_IUT := false +#NAS_Pics.PICS_NAS_AMF_IUT := true +NG_NAS_Pics.PICS_NGNAS := true + +# 5GRegAuthSec_deReg.pcap +LibNGAP_Pixits.PX_AMF_NAME := "Kontron5G-amf" +LibNGAP_Pixits.PX_RAN_UE_NGAP_ID := 0 +LibNGAP_Pixits.PX_AMF_UE_NGAP_ID := 22 +LibNGAP_Pixits.PX_PLMN_IDENTITY := '00f110'O + +Lib_NG_NAS_Pixits.PX_SUPI_FORMAT := '0000'B +Lib_NG_NAS_Pixits.PX_SUPI_DIGITS := '00f110214300014444330302'O + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/Ats_NG_NAS/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +system.NGAP_gNB_1.params := "NGAP/SCTP_FILE/IP_OFFLINE/ETH(mac_src=8c554ac1eee0,mac_dst=8c554ac1eee1)/PCAP_FILE(file=../captures/5GRegAuthSec_deReg.pcap)" +system.N2_gNBaMF_P.params := "NGAP/SCTP_FILE/IP_OFFLINE/ETH(mac_src=8c554ac1eee0,mac_dst=8c554ac1eee1)/PCAP_FILE(file=../captures/5GRegAuthSec_deReg.pcap)" +#aMFNASComponent.N2_gNBaMF_P.params := "NAS/SCTP_FILE/IP_FILE/ETH/PCAP_FILE(file=../captures/free5gc.pcap)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsImsIot_TestControl.control + +#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_02 +#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_03 +#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_04 +#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_05 +#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_ABN_01 +NG_NAS_TestCases.TC_NGNAS_AMF_AUT_SEQ_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_SEC_ACC_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_SEC_REJ_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_DLN_ACC_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_02 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_03 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_04 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_05 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_REJ_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_REG_REJ_02 +#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_ACC_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_ACC_02 +#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_REQ_01 +#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_REQ_02 +#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_REQ_03 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/Ats_NG_NAS/AtsNGAP_GNB.cgf_ b/etc/Ats_NG_NAS/AtsNGAP_GNB.cgf_ new file mode 100644 index 0000000000000000000000000000000000000000..7f8b8a2eaf44f8890c03c6f5faae617adb418147 --- /dev/null +++ b/etc/Ats_NG_NAS/AtsNGAP_GNB.cgf_ @@ -0,0 +1,64 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +NAS_Pics.PICS_NAS_GNB_IUT := true +NAS_Pics.PICS_NAS_AMF_IUT := false + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/Ats_NG_NAS/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +system.NGAP_gNB_1.params := "NAS/NGAP/SCTP_FILE/IP_OFFLINE/PCAP_FILE(file=../captures/5g_reg.pcapng)" +system.N2_gNBaMF_P.params := "NAS/NGAP/SCTP_FILE/IP_OFFLINE/PCAP_FILE(file=../captures/5g_reg.pcapng)" +#aMFNASComponent.N2_gNBaMF_P.params := "NAS/SCTP_FILE/IP_FILE/ETH/PCAP_FILE(file=../captures/free5gc.pcap)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsImsIot_TestControl.control + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/install.sh b/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..e05d3d56f72b8f973c2a7aefec1eb4bc4ff990b4 --- /dev/null +++ b/install.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +#set -e +set -vx + +BASE_PATH=`pwd` + +git checkout devel +git submodule update --init --recursive --remote + +if [ ! -d ./titan-test-system-framework ] +then + git clone --recurse-submodules --branch devel https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git + cd ./titan-test-system-framework +else + cd ./titan-test-system-framework + git checkout devel +fi +# TODO later +#cd ./ttcn/LibHttp +#ln -sf module_5GNGAP.mk module.mk + +cd $BASE_PATH +ln -f ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ +# TODO Add other patch + +cd ./ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src +git apply ../../../../patch_abstract_socket/Abstract_Socket.hh.patch +git apply ../../../../patch_abstract_socket/Abstract_Socket.cc.patch +cd $BASE_PATH + +exit 0 diff --git a/scripts/build_titan.bash b/scripts/build_titan.bash new file mode 100755 index 0000000000000000000000000000000000000000..9d39632ab48255e2ed3ec1e21f67235a07bf108c --- /dev/null +++ b/scripts/build_titan.bash @@ -0,0 +1,106 @@ +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +set -e +#set -vx + +clear + +if [ -z "${TOP}" ] +then + echo "Failed, TOP variable not defined, exit" + exit 1 +fi + +CURDIR=`pwd` +TITAN_DIR=${TOP}/.. + +# Move to the right directory +if [ ! -d ${TITAN_DIR} ] +then + echo "Titan directory does not exist, create it" + # Create TITAN directories + mkdir -p ${TITAN_DIR} + if [ ! "$?" -eq "0" ] + then + echo "Failed, TOP variable not defined, exit" + exit 2 + fi + cd ${TITAN_DIR} + # Clone all TITAN repositories + if [ ! -f ${CURDIR}/titan_repos.txt ] + then + echo "${HOME_BIN}/titan_repos.txt file does not exist, exit" + rm -fr ${TOP} + rm -fr ${TOP}/.. + exit 3 + fi + TITAN_REPOS=`cat ${CURDIR}/titan_repos.txt` + for i in ${TITAN_REPOS}; + do + git clone $i + if [ ! "$?" -eq "0" ] + then + echo "Failed to clone $i, exit" + exit 4 + fi + done +else + cd ${TITAN_DIR} + # Update github folders + DIRS=`find . -type d -name ".git" -exec dirname {} \;` + for i in ${DIRS}; + do + echo "Processing $i..." + cd $i + git fetch + if [ ! "$?" -eq "0" ] + then + echo "Failed to fetch $i, continue" + else + git pull + if [ ! "$?" -eq "0" ] + then + echo "Failed to pull $i, continue" + fi + fi + cd - + done +fi + +# Build TITAN core +export JNI=no +export GUI=no +export DEBUG=no +export GEN_PDF=no +if [ -d ${TTCN3_DIR} ] +then + rm -fr ${TTCN3_DIR} +fi +mkdir ${TTCN3_DIR} +cd ./titan.core +/bin/cat < Makefile.personal +JNI:=no +GUI:=no +DEBUG:=no +GEN_PDF:=no +EOF + +# To prevent link error /usr/bin/ld: /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command lineema +sed --in-place 's/LINUX_LIBS := -lxml2/LINUX_LIBS := -lxml2 -lpthread/g' ./core/Makefile + +echo "Starting build..." +make clean +if [ "${OSTYPE}" == "cygwin" ] +then + make -j +else + make +fi +make install +echo "Build done" + +# Go back to initial directory +cd ${CURDIR} +exit 0 diff --git a/scripts/devenv.bash.debian b/scripts/devenv.bash.debian new file mode 100755 index 0000000000000000000000000000000000000000..3954023022c3ecaae5adb797b9f65d34014d2616 --- /dev/null +++ b/scripts/devenv.bash.debian @@ -0,0 +1,77 @@ +#!/bin/bash + +# Turn on debug mode +#set -vx +#set -e + +# Colors and Prompt +#export PS1="\w\$ " +#export PS1="\D{%Y-%m-%d %H:%M:%S} \w\n\$ " + +export EDITOR=emacs +set -o emacs + +# Home working directories +export HOME_FRAMEWORKS=${HOME}/frameworks +export HOME_LIB=${HOME}/lib +export HOME_BIN=${HOME}/bin +export HOME_ETC=${HOME}/etc +export HOME_TMP=${HOME}/tmp +export HOME_DOCS=${HOME}/docs + +# Home common include directory +export HOME_INC=${HOME}/include + +# Update PATH environment variable +export PATH=${HOME_BIN}:${PATH} + +# Update LD_LIBRARY_PATH environment variable +if [ -z "${LD_LIBRARY_PATH}" ] +then + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${HOME}/dev/etsi_its/lib +else + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${HOME}/dev/etsi_its/lib:${LD_LIBRARY_PATH} +fi + + +# Add JAVA support +#export JAVA_VERSION=1.8.0_92 +#export JAVA_JDK=jdk${JAVA_VERSION} +#if [ -d "${HOME_FRAMEWORKS}/${JAVA_JDK}" ] +#then +# export JAVA_HOME=${HOME_FRAMEWORKS}/${JAVA_JDK}/bin +#else +# unset JAVA_VERSION +# unset JAVA_JDK +#fi + +# Add TITAN support +export TOP=${HOME_FRAMEWORKS}/titan/titan.core +export TTCN3_DIR=${TOP}/Install +if [ -d ${TTCN3_DIR} ] +then + export TTCN3_BROWSER=mozilla + export PATH=${TTCN3_DIR}/bin:${PATH} + export LD_LIBRARY_PATH=${TTCN3_DIR}/lib:${LD_LIBRARY_PATH} + export MANPATH=${TTCN3_DIR}/man:${MANPATH} + export TTCN3_LICENSE_FILE=${TTCN3_DIR}/etc/license/license.dat + export PATH_DEV_TTCN=${HOME}/dev/ttcn3 + # ITS support + export PATH_DEV_ITS=${HOME}/dev/TS.ITS + # Emergency Communication support + export PATH_DEV_EMCOM=${HOME}/dev/NG112 + # Mobile-Edge Computing support + export PATH_DEV_MEC=${HOME}/dev/gs032p3-ttcn-test-suite + # CDM/CISE support + export PATH_DEV_MEC=${HOME}/dev/cise + # Validation folder + export VALIDATION_DIR=${HOME} +fi + +export BROWSER=netsurf + +export OPENSSL_DIR=/usr/local + +export LSAN_OPTIONS=verbosity=1:log_threads=1 + + diff --git a/scripts/devenv.bash.ubuntu b/scripts/devenv.bash.ubuntu new file mode 100755 index 0000000000000000000000000000000000000000..254cc37f0994b24a461c14791d3ec14c4336a3a2 --- /dev/null +++ b/scripts/devenv.bash.ubuntu @@ -0,0 +1,73 @@ +#!/bin/bash + +# Turn on debug mode +#set -vx + +set -e + +# Colors and Prompt +#export PS1="\w\$ " +#export PS1="\D{%Y-%m-%d %H:%M:%S} \w\n\$ " + +export TERM=xterm +export EDITOR=emacs +set -o emacs + +# Home working directories +export HOME_FRAMEWORKS=${HOME}/frameworks +export HOME_LIB=${HOME}/lib +export HOME_BIN=${HOME}/bin +export HOME_ETC=${HOME}/etc +export HOME_TMP=${HOME}/tmp +export HOME_DOCS=${HOME}/docs + +# Home common include directory +export HOME_INC=${HOME}/include + +# Update PATH environment variable +export PATH=${HOME_BIN}:${PATH} + +# Update LD_LIBRARY_PATH environment variable +if [ "${LD_LIBRARY_PATH}" == "" ] +then + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib +else + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${LD_LIBRARY_PATH} +fi + + +# Add JAVA support +export JAVA_VERSION=1.8.0_92 +export JAVA_JDK=jdk${JAVA_VERSION} +if [ -d "${HOME_FRAMEWORKS}/${JAVA_JDK}" ] +then + export JAVA_HOME=${HOME_FRAMEWORKS}/${JAVA_JDK}/bin +else + unset JAVA_VERSION + unset JAVA_JDK +fi + +# Add TITAN support +export TOP=${HOME_FRAMEWORKS}/titan/titan.core +export TTCN3_DIR=${TOP}/Install +if [ -d ${TTCN3_DIR} ] +then + export TTCN3_BROWSER=mozilla + export PATH=${TTCN3_DIR}/bin:${PATH} + export LD_LIBRARY_PATH=${TTCN3_DIR}/lib:${LD_LIBRARY_PATH} + export MANPATH=${TTCN3_DIR}/man:${MANPATH} + export TTCN3_LICENSE_FILE=${TTCN3_DIR}/etc/license/license.dat + export PATH_DEV_TTCN=${HOME}/dev/ttcn3 + # ITS support + export PATH_DEV_ITS=${HOME}/dev/TS.ITS + # Emergency Communication support + export PATH_DEV_EMCOM=${HOME}/dev/NG112 + # Mobile-Edge Computing support + export PATH_DEV_MEC=${HOME}/dev/gs032p3-ttcn-test-suite + # CDM/CISE support + export PATH_DEV_MEC=${HOME}/dev/cise + # Validation folder + export VALIDATION_DIR=${HOME} +fi + +export BROWSER=netsurf diff --git a/scripts/f.bash b/scripts/f.bash new file mode 100755 index 0000000000000000000000000000000000000000..9e2bb399203a9b59c6085597f70effb5d49e2be6 --- /dev/null +++ b/scripts/f.bash @@ -0,0 +1,19 @@ +#!/bin/bash +#set -vx + +if [ "$1" == "" ] +then + echo "Search In Files usage: f.bash " + echo " : With default = ttcn" + echo " e.g.: f.bash module ttcn" + exit 0 +fi + +EXT=ttcn +if [ "$2" != "" ] +then + EXT=$2 +fi +find .. -type f -name "*.$EXT" -exec grep -nH $1 {} \; + +exit $? diff --git a/scripts/generate_png.sh b/scripts/generate_png.sh new file mode 100755 index 0000000000000000000000000000000000000000..37b46baa5ad5a4e0bba0dc0e876c0bfb1d1bd736 --- /dev/null +++ b/scripts/generate_png.sh @@ -0,0 +1,17 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +cd ../plantuml/ +python3 . ../logs/${ATS}/merged.log ./${ATS}.txt +cd - + +exit 0 diff --git a/scripts/run_all.bash b/scripts/run_all.bash new file mode 100755 index 0000000000000000000000000000000000000000..f5fe4490ed33e548810b911615a0299df7d2a264 --- /dev/null +++ b/scripts/run_all.bash @@ -0,0 +1,60 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +if ! [[ $1 =~ "^[0-9]+$" ]] +then + COUNTER=$1 +else + COUNTER=1 +fi + +if [ $COUNTER == 0 ] +then + COUNTER=1 + cd .. && make && cd - +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "scripts" ] +then + cd ../scripts + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/scripts directory" + exit 1 + fi +fi + +rm ../logs/$ATS/*.log + +for i in $(seq 1 1 $COUNTER) +do + ./run_mtc.bash & + ./run_ptcs.bash + + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + while [ ${dup} -eq 3 ] + do + sleep 1 + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + done + sleep 1 + + if [ -f ../logs/$ATS/merged_formated.log ] + then + mv ../logs/$ATS/merged_formated.log ../logs/$ATS/merged.`date +'%Y%m%d%S'`.log + fi +done + +exit 0 + + diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash new file mode 100755 index 0000000000000000000000000000000000000000..e2255124147fb86b02e580a4992ec7ea013ab1c0 --- /dev/null +++ b/scripts/run_mtc.bash @@ -0,0 +1,48 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "scripts" ] +then + cd ../scripts + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/scripts directory" + exit 1 + fi +fi + +TITAN_LOG_DIR=../logs/$ATS +if [ ! -d ${TITAN_LOG_DIR} ] +then + mkdir ${TITAN_LOG_DIR} +else + rm -f ${TITAN_LOG_DIR}/*.log +fi + +CFG_FILES=`find ../etc/$ATS -name '*.cfg'` + +echo "> cmtc: to create the MTC server" +echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" +echo "> emtc: Terminate MTC." +mctr ${CFG_FILES} + +sudo chown -R `whoami` ${TITAN_LOG_DIR} +LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +if [ "${TITAN_LOG_DIR}" != "" ] +then + ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} + ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" +fi + +cd ${CURPWD} diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash new file mode 100755 index 0000000000000000000000000000000000000000..1c097d445d09ed82c6c8e934e7e57c03fe142474 --- /dev/null +++ b/scripts/run_ptcs.bash @@ -0,0 +1,36 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "scripts" ] +then + cd ../scripts + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/scripts directory" + exit 1 + fi +fi + +if [ -f ./core ] +then + rm -f ./core +fi + +if [ "$ATS" == "AtsRSUsSimulator" ] +then + sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH ../bin/$ATS 127.0.0.1 12001 +else + sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH ../bin/$ATS 127.0.0.1 12000 +fi + +cd ${CURPWD} diff --git a/scripts/titan_repos.txt b/scripts/titan_repos.txt new file mode 100644 index 0000000000000000000000000000000000000000..8842f4e0283928a94ebbbd37aff6b25fe27c2279 --- /dev/null +++ b/scripts/titan_repos.txt @@ -0,0 +1,56 @@ +https://gitlab.eclipse.org/eclipse/titan/titan.core.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Abstract_Socket.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.HTTPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LANL2asp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PCAPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PIPEasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SCTPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SIPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SQLasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TCPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TELNETasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UDPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.COMMON.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCPv6.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DIAMETER_ProtocolModule_Generator.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DNS.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMPv6.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTSP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SNMP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.TCP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.UDP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.XMPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.misc.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPasp_RFC4511.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Socket-API.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SSHCLIENTasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.STDINOUTmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SUNRPCasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UNIX_DOMAIN_SOCKETasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.IPL4asp.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.FrameRelay.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.H248_v2.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IMAP_4rev1.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICAP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IKEv2.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IPsec.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IUA.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.JSON_v07_2006.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.L2TP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.M3UA.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MIME.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MSRP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.PPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ProtoBuff.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RADIUS_ProtocolModule_Generator.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SRTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.WebSocket.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.HTTP2.0.git +https://gitlab.eclipse.org/eclipse/titan/titan.Libraries.TCCUsefulFunctions.git diff --git a/scripts/update_user_name.sh b/scripts/update_user_name.sh new file mode 100755 index 0000000000000000000000000000000000000000..b5c5d7f3aa7a64d722acac43be8be11ebc2a15df --- /dev/null +++ b/scripts/update_user_name.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Debug mode +#set -e +#set -vx + +# Usage: sudo ./update_user_name.bash +# TODO Use git clone in temporary directory + +USER_NAME='s/etsi/vagrant/g' +for i in `find /home/vagrant/dev/$1 -name "*.cf*"` +do + sed --in-place ${USER_NAME} $i +done + +exit 0 diff --git a/test_purposes/Ngnas_Common.tplan2 b/test_purposes/Ngnas_Common.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..419fbca969162194d41952320567454ce5126ba1 --- /dev/null +++ b/test_purposes/Ngnas_Common.tplan2 @@ -0,0 +1,403 @@ +/* ETSI Software License +* As long as the here under conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchant ability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2023-2024 +*/ + + +Package Ngnas_Common { + Domain { + pics: + - NONE + //5G NAS PICS + - PICS_A2/1 //AMF + - PICS_A3/1 //5GMM-DEREGISTERED + - PICS_A3/2 //5GMM-COMMON-PROCEDURE-INITIATED + - PICS_A3/3 //5GMM-REGISTERED + - PICS_A3/4 //5GMM-DEREGISTERED-INITIATED + - PICS_A3/5 //5GSM-PDU SESSION INACTIVE + - PICS_A3/6 //5GSM-PDU SESSION ACTIVE + - PICS_A3/7 //5GSM-PDU SESSION INACTIVE PENDING + - PICS_A3/8 //5GSM-PDU SESSION MODIFICATION PENDING + - PICS_A3/9 //5GSM-PROCEDURE TRANSACTION INACTIVE + - PICS_A3/10 //5GSM-PROCEDURE TRANSACTION PENDING + - PICS_A4/1 //5GMM-Primary authentication and key agreement procedures + - PICS_A4/1_1 //Initiation and control of the EAP based primary authentication and key agreement procedures + - PICS_A4/1_2 //Initiation and control of the 5G AKA based primary authentication and key agreement procedures + - PICS_A4/1_2_1_1 //Provision of new authentication parameters to the UE on receipt of an AUTHENTICATION FAILURE message containing 5GMM cause #21 "synch failure" + - PICS_A4/1_2_1_2 //Termination of the 5G AKA based primary authentication and key agreement procedure with AUTHENTICATION REJECT on receipt of two consecutive AUTHENTICATION FAILURE message containing 5GMM cause #21 "synch failure" + - PICS_A4/1_2_2_1 //Initiation of the identification procedure on receipt of an AUTHENTICATION FAILURE message containing 5GMM cause #20 "MAC failure" + - PICS_A4/1_2_2_2 //Termination of the 5G AKA based primary authentication and key agreement procedure on receipt of an AUTHENTICATION FAILURE message containing 5GMM cause #20 "MAC failure" + - PICS_A4/1_2_3_1 //Initiation of the identification procedure on receipt of an AUTHENTICATION FAILURE message containing 5GMM cause #26 "non-5G authentication unacceptable" + - PICS_A4/1_2_3_2 //Termination of the 5G AKA based primary authentication and key agreement procedure on receipt of an AUTHENTICATION FAILURE message containing 5GMM cause #26 "non-5G authentication unacceptable" + - PICS_A4/1_2_4 //Re-initiation of the 5G AKA based primary authentication and key agreement procedure on receipt of an AUTHENTICATION FAILURE message containing 5GMM cause #71 "ngKSI already in use" + - PICS_A4/2 //Security mode control procedures + - PICS_A4/2_1 //Initiation of the security mode control procedure to take a 5G NAS security context into use, and initialise and start NAS signalling security + - PICS_A4/2_2 //Initiation of the security mode control procedure to change the 5G NAS security algorithms for a current 5G NAS security context already in use + - PICS_A4/2_3 //Initiation of the security mode control procedure to change the value of uplink NAS COUNT used in the latest SECURITY MODE COMPLETE message + - PICS_A4/2_4 //Initiation of the security mode control procedure to provide the Selected EPS NAS security algorithms to the UE + - PICS_A4/3 //Identification procedures + - PICS_A4/4 //Generic UE configuration update procedures + - PICS_A4/4_1 //Sending of CONFIGURATION UPDATE COMMAND messages to the UE? + - PICS_A4/5 //NAS transport procedures + - PICS_A4/5_1 //UE-initiated NAS transport procedures (receipt of UL NAS TRANSPORT messages) + - PICS_A4/5_1_1 //Sending back to the UE 5GSM messages which were not forwarded due to abnormal case on the network side + - PICS_A4/5_2 //Network-initiated NAS transport procedures (sending of DL NAS TRANSPORT messages) + - PICS_A4/6 //5GMM status procedures + - PICS_A4/7 //Network slice-specific authentication and authorization procedures + - PICS_A4/8 //Registration procedures + - PICS_A4/8_1 //Initial registration procedures + - PICS_A4/8_1_1_1 //Initiation of 5GMM common procedures during the initial registration procedure + - PICS_A4/8_1_1_2 //Skipping of the authentication procedure during an (initial) emergency registration procedure, if the AMF is configured to support emergency registration for unauthenticated SUCIs + - PICS_A4/8_1_2_1 //Inclusion of service area restrictions in the Service area list IE in the REGISTRATION ACCEPT message + - PICS_A4/8_1_2_2 //Inclusion of a list of equivalent PLMNs in the REGISTRATION ACCEPT message + - PICS_A4/8_1_2_3 //Inclusion of rejected NSSAI (S-NSSAIs which are included in the requested NSSAI in the REGISTRATION REQUEST message but rejected by the network) in the REGISTRATION ACCEPT message + - PICS_A4/8_1_2_4 //Inclusion of operator-defined access category definitions in the REGISTRATION ACCEPT message + - PICS_A4/8_1_3 //SMS over NAS in initial registration + - PICS_A4/8_1_4 //MICO mode in initial registration i.e., inclusion of the MICO indication IE in the REGISTRATION ACCEPT message + - PICS_A4/8_2 //Registration procedures for mobility and periodic registration update + - PICS_A4/8_2_1_1 //Initiation of 5GMM common procedures during the mobility and periodic registration update procedure + - PICS_A4/8_2_1_2 //Skipping of the authentication procedure during the registration procedure for mobility and periodic registration update for a UE that has only an emergency PDU session + - PICS_A4/8_2_2_1 //Inclusion of a new TAI list for the UE in the REGISTRATION ACCEPT message + - PICS_A4/8_2_2_2 //Inclusion of a list of equivalent PLMNs in the REGISTRATION ACCEPT message + - PICS_A4/8_2_2_3 //Inclusion of new service area restrictions in the Service area list IE in the REGISTRATION ACCEPT message + - PICS_A4/8_2_2_4 //Inclusion of rejected NSSAI (S-NSSAIs which are included in the requested NSSAI in the REGISTRATION REQUEST message but rejected by the network) in the REGISTRATION ACCEPT message + - PICS_A4/8_2_2_5 //Inclusion of the LADN information IE in the REGISTRATION ACCEPT message + - PICS_A4/8_2_2_6 //Inclusion of operator-defined access category definitions in the REGISTRATION ACCEPT message + - PICS_A4/8_2_3 //SMS over NAS in mobility and periodic registration updates + - PICS_A4/8_2_4 //MICO mode in mobility and periodic registration updates i.e., inclusion of the MICO indication IE in the REGISTRATION ACCEPT message + - PICS_A4/9 //Deregistration procedures + - PICS_A4/9_1 //UE-initiated deregistration procedures + - PICS_A4/9_2 //Network-initiated deregistration procedures + - PICS_A4/9_2_1 //Inclusion of the 5GMM cause IE to specify the reason for the deregistration in the DEREGISTRATION REQUEST message + - PICS_A4/10 //Service request procedures + - PICS_A4/10_1 //Initiation of common procedures during the service request procedure (receipt of SERVICE REQUEST or CONTROL PLANE SERVICE REQUEST message) + - PICS_A4/11 //Paging procedures + - PICS_A4/11_1 //Re-initiation of network paging on expiry of timer T3513 + - PICS_A4/12 //Notification procedures + - PICS_A5/1 //PDU session authentication and authorization procedures + - PICS_A5/2 //Network-requested PDU session modification procedures + - PICS_A5/3 //Network-requested PDU session release procedures + - PICS_A5/6 //UE-requested PDU session establishment procedures + - PICS_A5/6_1 //Inclusion of the Back-off timer value IE in the PDU SESSION ESTABLISHMENT REJECT message, if a PDU session establishment procedure is not accepted by the network + - PICS_A5/7 //UE-requested PDU session modification procedures + - PICS_A5/7_1 //Inclusion of the Back-off timer value IE in the PDU SESSION MODIFICATION REJECT message, if a PDU session modification procedure is not accepted by the network + - PICS_A5/8 //UE-requested PDU session release procedures + - PICS_A5/9 //5GMM status procedures + - PICS_A5/10 //Exchange of extended protocol configuration options + - PICS_A6/1 //Procedures for handling of unknown, unforeseen, and erroneous protocol data? + - PICS_A6/1_1 //Handling (i.e., ignoring) of messages that are too short to contain a complete message type information element + - PICS_A6/1_2_1 //Handling of an unknown, erroneous, or unforeseen PTI received in a 5GSM message + - PICS_A6/1_2_2 //Handling of an unknown, erroneous, or unforeseen PDU session identity received in the header of a 5GSM message + - PICS_A6/1_3 //Sending of a 5GMM STATUS or 5GSM STATUS message (depending on the EPD) with cause #97 "message type non-existent or not implemented" on receipt of a message with message type not defined for the EPD or not implemented by the receiver + - PICS_A6/1_4_1 //Treating messages (see note) received with non-semantical mandatory information element errors + - PICS_A6/1_4_2 //Ignoring messages (see note) received with non-semantical mandatory information element errors + - PICS_A6/1_4_3 //Rejection of PDU SESSION ESTABLISHMENT REQUEST, PDU SESSION MODIFICATION REQUEST, and PDU SESSION RELEASE REQUEST messages with cause #96 "invalid mandatory information" when an error is encountered with a mandatory information element in the 5GSM message + - PICS_A6/1_5 //Handling of messages containing unknown or unforeseen (out of sequence, repeated) IEs in the non-imperative message part + - PICS_A6/1_6_1 //Treating messages received missing a conditional IE or containing an unexpected or a syntactically incorrect conditional IE + - PICS_A6/1_6_2 //Ignoring messages received missing a conditional IE or containing an unexpected or a syntactically incorrect conditional IE + - PICS_A6/1_6_2_1 //Returning a status message (5GMM STATUS or 5GSM STATUS depending on the EPD) with cause #100 "conditional IE error" when ignoring a message received missing a conditional IE or containing an unexpected or a syntactically incorrect conditional IE + - PICS_A6/1_7 //Responding to messages (where a reaction is foreseen) with semantically incorrect contents with status messages (5GMM STATUS or 5GSM STATUS depending on the EPD) with cause #95 "semantically incorrect message + + ; + entities: + - UE + - GNB + - AMF + - IUT + ; + events: + - receives + - sends + - forwards + - isRequestedToPlaceACall + - aborts + // Initial conditions + - isNotRegisteredTo + - hasAchievedFirstRegistration + - isRegisteredTo + - isNotAttachedTo + - isAttachedTo + - isNotConfiguredForTopologyHiding + - isConfiguredForTopologyHiding + - isExistingIn + - isNotAppropriateToServe + - establishedSecurityRelation + - registeredIdentityTelURI + - registeredIdentitySipURI + - hasInitiatedDialogWith + - hasInitiatedPS2CSinEarlydialog + - hasInitiatedPS2CSinAlertingState + - hasEstablishedDialog + - hasEstablishedPS2CSDialog + - hasEstablishedInitialContext + - hasEstablishedRRCConnection + - hasEstablishedContextInproperly + - hasEstablishedPDUsessionWithSameId + - hasEstablishedPDUsession + - isConfiguredWithENUMentryForTelURI_E164NumberOf + - hasReceivedInitialRequestForDialog + - hasReceived200OkOnInitialRequestForDialogWith + - hasReceived180OnInitialRequest + - hasReceived200OkCancel + - hasReceivedTerminatedRequest + - hasReceivedNASMessage + - hasReceivedPAGINGMessage + - hasReceivedOVERLOADSTARTtMessage + - hasSuspendedContext + - hasPendingDataTransmission + - registeredPublicIdsWithTelUriAndSipUri + - hasReceivedSubsequentOrTargetRefreshRequestInDialog + - previouslyEstablishedCallWith + - isRequestedToSend + - isRequestedToDeregisterUser + - isBusy + - isNoLongerAvailable + - isTriggeredToDetachUser + - isRequestedToDetachfromNetwork + - isTransitioningTo + - hasAchievedFirstREGISTER + - hasResponded486INVITE + - hasAchievedInitialINVITE + - hasAchievedINVITE + - hasAchievedUPDATEuponINVITE + - timerOperatorSpecificTimeout //NOTE: 8 seconds is an appropriate value for the operator policy. + - isAttachingToNetwork + - hasDoneSubscription + - indicate + - trigger + - isCMIDLE + - isCMCONNECTED + - alreadyPreparedHandover + - completedHandover + - isInOverloadedState + ; + event templates: + /* This template can be used as default AUTHENTICATION REQUEST message within a DOWNLINK NAS TRANSFER message. */ + - AUTHENTICATION_REQUEST { + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111" + ;, + spare_half_octet, + ABBA, + Authentication_parameter_RAND, + Authentication_parameter_AUTN + ; + ; + to the UE entity + } + ; + } // End of Domain section + + Data { + + type NgapMessage; + type Cause; + type Bitstring; + type PIXIT; + + PIXIT PX_WRONG_ARP_IEI; //0x20 + PIXIT PX_WRONG_ARP_IEI; //0x20 + + //Table 8.1-1 + NgapMessage AMF_CONFIGURATION_UPDATE; + NgapMessage AMF_CONFIGURATION_UPDATE_ACKNOWLEDGE; + NgapMessage AMF_CONFIGURATION_UPDATE_FAILURE; + NgapMessage RAN_CONFIGURATION_UPDATE; + NgapMessage RAN_CONFIGURATION_UPDATE_ACKNOWLEDGE; + NgapMessage RAN_CONFIGURATION_UPDATE_FAILURE; + NgapMessage HANDOVER_CANCEL; + NgapMessage HANDOVER_CANCEL_ACKNOWLEDGE; + NgapMessage HANDOVER_REQUIRED; + NgapMessage HANDOVER_COMMAND; + NgapMessage HANDOVER_PREPARATION_FAILURE; + NgapMessage HANDOVER_REQUEST ; + NgapMessage HANDOVER_REQUEST_ACKNOWLEDGE; + NgapMessage HANDOVER_FAILURE; + NgapMessage INITIAL_CONTEXT_SETUP_REQUEST; + NgapMessage INITIAL_CONTEXT_SETUP_RESPONSE; + NgapMessage INITIAL_CONTEXT_SETUP_FAILURE; + NgapMessage NG_RESET; + NgapMessage NG_RESET_ACKNOWLEDGE; + NgapMessage NG_SETUP_REQUEST; + NgapMessage NG_SETUP_RESPONSE; + NgapMessage NG_SETUP_FAILURE; + NgapMessage PATH_SWITCH_REQUEST; + NgapMessage PATH_SWITCH_REQUEST_ACKNOWLEDGE; + NgapMessage PATH_SWITCH_REQUEST_FAILURE; + NgapMessage PDU_SESSION_RESOURCE_MODIFY_REQUEST; + NgapMessage PDU_SESSION_RESOURCE_MODIFY_RESPONSE; + NgapMessage PDU_SESSION_RESOURCE_MODIFY_INDICATION; + NgapMessage PDU_SESSION_RESOURCE_MODIFY_CONFIRM; + NgapMessage PDU_SESSION_RESOURCE_RELEASE_COMMAND; + NgapMessage PDU_SESSION_RESOURCE_RELEASE_RESPONSE; + NgapMessage PDU_SESSION_RESOURCE_SETUP_REQUEST; + NgapMessage PDU_SESSION_RESOURCE_SETUP_RESPONSE; + NgapMessage UE_CONTEXT_MODIFICATION_REQUEST; + NgapMessage UE_CONTEXT_MODIFICATION_RESPONSE; + NgapMessage UE_CONTEXT_MODIFICATION_FAILURE; + NgapMessage UE_CONTEXT_RELEASE_COMMAND; + NgapMessage UE_CONTEXT_RELEASE_COMPLETE; + NgapMessage WRITE_REPLACE_WARNING_REQUEST; + NgapMessage WRITE_REPLACE_WARNING_RESPONSE; + NgapMessage PWS_CANCEL_REQUEST; + NgapMessage PWS_CANCEL_RESPONSE; + NgapMessage UE_RADIO_CAPABILITY_CHECK_REQUEST; + NgapMessage UE_RADIO_CAPABILITY_CHECK_RESPONSE; + NgapMessage UE_CONTEXT_SUSPEND_REQUEST; + NgapMessage UE_CONTEXT_SUSPEND_RESPONSE; + NgapMessage UE_CONTEXT_SUSPEND_FAILURE; + NgapMessage UE_CONTEXT_RESUME_REQUEST; + NgapMessage UE_CONTEXT_RESUME_RESPONSE; + NgapMessage UE_CONTEXT_RESUME_FAILURE; + NgapMessage UE_RADIO_CAPABILITY_ID_MAPPING_REQUEST; + NgapMessage UE_RADIO_CAPABILITY_ID_MAPPING_RESPONSE; + + //Table 8.1-2 + NgapMessage DOWNLINK_RAN_CONFIGURATION_TRANSFER; + NgapMessage DOWNLINK_RAN_STATUS_TRANSFER; + NgapMessage DOWNLINK_NAS_TRANSPORT; + NgapMessage ERROR_INDICATION; + NgapMessage UPLINK_RAN_CONFIGURATION_TRANSFER; + NgapMessage UPLINK_RAN_STATUS_TRANSFER; + NgapMessage HANDOVER_NOTIFY; + NgapMessage INITIAL_UE_MESSAGE; + NgapMessage NAS_NON_DELIVERY_INDICATION; + NgapMessage PAGING; + NgapMessage PDU_SESSION_RESOURCE_NOTIFY; + NgapMessage REROUTE_NAS_REQUEST; + NgapMessage UE_CONTEXT_RELEASE_REQUEST; + NgapMessage UPLINK_NAS_TRANSPORT; + NgapMessage AMF_STATUS_INDICATION; + NgapMessage PWS_RESTART_INDICATION; + NgapMessage PWS_FAILURE_INDICATION; + NgapMessage DOWNLINK_UE_ASSOCIATED_NRPPA_TRANSPORT; + NgapMessage UPLINK_UE_ASSOCIATED_NRPPA_TRANSPORT; + NgapMessage DOWNLINK_NON_UE_ASSOCIATED_NRPPA_TRANSPORT; + NgapMessage UPLINK_NON_UE_ASSOCIATED_NRPPA_TRANSPORT; + NgapMessage TRACE_START; + NgapMessage TRACE_FAILURE_INDICATION; + NgapMessage DEACTIVATE_TRACE; + NgapMessage CELL_TRAFFIC_TRACE; + NgapMessage LOCATION_REPORTING_CONTROL; + NgapMessage LOCATION_REPORTING_FAILURE_INDICATION; + NgapMessage LOCATION_REPORT; + NgapMessage UE_TNLA_BINDING_RELEASE_REQUEST; + NgapMessage UE_RADIO_CAPABILITY_INFO_INDICATION; + NgapMessage RRC_INACTIVE_TRANSITION_REPORT; + NgapMessage OVERLOAD_START; + NgapMessage OVERLOAD_STOP; + NgapMessage SECONDARY_RAT_DATA_USAGE_REPORT; + NgapMessage UPLINK_RIM_INFORMATION_TRANSFER; + NgapMessage DOWNLINK_RIM_INFORMATION_TRANSFER; + NgapMessage RETRIEVE_UE_INFORMATION; + NgapMessage UE_INFORMATION_TRANSFER; + NgapMessage RAN_CP_RELOCATION_INDICATION; + NgapMessage CONNECTION_ESTABLISHMENT_INDICATION; + NgapMessage AMF_CP_RELOCATION_INDICATION; + NgapMessage HANDOVER_SUCCESS; + NgapMessage UPLINK_RAN_EARLY_STATUS_TRANSFER; + NgapMessage DOWNLINK_RAN_EARLY_STATUS_TRANSFER; + + NgapMessage SECURITY_MODE_COMPLETE; + NgapMessage SECURITY_MODE_REJECT; + + //Table 8.2 + NgapMessage AUTHENTICATION_REQUEST; + NgapMessage AUTHENTICATION_RESPONSE; + + // Table 9.3.1: Security header type + Bitstring PLAIN_5GS_NAS_MESSAGE; // 0 0 0 0 , not security protected + Bitstring INTEGRITY_PROTECTED; // 0 0 0 1 + Bitstring INTEGRITY_PROTECTED_AND_CIPHERED; // 0 0 1 0 + Bitstring INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT; // 0 0 1 1 + Bitstring INTEGRITY_PROTECTED_AND_CIPHERED_WITH_NEW_5G_NAS_SECURITY_CONTEXT; // 0 1 0 0 + + //Section 9.11.3.2 + Cause MAC_failure; + + + + } // End of Data section + + Configuration { + Interface Type defaultGT accepts NgapMessage; + Component Type NgapComponent with gate g of type defaultGT; + Component Type NgapComponent with gate g2 of type defaultGT; + + + Test Configuration CF_GNB_N2N1 + containing + Tester component AMF of type NgapComponent + SUT component IUT of type NgapComponent + connection between AMF.g and IUT.g; + + Test Configuration CF_AMF_N2N1 + containing + Tester component GNB of type NgapComponent + SUT component IUT of type NgapComponent + connection between GNB.g and IUT.g; + + + Test Configuration CF_GNB_2N2 + containing + Tester component AMF of type NgapComponent + SUT component IUT of type NgapComponent + connection between AMF.g and IUT.g; + + Test Configuration CF_AMF_2N2 + containing + Tester component GNB of type NgapComponent + SUT component IUT of type NgapComponent + connection between GNB.g and IUT.g; + + + Test Configuration CF_GNB_N2N1 + containing + Tester component AMF of type NgapComponent + SUT component IUT of type NgapComponent + connection between AMF.g and IUT.g; + + Test Configuration CF_AMF_N2N1 + containing + Tester component GNB of type NgapComponent + SUT component IUT of type NgapComponent + connection between GNB.g and IUT.g; + + + Test Configuration CF_GNB_2N2N1 + containing + Tester component AMF of type NgapComponent + SUT component IUT of type NgapComponent + connection between AMF.g and IUT.g; + + Test Configuration CF_AMF_2N2N1 + containing + Tester component GNB of type NgapComponent + SUT component IUT of type NgapComponent + connection between GNB.g and IUT.g; + + } + + +} // End of Package Ngnas_Common + diff --git a/test_purposes/References.txt b/test_purposes/References.txt new file mode 100644 index 0000000000000000000000000000000000000000..2161f8f52e31ba6b4b220129f90e0055608ae523 --- /dev/null +++ b/test_purposes/References.txt @@ -0,0 +1 @@ +[1] ETSI TS 124 501: "5G;Non-Access-Stratum (NAS) protocol for 5G System (5GS);Stage 3 (3GPP TS 24.501 version 16.14.1 Release 16)". diff --git a/test_purposes/ngnas/TP_AMF_NGAP.tplan2 b/test_purposes/ngnas/TP_AMF_NGAP.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..0180cfbc9cd175dcbfe1905bac2c751e1d3f8466 --- /dev/null +++ b/test_purposes/ngnas/TP_AMF_NGAP.tplan2 @@ -0,0 +1,280 @@ +/* +Copyright (c) ETSI 2025. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface at AMF */ +Package TP_AMF_NGAP { + + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_5GAP_ICS_01 + + Test objective "The IUT is able to receive an INITIAL_UE_MESSAGE to indicate a NAS transport procedure and reply with INITIAL_CONTEXT_SETUP_REQUEST." + + Reference + "ETSI TS 138 413 [1], Clauses 8.3.1.2, 8.6.1.2, 9.2.5.1 and 9.2.2.1" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU, //(see note) + User_Location_Information containing + nR_CGI containing + pLMNIdentity containing + MCC indicating value PX_MCC, + MNC indicating value PX_MNC;, + nRCellIdentity indicating value PX_NR_CELL_IDENTITY;, + tAI containing + pLMNIdentity containing + MCC indicating value PX_MCC, + MNC indicating value PX_MNC;, + tAC indicating value PX_TAC;;, + RRC_Establishmnet_Cause indicating value "mo-signalling", + UE_Context_Request containing + UEContextRequest indicating value '0';; //requested + from the GNB entity + } + then { + the IUT entity sends an INITIAL_CONTEXT_SETUP_REQUEST containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + GUAMI containing + pLMNIdentity containing + MCC indicating value PX_MCC, + MNC indicating value PX_MNC;, + aMFRegionID indicating value RV_AMFRegionID, + aMFSetID indicating value RV_AMFSetID, + aMFPointerID indicating value RV_AMFPointerID;, + NAS_PDU, //(see note) + Allowed_NSSAI containing + Allowed_NSSAI_List containing + Allowed_NSSAI_Item containing + S_NSSAI containing + SST;;;;, + UE_Security_Capabilities containing + NR_Encryption_Algorithms, + NR_Integrity_Protection_Algorithms, + E_UTRA_Encryption_Algorithms, + E_UTRA_Integrity_Protection_Algorithms;, + Security_Key; + to the GNB entity + } + } + }// end TP_5GAP_ICS_01 + + Test Purpose { + + TP Id TP_5GAP_ICS_02 + + Test objective "The IUT is able to receive an UPLINK_NAS_TRANSPORT to indicate a NAS transport procedure and reply with INITIAL_CONTEXT_SETUP_REQUEST." + + Reference + "ETSI TS 138 413 [1], Clauses 8.3.1.2, 8.6.3.2, 9.2.2.1 and 9.2.5.3" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU, //(see note) + User_Location_Information; + from the GNB entity + } + then { + the IUT entity sends an INITIAL_CONTEXT_SETUP_REQUEST containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + GUAMI containing + pLMNIdentity containing + MCC indicating value PX_MCC, + MNC indicating value PX_MNC;, + aMFRegionID indicating value RV_AMFRegionID, + aMFSetID indicating value RV_AMFSetID, + aMFPointerID indicating value RV_AMFPointerID;, + NAS_PDU, //(see note) + Allowed_NSSAI containing + Allowed_NSSAI_List containing + Allowed_NSSAI_Item containing + S_NSSAI containing + SST indicating value PX_SST;;;;, + UE_Security_Capabilities containing + NR_Encryption_Algorithms, + NR_Integrity_Protection_Algorithms, + E_UTRA_Encryption_Algorithms, + E_UTRA_Integrity_Protection_Algorithms;, + Security_Key; + to the GNB entity + } + } + }// end TP_5GAP_ICS_02 + + Test Purpose { + + TP Id TP_5GAP_DNA_01 + + Test objective "The IUT is able to receive an INITIAL_UE_MESSAGE to indicate a NAS transport procedure and reply with DOWNLINK_NAS_TRANSPORT." + + Reference + "ETSI TS 138 413 [1], Clauses 8.6.1.2, 8.6.2.2, 9.2.5.1 and 9.2.5.2" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU, //(see note) + User_Location_Information containing + nR_CGI containing + pLMNIdentity containing + MCC indicating value PX_MCC, + MNC indicating value PX_MNC;, + nRCellIdentity indicating value PX_NR_CELL_IDENTITY;, + tAI containing + pLMNIdentity containing + MCC indicating value PX_MCC, + MNC indicating value PX_MNC;, + tAC indicating value PX_TAC;;, + RRC_Establishmnet_Cause indicating value "mo-signalling", + UE_Context_Request containing + UEContextRequest indicating value '0';; //requested + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU; //(see note) + to the GNB entity + } + } + }// end TP_5GAP_DNA_01 + + Test Purpose { + + TP Id TP_5GAP_DNA_02 + + Test objective "The IUT is able to receive an UPLINK_NAS_TRANSPORT to indicate a NAS transport procedure and reply with DOWNLINK_NAS_TRANSPORT." + + Reference + "ETSI TS 138 413 [1], Clauses 8.6.2.2, 8.6.3.2, 9.2.5.2 and 9.2.5.3" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU, //(see note) + User_Location_Information; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU; //(see note) + to the GNB entity + } + } + }// end TP_5GAP_DNA_02 + + Test Purpose { + + TP Id TP_5GAP_PDU_01 + + Test objective "The IUT is able to receive an UPLINK_NAS_TRANSPORT to indicate a NAS transport procedure and reply with DOWNLINK_NAS_TRANSPORT." + + Reference + "ETSI TS 138 413 [1], Clauses 8.2.1.2, 8.6.3.2, 9.2.1.1 and 9.2.5.3" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + NAS_PDU, //(see note) + User_Location_Information; + from the GNB entity + } + then { + the IUT entity sends a PDU_SESSION_RESOURCE_SETUP_REQUEST containing + AMF_UE_NGAP_ID indicating value RV_AMF_UE_NGAP_ID, + RAN_UE_NGAP_ID indicating value PX_RAN_UE_NGAP_ID, + PDU_Session_Resource_Setup_Request_List containing + PDU_SessionId, + PDU_Session_NAS_PDU, //(see note) + S_NSSAI containing + SST indicating value PX_SST;, + PDU_Session_Resource_Setup_Request_Transfer containing + UL_NGU_UP_TNL_information containing + gTP_tunnel containing + Endpoint_IP_Address, + GTP_TEID;;, + PDU_Session_Type, + QoS_Flow_Setup_Request_List containing + QoS_Flow_Identifier, + QoS_Flow_Level_QoS_Parameters;;;; + to the GNB entity + } + } + }// end TP_5GAP_PDU_01 + +} // End of Package TP_AMF_NGAP + diff --git a/test_purposes/ngnas/TP_AMF_NGNAS.tplan2 b/test_purposes/ngnas/TP_AMF_NGNAS.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..3253fa1c12a22fe513c0c08116f20f0f49dd4491 --- /dev/null +++ b/test_purposes/ngnas/TP_AMF_NGNAS.tplan2 @@ -0,0 +1,1276 @@ +/* +Copyright (c) ETSI 2024. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface at AMF */ +Package TP_AMF { + + + Group "5.4 5GMM Common Procedures" + { + Group "5.4.1 Primary authentication and key agreement procedure" + { + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_01 + + Test objective "Verify that the IUT sends an AUTHENTICATION REQUEST message correctly upon receipt of a NAS Registration without an active security context." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.2 and 8.2.1" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type, + 5GS_mobile_identity + ; + ; + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111" + ;, + Authentication_parameter_RAND, + Authentication_parameter_AUTN + ; + ; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_02 + + Test objective "Verify that the IUT sends an AUTHENTICATION REJECT message correctly upon receipt of an AUTHENTICATION RESPONSE message indicating a wrong ARP IEI." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.5 and 8.2.5" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + event AUTHENTICATION_REQUEST occurs + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + authentication_response_message_identity set to AUTHENTICATION_RESPONSE, + authentication_response_parameter containing + Authentication_response_parameter_IEI indicating value PX_WRONG_ARP_IEI + ; + ; + ; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + authentication_reject_message_identity set to AUTHENTICATION_REJECT + ; + ; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_02 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_03 + + Test objective "Verify that the IUT stops re-sending an AUTHENTICATION REQUEST message if no AUTHENTICATION RESPONSE message is received on the fifth expiry of timer T3560." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 b) and Table 10.3.1" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + and (.) at time point start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + and (!) 6s after start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + and (!) 12s after start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + and (!) 18s after start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + } + Expected behaviour + ensure that { + when { + (.) at time point start_trigger_T3560 : event AUTHENTICATION_REQUEST occurs + } + then { + (!) 6s after start_trigger_T3560 : the IUT entity aborts AUTHENTICATION_REQUEST procedure + (Note 1: "It is not expected to receive another AUTHENTICATION message on the N2N1 interface.") + } + } + } // end TP_5GNAS_AMF_AUT_REQ_03 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_04 + + Test objective "Verify that the IUT sends an IDENTITY REQUEST message correctly upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #20 - MAC failure." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 c) and 8.2.4" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + security_header_type set to INTEGRITY_PROTECTED, + authentication_parameter_AUTN containing + AUTN indicating value PX_WRONG_MAC_CODE + ; + ; + ; + to the UE entity + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + authentication_failure_message_identity set to AUTHENTICATION_FAILURE, + 5GMM_cause set to MAC_failure + + ; + ; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + identity_request_message_identity set to IDENTITY_REQUEST, + identity_type set to SUCI + ; + ; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_04 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_05 + + Test objective "Verify that the IUT sends a new AUTHENTICATION REQUEST message with new ngKSI value to re-initiate the 5G AKA based primary authentication upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #71 - ngKSI already in use." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 e) and 8.2.4" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111" //value for nas_key_set_identifier was already used before + ;, + spare_half_octet, + ABBA, + Authentication_parameter_RAND, + Authentication_parameter_AUTN + ; + ; + to the UE entity + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + authentication_failure_message_identity set to AUTHENTICATION_FAILURE, + 5GMM_cause set to ngKSI_already_in_use + + ; + ; + from the UE entity + } + then { + event AUTHENTICATION_REQUEST occurs with { + argument replaced by the AUTHENTICATION_REQUEST containing + ngKSI containing + nas_key_set_identifier indicating value PX_NON_DEFAULT_NGKSI + ; + ; + } + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_05 + + + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_ABN_01 + + Test objective "Verify that the IUT sends a new IDENTITY REQUEST message to obtain the SUCI from the UE upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #26 - non-5G authentication unacceptable." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 and 8.2.4" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111" + ;, + spare_half_octet, + ABBA, + Authentication_parameter_RAND, + Authentication_parameter_AUTN //the "separation bit" in the AMF field of AUTN is set to 0 + ; + ; + to the UE entity + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + authentication_failure_message_identity set to AUTHENTICATION_FAILURE, + 5GMM_cause set to "Non-5G authentication unacceptable (26)" + + ; + ; + from the UE entity + } + then { + event IDENTITY_REQUEST occurs with { + argument replaced by the AUTHENTICATION_REQUEST containing + 5GS_identity_type_IEI set to "SUCI" + ; + ; + } + to the UE entity + } + } + + } // end TP_5GNAS_AMF_AUT_ABN_01 + + } // end Group Primary authentication and key agreement procedure + + Group "5.4.2 Security mode control procedure" + { + + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_NGNAS_AMF_AUT_SEQ_01 + + Test objective "Verify that the IUT sends a SECURITY MODE CONTROL message correctly to indicate NAS security mode procedure upon receipt of a NAS AUTHENTICATION RESPONSE." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.1.2" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + event AUTHENTICATION_REQUEST occurs with { + argument replaced by the AUTHENTICATION_REQUEST containing + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT + ; + } + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing // AUTHENTICATION_RESPONSE + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + authentication_response_message_identity set to AUTHENTICATION_RESPONSE //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + ; + ; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing // Security mode command + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + security_mode_command_message_identity set to SECURITY_MODE_COMMAND, + selected_NAS_security_algorithms, + ngKSI containing + nas_key_set_identifier set to "111" + ; + replayed_UE_security_capabilities // UE security capability 9.11.3.54 + ; + ; + to the UE entity + } + } + } // end TP_NGNAS_AMF_AUT_SEQ_01 + + Test Purpose { + + TP Id TP_NGNAS_AMF_AUT_SEQ_02 + + Test objective "Verify that the IUT, upon receiving the NAS Security Mode Complete Message after completing the NAS Authentication and Security procedure, successfully completes the registration process by accepting the registration." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.2.2, Clause 8.2.26" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + // TODO + + } // end TP_NGNAS_AMF_AUT_SEQ_02 + + Test Purpose { + + TP Id TP_NGNAS_AMF_AUT_SEQ_03 + + Test objective "Verify that the IUT, upon receiving the NAS Security Mode Reject Message after a failed NAS Authentication and security procedure, successfully aborts the registration process by rejecting the registration." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.2.5, Clause 8.2.27" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + // TODO + + } // end TP_NGNAS_AMF_AUT_SEQ_03 + + Test Purpose { + + TP Id TP_5GNAS_AMF_SEC_ACC_01 + + Test objective "Verify that the IUT, upon receiving the NAS Security Mode Complete Message after completing the NAS Authentication and Security procedure, successfully completes the registration process by accepting the registration." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.2 and 8.2.25" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/2 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, / + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + security_mode_complete_message_identity set to SECURITY_MODE_COMPLETE + ; + ; + from the UE entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 55GS_registration_result_value set to 3GPP_ACCESS;, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC + ; + + ;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + + } + + } // end TP_5GNAS_AMF_SEC_ACC_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_SEC_REJ_01 + + Test objective "Verify that the IUT, upon receiving the NAS Security Mode Reject Message after a failed NAS Authentication and security procedure, successfully aborts the registration process by rejecting the registration." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.2 and 8.2.25" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/2 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + security_mode_reject_message_identity set to SECURITY_MODE_REJECT, + 5GMM_cause set to "UE security capabilities mismatch (23)" + ; + ; + from the UE entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_reject_message_identity set to REGISTRATION_REJECT, + 5GMM_cause set to "UE security capabilities mismatch (23)", + T3346_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + + } + + } + + } // end TP_5GNAS_AMF_SEC_REJ_01 + + + + } // end Group Security mode control procedure + + Group "5.4.5 NAS transport procedure" + { + Test Purpose { + + TP Id TP_5GNAS_AMF_DLN_ACC_01 + + Test objective "Verify that the IUT correctly handles a UL NAS transport message containing a PDU SESSION ESTABLISHMENT REQUEST from the UE and responds with a DL NAS transport message containing a PDU SESSION ESTABLISHMENT ACCEPT." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.5 and 8.2.10, 8.2.11" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A5/6 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + uL_NAS_TRANSPORT_message_identity, + payload_container containing + payload_container_type set to "N1 SM information", + number_of_optional_IEs set to 1, + optional_IE_1 set to "PDU SESSION ESTABLISHMENT REQUEST" + ;, + old_PDU_session_ID + ; + ; + from the UE entity + } + then { + the IUT entity sends an PDU_SESSION_RESOURCE_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + dL_NAS_TRANSPORT_message_identity, + payload_container containing + payload_container_type set to "N1 SM information" + number_of_optional_IEs set to 1, + optional_IE_1 set to "PDU SESSION ESTABLISHMENT ACCEPT" + ;, + pDU_session_ID + ; + ; + to the UE entity + } + + } + }// end TP_5GNAS_AMF_DLN_ACC_01 + + } // end Group 5.4.5 NAS transport procedure + + } // end Group 5.4 5GMM Common Procedures + + Group "5.5.1.2 Registration Procedure for initial registration" + { + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_01 + + Test objective "Verify that the IUT sends a REGISTRATION ACCEPT message containing the 5GS registration result, TAI list, 5G-GUTI and T3512 when initial registration is accepted by the network." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 55GS_registration_result_value set to 3GPP_ACCESS;, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;; + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_01 + + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_02 + + Test objective "Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS allowed when initial registration with SMS over NAS is requested and network allows SMS service." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1_3 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;, + 5GS_update_type containing + SMS_over_NAS_transport_requested set to 1;;; //SMS over NAS supported + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 5GS_registration_result_value set to 3GPP_ACCESS, + SMS_over_NAS_transport_allowed set to 1;, //SMS over NAS allowed + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_02 + + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_03 + + Test objective "Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS not allowed when initial registration with SMS over NAS is requested and network does not support SMS service." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection NOT PICS_A4/8_1_3 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;, + 5GS_update_type containing + SMS_over_NAS_transport_requested set to 1;;; //SMS over NAS supported + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 5GS_registration_result_value set to 3GPP_ACCESS, + SMS_over_NAS_transport_allowed set to 0;, //SMS over NAS not allowed + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_03 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_04 + + Test objective "Verify that the IUT includes the allowed NSSAI in the REGISTRATION ACCEPT message when the UE includes a requested NSSAI in the REGISTRATION REQUEST message and the network allows one or more S-NSSAIs from the requested NSSAI." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + Allowed_NSSAI containing + S_NSSAI_1 containing + SST set to PX_SST_1, + SD set to PX_SD_1, + Mapped_HPLMN_SST set to PX_MAPPED_HPLMN_SST_1, + Mapped_HPLMN_SD set to PX_MAPPED_HPLMN_SD_1;;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_04 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_05 + + Test objective "Verify that the IUT optionally includes rejected NSSAI in the REGISTRATION ACCEPT message when the network rejects one or more S-NSSAIs from the requested NSSAI." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1_2_3 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + Rejected_NSSAI containing + Rejected_S_NSSAI_1 containing + Cause_value, + SST set to PX_SST_Rejected, + SD set to PX_SD_Rejected;;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_05 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_REJ_01 + + Test objective "Verify that the IUT rejects initial registration request due to general NAS level mobility management congestion control with 5GMM cause value #22 - congestion and assign a value for back-off timer T3346." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.5 and 8.2.9" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the AMF entity isInOverloadedState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_reject_message_identity set to REGISTRATION_REJECT, + 5GMM_cause set to "Congestion (22)", + T3346_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_REJ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_REJ_02 + + Test objective "Verify that the IUT rejects initial registration request because all the S-NSSAI(s) included in the requested NSSAI are either rejected for current PLMN, rejected for the current registration area or rejected due to failed or revoked NSSAIs." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.5 and 8.2.9" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + Requested_NSSAI indicating value PX_NSSAI_REVOKED + ; + ; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + Registration_reject_message_identity set to REGISTRATION_REJECT, + 5GMM_cause set to "No network slice available (62)";; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_REJ_02 + + } //end Group "5.5.1.2 Registration Procedure for initial registration" + + Group "5.5.2.2.3 UE-initiated de-registration procedure completion" + { + import all from Ngnas_Common; + + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_ACC_01 + + Test objective "Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with Normal de-registration from the UE, sends a DEREGISTRATION ACCEPT message." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.2.3, 8.2.12 and 8.2.13" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_1 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;, + 5GS_mobile_identity containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Deregistration_accept_message_identity set to DEREGISTRATION_ACCEPT;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_ACC_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_ACC_02 + + Test objective "Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with Switch-off from the UE, does not send a DEREGISTRATION ACCEPT message and IUT completes de-registration procedure." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.2.3, 8.2.12 and 8.2.13" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_1 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to SWITCH_OFF, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;, + 5GS_mobile_identity containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;;; + from the GNB entity + } + then { + the IUT entity not sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Deregistration_accept_message_identity set to DEREGISTRATION_ACCEPT;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_ACC_02 + + } //end Group "5.5.2.2.3 UE-initiated de-registration procedure completion" + + Group "5.5.2.3.1 Network-initiated de-registration procedure initiation" + { + import all from Ngnas_Common; + + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_REQ_01 + + Test objective "Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message containing De-registration type IE with re-registration not required and the access type based on the UE’s registration status (3GPP access only). **NOTE:** explicit network deregistration triggered by O&M - deactivation of UE" + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.3.1 and 8.2.14" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_2 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity indicate a UE deactivation + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_REQ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_REQ_02 + + Test objective "Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message and if UE does not send DEREGISTRATION ACCEPT then IUT retransmits DEREGISTRATION REQUEST message after timer T3522 expiration. **NOTE:** explicit network deregistration triggered by O&M - UE deregistration." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.3.1 and 8.2.14" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_2 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity indicate a UE deregistration and + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST;; + to the GNB entity and + the IUT entity does not receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + Deregistration_accept_message_identity set to DEREGISTRATION_ACCEPT;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_REQ_02 + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_REQ_03 + + Test objective "Verify that the IUT initiates network de-registration by sending DEREGISTRATION REQUEST message containing De-registration type IE with re-registration required and the access type based on the UE’s registration status (3GPP access only). **NOTE 1:** UE sends DEREGISTRATION ACCEPT and starts with re-registration procedure.(also used ref 5.5.2.3.2 1st paragraph) **NOTE 2:** explicit network deregistration triggered by O&M - UE deregistration" + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.3.1, 5.5.2.3.2 and 8.2.14" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_2 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity indicate a UE deregistration + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_REQUIRED, + Access_type set to 3GPP_ACCESS;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_REQ_03 + + } //end Group "5.5.2.3.1 Network-initiated de-registration procedure initiation" + + } +} // End of Package TP_AMF + diff --git a/test_purposes/ngnas/TP_AMF_NGNAS2_clean.tplan2 b/test_purposes/ngnas/TP_AMF_NGNAS2_clean.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..b55480771cae132ae83cce603c21b3d4c9219fcd --- /dev/null +++ b/test_purposes/ngnas/TP_AMF_NGNAS2_clean.tplan2 @@ -0,0 +1,1198 @@ +/* +Copyright (c) ETSI 2025. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface at AMF */ +Package TP_AMF { + + + Group "5.4 5GMM Common Procedures" + { + Group "5.4.1 Primary authentication and key agreement procedure" + { + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_01 + + Test objective "Verify that the IUT sends an AUTHENTICATION REQUEST message correctly upon receipt of a NAS Registration without an active security context." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.2 and 8.2.1" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type, + 5GS_mobile_identity;; + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111";, + Authentication_parameter_RAND, + Authentication_parameter_AUTN;; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_02 + + Test objective "Verify that the IUT sends an AUTHENTICATION REJECT message correctly upon receipt of an AUTHENTICATION RESPONSE message indicating a wrong ARP IEI." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.5 and 8.2.5" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + event AUTHENTICATION_REQUEST occurs + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + authentication_response_message_identity set to AUTHENTICATION_RESPONSE, + authentication_response_parameter containing + Authentication_response_parameter_IEI indicating value PX_WRONG_ARP_IEI;;; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to NOT_SECURITY_PROTECTED, + authentication_reject_message_identity set to AUTHENTICATION_REJECT;; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_02 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_03 + + Test objective "Verify that the IUT stops re-sending an AUTHENTICATION REQUEST message if no AUTHENTICATION RESPONSE message is received on the fifth expiry of timer T3560." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 b) and Table 10.3.1" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + and (.) at time point start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + and (!) 6s after start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + and (!) 12s after start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + and (!) 18s after start_initial_T3560 : event AUTHENTICATION_REQUEST occurs + } + Expected behaviour + ensure that { + when { + (.) at time point start_trigger_T3560 : event AUTHENTICATION_REQUEST occurs + } + then { + (!) 6s after start_trigger_T3560 : the IUT entity aborts AUTHENTICATION_REQUEST procedure + (Note 1: "It is not expected to receive another AUTHENTICATION message on the N2N1 interface.") + } + } + } // end TP_5GNAS_AMF_AUT_REQ_03 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_04 + + Test objective "Verify that the IUT sends an IDENTITY REQUEST message correctly upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #20 - MAC failure." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 c) and 8.2.4" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + security_header_type set to INTEGRITY_PROTECTED, + authentication_parameter_AUTN containing + AUTN indicating value PX_WRONG_MAC_CODE;;; + to the UE entity + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + authentication_failure_message_identity set to AUTHENTICATION_FAILURE, + 5GMM_cause set to MAC_failure;; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + identity_request_message_identity set to IDENTITY_REQUEST, + identity_type set to SUCI;; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_04 + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_REQ_05 + + Test objective "Verify that the IUT sends a new AUTHENTICATION REQUEST message with new ngKSI value to re-initiate the 5G AKA based primary authentication upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #71 - ngKSI already in use." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7 e) and 8.2.4" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111";, //value for nas_key_set_identifier was already used before + spare_half_octet, + ABBA, + Authentication_parameter_RAND, + Authentication_parameter_AUTN;; + to the UE entity + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + authentication_failure_message_identity set to AUTHENTICATION_FAILURE, + 5GMM_cause set to ngKSI_already_in_use;; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier indicating value PX_NON_DEFAULT_NGKSI;, + spare_half_octet, + ABBA, + Authentication_parameter_RAND, + Authentication_parameter_AUTN;; + to the UE entity + } + } + } // end TP_5GNAS_AMF_AUT_REQ_05 + + + + Test Purpose { + + TP Id TP_5GNAS_AMF_AUT_ABN_01 + + Test objective "Verify that the IUT sends a new IDENTITY REQUEST message to obtain the SUCI from the UE upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #26 - non-5G authentication unacceptable." + + Reference + "ETSI TS 124 501 [1], Clauses 5.4.1.3.7, 8.2.4, 5.4.3.2 and 8.2.21.1" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + authentication_request_message_identity set to AUTHENTICATION_REQUEST, + ngKSI containing + nas_key_set_identifier set to "111";, + spare_half_octet, + ABBA, + Authentication_parameter_RAND, + Authentication_parameter_AUTN;; //the "separation bit" in the AMF field of AUTN is set to 0 + to the UE entity + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED, + authentication_failure_message_identity set to AUTHENTICATION_FAILURE, + 5GMM_cause set to "Non-5G authentication unacceptable (26)";; + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSFER containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to NOT_SECURITY_PROTECTED, + spare_half_octet, + identity_request_message_identity set to IDENTITY_REQUEST, + 5GS_identity_type_IEI set to "SUCI";; + to the UE entity + } + } + + } // end TP_5GNAS_AMF_AUT_ABN_01 + + } // end Group Primary authentication and key agreement procedure + + Group "5.4.2 Security mode control procedure" + { + + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_NGNAS_AMF_AUT_SEQ_01 + + Test objective "Verify that the IUT sends a SECURITY MODE COMMAND message correctly to indicate NAS security mode procedure upon receipt of a NAS AUTHENTICATION RESPONSE." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.1.2" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + event AUTHENTICATION_REQUEST occurs with { + argument replaced by the AUTHENTICATION_REQUEST containing + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT; + } + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing // AUTHENTICATION_RESPONSE + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + authentication_response_message_identity set to AUTHENTICATION_RESPONSE;; //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + from the UE entity + } + then { + the IUT entity sends an DOWNLINK_NAS_TRANSPORT containing // Security mode command + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, //reference ts_124007v180200p: Table 11.2.3.1.1A.1: EPD values + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + security_mode_command_message_identity set to SECURITY_MODE_COMMAND, + selected_NAS_security_algorithms, + ngKSI containing + nas_key_set_identifier set to "111";, + replayed_UE_security_capabilities;; // UE security capability 9.11.3.54 + to the UE entity + } + } + } // end TP_NGNAS_AMF_AUT_SEQ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_SEC_ACC_01 + + Test objective "Verify that the IUT, upon receiving the NAS SECURITY MODE COMPLETE message after completing the NAS Authentication and Security procedure, successfully completes the registration process by accepting the registration." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.2 and 8.2.25" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/2 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + security_mode_complete_message_identity set to SECURITY_MODE_COMPLETE;; + from the UE entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 55GS_registration_result_value set to 3GPP_ACCESS;, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + + } + + } // end TP_5GNAS_AMF_SEC_ACC_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_SEC_REJ_01 + + Test objective "Verify that the IUT, upon receiving the NAS SECURITY MODE REJECT message after a failed NAS Authentication and security procedure, successfully aborts the registration process by rejecting the registration." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.2 and 8.2.25" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/2 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5GS_MOBILITY_MANAGEMENT_MESSAGE, + security_header_type set to INTEGRITY_PROTECTED_WITH_NEW_5G_NAS_SECURITY_CONTEXT, + security_mode_reject_message_identity set to SECURITY_MODE_REJECT, + 5GMM_cause set to "UE security capabilities mismatch (23)";; + from the UE entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_reject_message_identity set to REGISTRATION_REJECT, + 5GMM_cause set to "UE security capabilities mismatch (23)", + T3346_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + + } + + } // end TP_5GNAS_AMF_SEC_REJ_01 + + + + } // end Group Security mode control procedure + + Group "5.4.5 NAS transport procedure" + { + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_5GNAS_AMF_DLN_ACC_01 + + Test objective "Verify that the IUT correctly handles a UL NAS transport message containing a PDU SESSION ESTABLISHMENT REQUEST from the UE and responds with a DL NAS transport message containing a PDU SESSION ESTABLISHMENT ACCEPT." + + Reference + "ETSI TS 124 501 [1], Clause 5.4.5 and 8.2.10, 8.2.11" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A5/6 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + uL_NAS_TRANSPORT_message_identity set to UL_NAS_TRANSPORT, + payload_container containing + payload_container_type set to "N1 SM information", + number_of_optional_IEs set to 1, + optional_IE_1 set to "PDU SESSION ESTABLISHMENT REQUEST";, + old_PDU_session_ID;; + from the UE entity + } + then { + the IUT entity sends an PDU_SESSION_RESOURCE_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + dL_NAS_TRANSPORT_message_identity set to DL_NAS_TRANSPORT, + payload_container containing + payload_container_type set to "N1 SM information", + number_of_optional_IEs set to 1, + optional_IE_1 set to "PDU SESSION ESTABLISHMENT ACCEPT";, + pDU_session_ID;; + to the UE entity + } + + } + }// end TP_5GNAS_AMF_DLN_ACC_01 + + } // end Group 5.4.5 NAS transport procedure + + } // end Group 5.4 5GMM Common Procedures + + Group "5.5.1.2 Registration Procedure for initial registration" + { + import all from Ngnas_Common; + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_01 + + Test objective "Verify that the IUT sends a REGISTRATION ACCEPT message containing the 5GS registration result, TAI list, 5G-GUTI and T3512 when initial registration is accepted by the network." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 55GS_registration_result_value set to 3GPP_ACCESS;, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_01 + + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_02 + + Test objective "Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS allowed when initial registration with SMS over NAS is requested and network allows SMS service." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1_3 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;, + 5GS_update_type containing + SMS_over_NAS_transport_requested set to 1;;; //SMS over NAS supported + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 5GS_registration_result_value set to 3GPP_ACCESS, + SMS_over_NAS_transport_allowed set to 1;, //SMS over NAS allowed + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_02 + + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_03 + + Test objective "Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS not allowed when initial registration with SMS over NAS is requested and network does not support SMS service." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection not PICS_A4/8_1_3 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;, + 5GS_update_type containing + SMS_over_NAS_transport_requested set to 1;;; //SMS over NAS supported + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5GS_registration_result containing + 5GS_registration_result_value set to 3GPP_ACCESS, + SMS_over_NAS_transport_allowed set to 0;, //SMS over NAS not allowed + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + TAI_list containing + Partial_tracking_area_list_1 containing + Type_of_list, + Number_of_elements, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + TAC indicating value PX_TAC;;, + T3512_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_03 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_04 + + Test objective "Verify that the IUT includes the allowed NSSAI in the REGISTRATION ACCEPT message when the UE includes a requested NSSAI in the REGISTRATION REQUEST message and the network allows one or more S-NSSAIs from the requested NSSAI." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + Allowed_NSSAI containing + S_NSSAI_1 containing + SST set to PX_SST_1, + SD set to PX_SD_1, + Mapped_HPLMN_SST set to PX_MAPPED_HPLMN_SST_1, + Mapped_HPLMN_SD set to PX_MAPPED_HPLMN_SD_1;;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_04 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_ACC_05 + + Test objective "Verify that the IUT optionally includes rejected NSSAI in the REGISTRATION ACCEPT message when the network rejects one or more S-NSSAIs from the requested NSSAI." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/8_1_2_3 + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a INITIAL_CONTEXT_SETUP_REQUEST containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_accept_message_identity set to REGISTRATION_ACCEPT, + 5G_GUTI containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;, + Rejected_NSSAI containing + Rejected_S_NSSAI_1 containing + Cause_value, + SST set to PX_SST_Rejected, + SD set to PX_SD_Rejected;;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_ACC_05 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_REJ_01 + + Test objective "Verify that the IUT rejects initial registration request due to general NAS level mobility management congestion control with 5GMM cause value #22 - congestion and assign a value for back-off timer T3346." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.5 and 8.2.9" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF and + the AMF entity isInOverloadedState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + 5GS_mobile_identity containing + SUPI_format indicating value IMSI, + Type_of_idenity indicating value SUCI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + Routing_indicator indicating value PX_ROUTING_INDICATOR, + Protection_scheme_id indicating value PX_PROTECTION_SCHEME_ID, + Home_network_public_key_identifier indicating value PX_HOME_NETWORK_PUBLIC_KEY_IDENTIFIER, + MSIN indicating value PX_MSIN;;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Registration_reject_message_identity set to REGISTRATION_REJECT, + 5GMM_cause set to "Congestion (22)", + T3346_value containing + Timer_value indicating value nonZeroValue;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_REJ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_REG_REJ_02 + + Test objective "Verify that the IUT rejects initial registration request because all the S-NSSAI(s) included in the requested NSSAI are either rejected for current PLMN, rejected for the current registration area or rejected due to failed or revoked NSSAIs." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.1.2.5 and 8.2.9" + + Config Id CF_AMF_N2N1 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INITIAL_UE_MESSAGE containing + NAS_PDU containing + Registration_request_message_identity set to REGISTRATION_REQUEST, + 5GS_registration_type containing + 5GS_registration_type_value set to INITIAL_REGISTRATION, + FOR indicating value 1;, //Follow-on request pending + Requested_NSSAI indicating value PX_NSSAI_REVOKED;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + Registration_reject_message_identity set to REGISTRATION_REJECT, + 5GMM_cause set to "No network slice available (62)";; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_REG_REJ_02 + + } //end Group "5.5.1.2 Registration Procedure for initial registration" + + Group "5.5.2.2.3 UE-initiated de-registration procedure completion" + { + import all from Ngnas_Common; + + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_ACC_01 + + Test objective "Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with Normal de-registration from the UE, sends a DEREGISTRATION ACCEPT message." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.2.3, 8.2.12 and 8.2.13" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_1 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;, + 5GS_mobile_identity containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Deregistration_accept_message_identity set to DEREGISTRATION_ACCEPT;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_ACC_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_ACC_02 + + Test objective "Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with Switch-off from the UE, does not send a DEREGISTRATION ACCEPT message and IUT completes de-registration procedure." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.2.3, 8.2.12 and 8.2.13" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_1 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to SWITCH_OFF, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;, + 5GS_mobile_identity containing + Type_of_identity set to 5G_GUTI, + MCC indicating value PX_MCC, + MNC indicating value PX_MNC, + AMF_Region_ID indicating value PX_AMF_REGION_ID, + AMF_Set_ID indicating value PX_AMF_SET_ID, + AMF_Pointer indicating value PX_AMF_POINTER, + 5G_TMSI indicating value RV_5G_TMSI;;; + from the GNB entity + } + then { + the IUT entity not sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to INTEGRITY_PROTECTED_AND_CIPHERED, + Deregistration_accept_message_identity set to DEREGISTRATION_ACCEPT;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_ACC_02 + + } //end Group "5.5.2.2.3 UE-initiated de-registration procedure completion" + + Group "5.5.2.3.1 Network-initiated de-registration procedure initiation" + { + import all from Ngnas_Common; + + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_REQ_01 + + Test objective "Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message containing De-registration type IE with re-registration not required and the access type based on the UE’s registration status (3GPP access only). **NOTE:** explicit network deregistration triggered by O&M - deactivation of UE" + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.3.1 and 8.2.14" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_2 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity indicate a UE deactivation + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_REQ_01 + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_REQ_02 + + Test objective "Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message and if UE does not send DEREGISTRATION ACCEPT then IUT retransmits DEREGISTRATION REQUEST message after timer T3522 expiration. **NOTE:** explicit network deregistration triggered by O&M - UE deregistration." + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.3.1 and 8.2.14" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_2 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity indicate a UE deregistration and + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST;; + to the GNB entity and + the IUT entity does not receives an UPLINK_NAS_TRANSPORT containing + NAS_PDU containing + Deregistration_accept_message_identity set to DEREGISTRATION_ACCEPT;; + from the GNB entity + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_NOT_REQUIRED, + Access_type set to 3GPP_ACCESS;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_REQ_02 + + Test Purpose { + + TP Id TP_5GNAS_AMF_DRG_REQ_03 + + Test objective "Verify that the IUT initiates network de-registration by sending DEREGISTRATION REQUEST message containing De-registration type IE with re-registration required and the access type based on the UE’s registration status (3GPP access only). **NOTE 1:** UE sends DEREGISTRATION ACCEPT and starts with re-registration procedure.(also used ref 5.5.2.3.2 1st paragraph) **NOTE 2:** explicit network deregistration triggered by O&M - UE deregistration" + + Reference + "ETSI TS 124 501 [1], Clauses 5.5.2.3.1, 5.5.2.3.2 and 8.2.14" + + Config Id CF_AMF_N2N1 + + PICS Selection PICS_A4/9_2 + + Initial conditions with { + the UE entity isRegisteredTo the AMF + } + + Expected behaviour + ensure that { + when { + the IUT entity indicate a UE deregistration + } + then { + the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing + NAS_PDU containing + extended_protocol_discriminator set to 5G_MOBILITY_MANAGEMENT_MESSAGES, + security_header_type set to NOT_SECURITY_PROTECTED, + Deregistration_request_message_identity set to DEREGISTRATION_REQUEST, + Deregistration_type containing + Switch_off_value set to NORMAL_DEREGISTRATION, + Reregistration_required_value set to REREGISTRATION_REQUIRED, + Access_type set to 3GPP_ACCESS;;; + to the GNB entity + } + } + }// end TP_5GNAS_AMF_DRG_REQ_03 + + } //end Group "5.5.2.3.1 Network-initiated de-registration procedure initiation" + + +} // End of Package TP_AMF + diff --git a/titan-test-system-framework b/titan-test-system-framework new file mode 160000 index 0000000000000000000000000000000000000000..e7f13cca244490ee6f5fc6e80c6836384b562568 --- /dev/null +++ b/titan-test-system-framework @@ -0,0 +1 @@ +Subproject commit e7f13cca244490ee6f5fc6e80c6836384b562568 diff --git a/ttcn/AtsNGAP/NGAP_Pics.ttcn b/ttcn/AtsNGAP/NGAP_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4706723e9e60ae03b4b7589d9a5111deb51fa591 --- /dev/null +++ b/ttcn/AtsNGAP/NGAP_Pics.ttcn @@ -0,0 +1,143 @@ +/** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides PICS for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NGAP_Pics { + + group PICS_A2 { + /** + * @desc Does gNB act as the IUT? + * @see ETSI + */ + modulepar boolean PICS_NGAP_GNB_IUT := false; + + /** + * @desc Does AMF act as the IUT? + * @see ETSI + */ + modulepar boolean PICS_NGAP_AMF_IUT := false; + + } // End of group PICS_A2 + + group PICS_A3 { + + modulepar boolean PICS_A3_1_1 := false; //gNB - PDU session management procedure - PDU SESSION RESOURCE SETUP REQUEST + modulepar boolean PICS_A3_1_2 := false; //gNB - PDU session management procedure - PDU SESSION RESOURCE RELEASE COMMAND + modulepar boolean PICS_A3_1_3 := false; //gNB - PDU session management procedure - PDU SESSION RESOURCE MODIFY REQUEST + modulepar boolean PICS_A3_1_4 := false; //gNB - PDU session management procedure - PDU SESSION RESOURCE NOTIFY REQUEST + modulepar boolean PICS_A3_1_5 := false; //gNB - PDU session management procedure - PDU SESSION RESOURCE MODIFY INDICATION + modulepar boolean PICS_A3_2_1 := false; //gnB - UE Context Management Procedures - INITIAL CONTEXT SETUP REQUEST + modulepar boolean PICS_A3_2_2 := false; //gnB - UE Context Management Procedures - UE CONTEXT RELEASE REQUEST + modulepar boolean PICS_A3_2_3 := false; //gnB - UE Context Management Procedures - UE CONTEXT RELEASE COMMAND + modulepar boolean PICS_A3_2_4 := false; //gnB - UE Context Management Procedures - UE CONTEXT MODIFICATION REQUEST + modulepar boolean PICS_A3_2_5 := false; //gnB - UE Context Management Procedures - RRC INACTIVE TRANSITION REPORT + modulepar boolean PICS_A3_2_8 := false; //gnB - UE Context Management Procedures - RAN CP Relocation Indication + modulepar boolean PICS_A3_2_11 := false; //gnB - UE Context Management Procedures - UE CONTEXT SUSPEND REQUEST + modulepar boolean PICS_A3_2_12 := false; //gnB - UE Context Management Procedures - UE CONTEXT RESUME REQUEST + modulepar boolean PICS_A3_3_1 := false; //gnB - UE Mobility Management Procedures - HANDOVER REQUIRED + modulepar boolean PICS_A3_3_2 := false; //gnB - UE Mobility Management Procedures - HANDOVER REQUEST + modulepar boolean PICS_A3_3_3 := false; //gnB - UE Mobility Management Procedures - HANDOVER NOTIFY + modulepar boolean PICS_A3_3_4 := false; //gnB - UE Mobility Management Procedures - PATH SWITCH REQUEST + modulepar boolean PICS_A3_3_5 := false; //gnB - UE Mobility Management Procedures - HANDOVER CANCEL + modulepar boolean PICS_A3_3_6 := false; //gnB - UE Mobility Management Procedures - UPLINK RAN STATUS TRANSFER + modulepar boolean PICS_A3_3_8 := false; //gnB - UE Mobility Management Procedures - HANDOVER SUCCESS + modulepar boolean PICS_A3_3_9 := false; //gnB - UE Mobility Management Procedures - UPLINK RAN EARLY STATUS TRANSFER + modulepar boolean PICS_A3_5_1 := false; //gNB - Transport of NAS Messages Procedures - INITIAL UE MESSAGE + modulepar boolean PICS_A3_5_3 := false; //gNB - Transport of NAS Messages Procedures - UPLINK NAS TRANSPORT + modulepar boolean PICS_A3_5_4 := false; //gNB - Transport of NAS Messages Procedures - NAS NON DELIVERY INDICATION + modulepar boolean PICS_A3_6_1 := false; //gNB - Interface Management Procedures - NG SETUP REQUEST + modulepar boolean PICS_A3_6_2 := false; //gNB - Interface Management Procedures - RAN CONFIGURATION UPDATE + modulepar boolean PICS_A3_6_3 := false; //gNB - Interface Management Procedures - AMF CONFIGURATION UPDATE + modulepar boolean PICS_A3_6_4 := false; //gNB - Interface Management Procedures - NG RESET + modulepar boolean PICS_A3_6_5 := false; //gNB - Interface Management Procedures - ERROR INDICATION + modulepar boolean PICS_A3_7_1 := false; //gNB - Configuration Transfer Procedures - UPLINK RAN CONFIGURATION TRANSFER + modulepar boolean PICS_A3_8_1 := false; //gNB - Warning Message Transmission procedure - WRITE-REPLACE WARNING REQUEST + modulepar boolean PICS_A3_8_2 := false; //gNB - Warning Message Transmission procedure - PWS CANCEL REQUEST + modulepar boolean PICS_A3_8_3 := false; //gNB - Warning Message Transmission procedure - PWS RESTART INDICATION + modulepar boolean PICS_A3_8_4 := false; //gNB - Warning Message Transmission procedure - PWS FAILURE INDICATION + modulepar boolean PICS_A3_9_1 := false; //gNB - NRPPa Transport procedure - DOWNLINK UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A3_9_2 := false; //gNB - NRPPa Transport procedure - UPLINK UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A3_9_3 := false; //gNB - NRPPa Transport procedure - DOWNLINK NON UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A3_9_4 := false; //gNB - NRPPa Transport procedure - UPLINK NON UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A3_10_1 := false; //gNB - Trace procedure - TRACE START messages + modulepar boolean PICS_A3_10_2 := false; //gNB - Trace procedure - TRACE FAILURE INDICATION messages + modulepar boolean PICS_A3_10_3 := false; //gNB - Trace procedure - DEACTIVATE TRACE messages + modulepar boolean PICS_A3_10_4 := false; //gNB - Trace procedure - CELL TRAFFIC TRACE messages + modulepar boolean PICS_A3_11_1 := false; //gNB - Location Reporting Procedures - LOCATION REPORTING CONTROL + modulepar boolean PICS_A3_11_2 := false; //gNB - Location Reporting Procedures - LOCATION REPORTING FAILURE INDICATION + modulepar boolean PICS_A3_11_3 := false; //gNB - Location Reporting Procedures - LOCATION REPORT + modulepar boolean PICS_A3_12_1 := false; //gNB - TNLA procedure - UE TNLA BINDING RELEASE REQUEST messages + modulepar boolean PICS_A3_13_1 := false; //gNB - UE Radio Capability Management procedure - UE RADIO CAPABILITY INFO INDICATION messages + modulepar boolean PICS_A3_13_2 := false; //gNB - UE Radio Capability Management procedure - UE RADIO CAPABILITY CHECK REQUEST messages + modulepar boolean PICS_A3_13_3 := false; //gNB - UE Radio Capability Management procedure - UE RADIO CAPABILITY ID MAPPING REQUEST messages + modulepar boolean PICS_A3_14_1 := false; //gNB - Data Usage Reporting Procedures - SECONDARY RAT DATA USAGE REPORT + modulepar boolean PICS_A3_15_1 := false; //gNB - RIM information Transfer procedure - UPLINK RIM INFORMATION TRANSFER + modulepar boolean PICS_A3_15_2 := false; //gNB - RIM information Transfer procedure - DOWNLINK RIM INFORMATION TRANSFER + } // End of group PICS_A3 + + group PICS_A4 { + + modulepar boolean PICS_A4_1_1 := false; //AMF - PDU session management procedure - PDU SESSION RESOURCE SETUP REQUEST + modulepar boolean PICS_A4_1_2 := false; //AMF - PDU session management procedure - PDU SESSION RESOURCE RELEASE COMMAND + modulepar boolean PICS_A4_1_3 := false; //AMF - PDU session management procedure - PDU SESSION RESOURCE MODIFY REQUEST + modulepar boolean PICS_A4_1_4 := false; //AMF - PDU session management procedure - PDU SESSION RESOURCE MODIFY NOTIFY + modulepar boolean PICS_A4_1_5 := false; //AMF - PDU session management procedure - PDU SESSION RESOURCE MODIFY INDICATION + modulepar boolean PICS_A4_2_1 := false; //AMF - UE Context Management Procedures - INITIAL CONTEXT SETUP REQUEST + modulepar boolean PICS_A4_2_3 := false; //AMF - UE Context Management Procedures - UE CONTEXT RELEASE COMMAND + modulepar boolean PICS_A4_2_4 := false; //AMF - UE Context Management Procedures - UE CONTEXT MODIFICATION REQUEST + modulepar boolean PICS_A4_2_6 := false; //AMF - UE Context Management Procedures - CONNECTION ESTABLISHMENT INDICATION + modulepar boolean PICS_A4_2_7 := false; //AMF - UE Context Management Procedures - AMF CP RELOCATION INDICATION + modulepar boolean PICS_A4_2_9 := false; //AMF - UE Context Management Procedures - RETRIEVE UE INFORMATION + modulepar boolean PICS_A4_2_10 := false; //AMF - UE Context Management Procedures - UE INFORMATION TRANSFER + modulepar boolean PICS_A4_2_11 := false; //AMF - UE Context Management Procedures - UE CONTEXT SUSPEND REQUEST + modulepar boolean PICS_A4_2_12 := false; //AMF - UE Context Management Procedures - UE CONTEXT RESUME REQUEST + modulepar boolean PICS_A4_3_1 := false; //AMF - UE Mobility Management Procedures - HANDOVER REQUIRED + modulepar boolean PICS_A4_3_2 := false; //AMF - UE Mobility Management Procedures - HANDOVER REQUEST + modulepar boolean PICS_A4_3_4 := false; //AMF - UE Mobility Management Procedures - PATH SWITCH REQUESTS + modulepar boolean PICS_A4_3_5 := false; //AMF - UE Mobility Management Procedures - HANDOVER CANCEL + modulepar boolean PICS_A4_3_6 := false; //AMF - UE Mobility Management Procedures - UPLINK RAN STATUS TRANSFER + modulepar boolean PICS_A4_3_9 := false; //AMF - UE Mobility Management Procedures - UPLINK RAN EARLY STATUS TRANSFER + modulepar boolean PICS_A4_4_1 := false; //AMF - Paging procedures - Paging + modulepar boolean PICS_A4_5_2 := false; //AMF - Transport of NAS Messages Procedures - DOWNLINK NAS TRANSPORT + modulepar boolean PICS_A4_5_5 := false; //AMF - Transport of NAS Messages Procedures - REROUTE NAS REQUEST + modulepar boolean PICS_A4_6_1 := false; //AMF - Interface Management Procedures - NG SETUP REQUEST + modulepar boolean PICS_A4_6_2 := false; //AMF - Interface Management Procedures - RAN CONFIGURATION UPDATE + modulepar boolean PICS_A4_6_3 := false; //AMF - Interface Management Procedures - AMF CONFIGURATION UPDATE + modulepar boolean PICS_A4_6_4 := false; //AMF - Interface Management Procedures - NG RESET + modulepar boolean PICS_A4_6_5 := false; //AMF - Interface Management Procedures - ERROR INDICATION + modulepar boolean PICS_A4_6_6 := false; //AMF - Interface Management Procedures - AMF STATUS INDICATION + modulepar boolean PICS_A4_6_7 := false; //AMF - Interface Management Procedures - OVERLOAD START + modulepar boolean PICS_A4_6_8 := false; //AMF - Interface Management Procedures - OVERLOAD STOP + modulepar boolean PICS_A4_7_2 := false; //AMF - Configuration Transfer Procedures - DOWNLINK RAN CONFIGURATION TRANSFER + modulepar boolean PICS_A4_8_1 := false; //AMF - Warning Message Transmission procedure - WRITE-REPLACE WARNING REQUEST + modulepar boolean PICS_A4_8_2 := false; //AMF - Warning Message Transmission procedure - PWS CANCEL REQUEST + modulepar boolean PICS_A4_8_3 := false; //AMF - Warning Message Transmission procedure - PWS RESTART INDICATION + modulepar boolean PICS_A4_8_4 := false; //AMF - Warning Message Transmission procedure - PWS FAILURE INDICATION + modulepar boolean PICS_A4_9_1 := false; //AMF - NRPPa Transport procedure - DOWNLINK UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A4_9_2 := false; //AMF - NRPPa Transport procedure - UPLINK UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A4_9_3 := false; //AMF - NRPPa Transport procedure - DOWNLINK NON UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A4_9_4 := false; //AMF - NRPPa Transport procedure - UPLINK NON UE ASSOCIATED NRPPA TRANSPORT messages + modulepar boolean PICS_A4_10_1 := false; //AMF - Trace procedure - TRACE START messages + modulepar boolean PICS_A4_10_2 := false; //AMF - Trace procedure - TRACE FAILURE INDICATION messages + modulepar boolean PICS_A4_10_3 := false; //AMF - Trace procedure - DEACTIVATE TRACE messages + modulepar boolean PICS_A4_10_4 := false; //AMF - Trace procedure - CELL TRAFFIC TRACE messages + modulepar boolean PICS_A4_11_1 := false; //AMF - Location Reporting Procedures - LOCATION REPORTING CONTROL + modulepar boolean PICS_A4_11_2 := false; //AMF - Location Reporting Procedures - LOCATION REPORTING FAILURE INDICATION + modulepar boolean PICS_A4_11_3 := false; //AMF - Location Reporting Procedures - LOCATION REPORT + modulepar boolean PICS_A4_12_1 := false; //AMF - TNLA procedure - UE TNLA BINDING RELEASE REQUEST messages + modulepar boolean PICS_A4_13_1 := false; //AMF - UE Radio Capability Management procedure - UE RADIO CAPABILITY INFO INDICATION messages + modulepar boolean PICS_A4_13_2 := false; //AMF - UE Radio Capability Management procedure - UE RADIO CAPABILITY CHECK REQUEST messages + modulepar boolean PICS_A4_13_3 := false; //AMF - UE Radio Capability Management procedure - UE RADIO CAPABILITY ID MAPPING REQUEST messages + modulepar boolean PICS_A4_14_1 := false; //AMF - Data Usage Reporting Procedures - SECONDARY RAT DATA USAGE REPORT + modulepar boolean PICS_A4_15_1 := false; //AMF - RIM information Transfer procedure - UPLINK RIM INFORMATION TRANSFER + modulepar boolean PICS_A4_15_2 := false; //AMF - RIM information Transfer procedure - DOWNLINK RIM INFORMATION TRANSFER + } // End of group PICS_A4 + +} // End of module NGAP_Pics diff --git a/ttcn/AtsNGAP/NGAP_Pixits.ttcn b/ttcn/AtsNGAP/NGAP_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..621abdcbe8c5e1e9bfe620117280da0b3308cc65 --- /dev/null +++ b/ttcn/AtsNGAP/NGAP_Pixits.ttcn @@ -0,0 +1,86 @@ +/** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides PIXITs for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NGAP_Pixits { + + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; + + // LibNGAP + import from NGAP_CommonDataTypes language "ASN.1:1997" all; + import from NGAP_IEs language "ASN.1:2002" all; + + group NGAP_Port_and_addresses { + + group NGAP_TS_Port_and_addresses { + + /** @desc + * IP address of the test system + */ + modulepar charstring PX_NGAP_ETS_IPADDR := "1.1.1.10"; + + /** @desc + * Port number of the test system + */ + modulepar integer PX_NGAP_ETS_PORT := 3868; + + /** @desc + * IP address of the test system + */ + modulepar charstring PX_NGAP_ETS_IPADDR2 := "1.1.1.13"; + + /** @desc + * Port number of the test system + */ + modulepar integer PX_NGAP_ETS_PORT2 := 3868; + + + } // End of group NGAP_TS_Port_and_addresses + + group NGAP_SUT_Port_and_addresses { + + /** @desc + * IP address of the system under test + */ + modulepar charstring PX_NGAP_SUT_IPADDR := "1.1.2.10"; + + /** @desc + * Port number of the system under test + */ + modulepar integer PX_NGAP_SUT_PORT := 3868; + + } // End of group NGAP_SUT_Port_and_addresses{ + + } // End of group NGAP_Port_and_addresses + + group NGAP_CommonData { + + /** + * @desc integer for variant selection, + * @see ETSI + */ + modulepar integer PX_VA := 1; + + /** + * @desc Variant for Criticality values + */ + modulepar Criticality PX_VA_CRITICALITY := reject; + + /** + * @desc integer for timer TNGRELOCOverall, + * @see ETSI TS 138 413, chapter 9.6 + */ + modulepar float PX_TNGRELOCOverall := 10.0; + + } // End of group NGAP_CommonData + +} // End of module NGAP_Pixits diff --git a/ttcn/AtsNGAP/NGAP_Steps.ttcn b/ttcn/AtsNGAP/NGAP_Steps.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a850a23e5ccff945e068332a7850512b49cbe688 --- /dev/null +++ b/ttcn/AtsNGAP/NGAP_Steps.ttcn @@ -0,0 +1,401 @@ +/** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides ATS specific steps used by the test cases for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NGAP_Steps { + + // LibNGAP + import from LibNGAP_Steps all; + import from LibNGAP_Interface all; + import from LibNGAP_Pixits all; + import from LibNGAP_Templates all; + + // NGAP_Ats + import from NGAP_Pixits all; + + + group GlobalSteps { + + /** + * @desc This is a test step that init global variables + * This procedure will be use when the Test System acts as AMF (SUT is gNB) + */ + function f_NGAP_amf_init() + runs on NGAPComponent { + + // Defaults + vc_default_ngap := activate (a_defaultNGAP()); + + // Base LibNGAP init function if there will be any base initialisation + f_NGAP_Init_Component(); + + vc_ETS_address := PX_NGAP_ETS_IPADDR; + vc_ETS_port := PX_NGAP_ETS_PORT; + vc_SUT_address := PX_NGAP_SUT_IPADDR; + vc_SUT_port := PX_NGAP_SUT_PORT; + + } // End of function f_NGAP_amf_init + + /** + * @desc This is a test step that init global variables + * This procedure will be use when the Test System acts as gNB (SUT is AMF) + */ + function f_NGAP_gnb_init() + runs on NGAPComponent { + + // Defaults + vc_default_ngap := activate (a_defaultNGAP()); + + // Base LibNGAP init function if there will be any base initialisation + f_NGAP_Init_Component(); + + vc_ETS_address := PX_NGAP_ETS_IPADDR; + vc_ETS_port := PX_NGAP_ETS_PORT; + vc_SUT_address := PX_NGAP_SUT_IPADDR; + vc_SUT_port := PX_NGAP_SUT_PORT; + + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_NGSetupRequest( + m_globalRANNodeID_globalGNB_ID( + m_ie_globalGnbId( + PX_PLMN_IDENTITY, + PX_GNB_ID,//'0000000000000000000000'B,//in template (value) bitstring p_gnbId, + -//in template (omit) GlobalGNB_ID.iE_Extensions p_iE_Extensions := omit + )), + { + m_supportedTAItem( + PX_TACode, + { + m_ie_broadcastPLMNItem( + PX_PLMN_IDENTITY,//m_ie_pLMNIdentity('00f110'O), + { + m_sliceSupportItem( + m_s_NSSAI( + PX_SST, + PX_SD,// in template (omit) SD p_sD := omit, + -// in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit + ), + -//in template (omit) SliceSupportItem.iE_Extensions p_iE_Extensions := omit + ) + } + ) + },//in template (value) BroadcastPLMNList p_broadcastPLMNList, + -//in template (omit) SupportedTAItem.iE_Extensions p_iE_Extensions := omit + ) + }, + PX_PAGING_DRX + ) + ) + ); + + f_recv_NGAP_PDU( + mw_ngap_succMsg( + mw_n2_NGSetupResponse(-,-,-,-) + ) + ); + // f_recv_NGAP_PDU( + // mw_ngap_succMsg( + // mw_n2_NGSetupResponse( + // ?, + // { + // mw_servedGUAMIItem( + // mw_gUAMI( + // ?,//template (present) PLMNIdentity p_pLMNIdentity := ?, + // ?,//template (present) AMFRegionID p_aMFRegionID := ?, + // ?,//template (present) AMFSetID p_aMFSetID := ?, + // ?,//template (present) AMFPointer p_aMFPointer := ?, + // *//template GUAMI.iE_Extensions p_iE_Extensions := * + // ),//template (present) GUAMI p_gUAMI := ?, + // *,//template AMFName p_backupAMFName := *, + // *//template ServedGUAMIItem.iE_Extensions p_iE_Extensions := * + // ) + // },//template (present) ServedGUAMIList p_servedGUAMIList := ?, + // ?,//template (present) RelativeAMFCapacity p_relativeAmfCap:= ?, + // { + // mw_pLMNSupportItem( + // ?,//template (present) PLMNIdentity p_pLMNIdentity := ?, + // { + // mw_sliceSupportItem( + // mw_s_NSSAI( + // ?,//template (present) SST p_sST := ?, + // *,//template SD p_sD := *, + // *//template S_NSSAI.iE_Extensions p_iE_Extensions := * + // ),//template (present) S_NSSAI p_s_NSSAI := ?, + // ?//template SliceSupportItem.iE_Extensions p_iE_Extensions := * + // ) + // },//template (present) SliceSupportList p_sliceSupportList := ?, + // *//template PLMNSupportItem.iE_Extensions p_iE_Extensions := * + // ) + // }//template (present) PLMNSupportList p_plmnSuppList := ? + // ) + // ) + // ); + } // End of function f_NGAP_gnb_init + + /** + * @desc This is a test step that init global variables + */ + function f_NGAP_gnb_init2() + runs on NGAPComponent { + + // Defaults + vc_default_ngap := activate (a_defaultNGAP()); + + // Base LibNGAP init function if there will be any base initialisation + f_NGAP_Init_Component(); + + vc_ETS_address := PX_NGAP_ETS_IPADDR2; + vc_ETS_port := PX_NGAP_ETS_PORT2; + vc_SUT_address := PX_NGAP_SUT_IPADDR; + vc_SUT_port := PX_NGAP_SUT_PORT; + + } // End of function f_NGAP_gnb_init2 + + } // End of group GlobalSteps + + group Preambles{ + + /** + * @desc + */ + function f_preamble_NGAP_AMF() runs on NGAPComponent { + var default v_def_ngap_; + + f_NGAP_amf_init(); + //f_preambleNGAPClient(); + } // End of function f_preamble_NGAP_AMF + + /** + * @desc + */ + function f_preamble_NGAP_gNB() runs on NGAPComponent { + var default v_def_ngap_; + + f_NGAP_gnb_init(); + //f_preambleNGAPServer(); + } // End of function f_preamble_NGAP_gNB + + /** + * @desc + */ + function f_preamble_NGAP_gNB2() runs on NGAPComponent { + var default v_def_ngap_; + + f_NGAP_gnb_init2(); + //f_preambleNGAPServer(); + } // End of function f_preamble_NGAP_gNB2 + + } // End of group Preambles + + group Postambles { + + /** + * @desc + */ + function f_postamble_NGAP_AMF() runs on NGAPComponent { + f_postambleNGAP_AMF(); + + // Deactivate defaults + deactivate; + } // End of function f_postamble_NGAP_AMF + + /** + * @desc + */ + function f_postamble_NGAP_gNB() runs on NGAPComponent { + f_postambleNGAP_gNB(); + + //Deactivate defaults + deactivate; + } // End of function f_postamble_NGAP_gNB + + /** + * @desc + */ + function f_postamble_NGAP_gNB2() runs on NGAPComponent { + f_postambleNGAP_gNB(); + + // Deactivate defaults + deactivate; + } // End of function f_postamble_NGAP_gNB2 + + } // End of group Postambles + + group CheckFunctions { + + } // End of group CheckFunctions + + group DefaultTestStep{ + + }//end group DefaultTestStep + + group BehaviorFunctions{ + + /** + * @desc + */ + function f_NGAP_amf_UE_Register() runs on NGAPComponent { + //FIXME: Implementation of UE registration + } // End of function f_NGAP_amf_UE_Register + + /** + * @desc + */ + function f_NGAP_amf_UE_PDU_ResourceSetup() runs on NGAPComponent { + //FIXME: Implementation of PDU session resource setup + } // End of function f_NGAP_amf_UE_PDU_ResourceSetup + + /** + * @desc + */ + function f_NGAP_amf_UE_NoLongerAvailable() runs on NGAPComponent { + //FIXME: Implementation of PDU not longer available + } // End of function f_NGAP_amf_UE_NoLongerAvailable + + /** + * @desc The IUT entity indicate the initiation "of a Handover Required procedure" + */ + function f_NGAP_amf_UE_MMP_Initiate_Handover() runs on NGAPComponent { + //FIXME: Implementation of Handover init + } // End of function f_NGAP_amf_UE_MMP_Initiate_Handover + + /** + * @desc + */ + function f_NGAP_amf_UE_MMP_Initiate_Handover_Completed() runs on NGAPComponent { + //FIXME: Implementation of Handover init completed + } // End of function f_NGAP_amf_UE_MMP_Initiate_Handover_Completed + + /** + * @desc + */ + function f_NGAP_amf_UE_MMP_Handover_Completed() runs on NGAPComponent { + //FIXME: Implementation of Handover completed + } // End of function f_NGAP_amf_UE_MMP_Handover_Completed + + /** + * @desc + */ + function f_NGAP_amf_UE_MMP_Cancel_Initiated_Handover() runs on NGAPComponent { + //FIXME: Implementation of Handover init cancelled + } // End of function f_NGAP_amf_UE_MMP_Cancel_Initiated_Handover + + /** + * @desc + */ + function f_NGAP_amf_UE_MMP_Initiate_UE_Uplink_RAN_Status_Transfer() runs on NGAPComponent { + //FIXME: Implementation of initiate uplink RAN xfer + } // End of function f_NGAP_amf_UE_MMP_Initiate_UE_Uplink_RAN_Status_Transfer + + /** + * @desc + */ + function f_NGAP_amf_UE_MMP_Initiate_UE_Uplink_RAN_Early_Status_Transfer() runs on NGAPComponent { + //FIXME: Implementation of initiate an early uplink RAN xfer + } // End of function f_NGAP_amf_UE_MMP_Initiate_UE_Uplink_RAN_Early_Status_Transfer + + /** + * @desc + */ + function f_NGAP_amf_UE_NAS_Initiate() runs on NGAPComponent { + //FIXME: Implementation of a NAS procedure + } // End of function f_NGAP_amf_UE_NAS_Initiate + + /** + * @desc + */ + function f_NGAP_amf_UE_RRC_UL_Message() runs on NGAPComponent { + //FIXME: Implementation of an RRC UL message delivery + } // End of function f_NGAP_amf_UE_RRC_UL_Message + + /** + * @desc + */ + function f_NGAP_amf_UE_RRC_UL_Message_Failure() runs on NGAPComponent { + //FIXME: Implementation of an RRC UL message delivery failure + } // End of function f_NGAP_amf_UE_RRC_UL_Message_Failure + + /** + * @desc + */ + function f_NGAP_amf_isTransitioningTo_RRC_INACTIVE() runs on NGAPComponent { + //FIXME: Implementation of an UE transitioning into the RRC_INACTIVE state + } // End of function f_NGAP_amf_isTransitioningTo_RRC_INACTIVE + + /******************************************************************/ + + /** + * @desc + */ + function f_NGAP_gnb_UE_Register() runs on NGAPComponent { + //FIXME: Implementation of UE registration + } // End of function f_NGAP_gnb_UE_Register + + /** + * @desc + */ + function f_NGAP_gnb_UE_Not_Available() runs on NGAPComponent { + //FIXME: Implementation of UE not available + } // End of function f_NGAP_gnb_UE_Not_Available + + /** + * @desc + */ + function f_NGAP_gnb_UE_Handover_Required() runs on NGAPComponent { + //FIXME: Implementation of UE handover required + } // End of function f_NGAP_gnb_UE_Handover_Required + + /** + * @desc + */ + function f_NGAP_gnb_UE_EstablishedInitialContext() runs on NGAPComponent { + //FIXME: Implementation of UE handover required + } // End of function f_NGAP_gnb_UE_EstablishedInitialContext + + /** + * @desc + */ + function f_NGAP_gnb_UE_Has_EstablishedContextInproperly() runs on NGAPComponent { + //FIXME: Implementation of UE handover required + } // End of function f_NGAP_gnb_UE_Has_EstablishedContextInproperly + + /** + * @desc + */ + function f_NGAP_gnb_UE_HasPendingDataTransmission() runs on NGAPComponent { + //FIXME: Implementation of UE has pending data transmission leading to failed context suspension + } // End of function f_NGAP_gnb_UE_HasPendingDataTransmission + + /** + * @desc + */ + function f_NGAP_gnb_UE_PDU_ResourceSetup() runs on NGAPComponent { + //FIXME: Implementation of PDU session resource setup + } // End of function f_NGAP_gnb_UE_PDU_ResourceSetup + + /** + * @desc + */ + function f_NGAP_gnb_UE_Has_Suspended_Context() runs on NGAPComponent { + //FIXME: Implementation of UE has suspended context + } // End of function f_NGAP_amf_UE_hasSuspendedContext + + /** + * @desc + */ + function f_NGAP_gnb_UE_alreadyPreparedHandover() runs on NGAPComponent { + //FIXME: Implementation of UE halready prepared Handover + } // End of function f_NGAP_amf_UE_hasSuspendedContext + + + }//end group BehaviorFunctions + +} // End of module NGAP_Steps diff --git a/ttcn/AtsNGAP/NGAP_TestConfiguration.ttcn b/ttcn/AtsNGAP/NGAP_TestConfiguration.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d30f0d5b77f6da91fcf2de671e94879ea4192bb7 --- /dev/null +++ b/ttcn/AtsNGAP/NGAP_TestConfiguration.ttcn @@ -0,0 +1,137 @@ +/** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides test configuration description for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NGAP_TestConfiguration { + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_VerdictControl all; + + // NGAP_Ats + import from NGAP_TestSystem all; + // LibNGAP + import from LibNGAP_Interface all; + + group cfUp { + + /** + * @desc Creates test configuration of cf_NGAP_AMF - gNB is SUT + * @param p_NGAPComponent_mme + */ + function f_cf_NGAP_aMF_Up( + out aMFNGAPComponent p_NGAPComponent_amf + ) runs on aMFNGAPComponent system TestAdapter { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_NGAPComponent_amf := aMFNGAPComponent.create ; + + // Connect mtc sync port + connect(self:syncPort, self:syncPort); + // Connect client sync port + connect(p_NGAPComponent_amf:syncPort, self:syncPort) ; + //Map + map(p_NGAPComponent_amf:N2_gNBaMF_P, system:NGAP_AMF); + + activate(a_mtc_shutdown()); + + f_setVerdict(v_ret); + } // End of function f_cf_NGAP_AMF_Up + + /** + * @desc Creates test configuration of cf_NGAP_gNB - AMF is SUT + * @param p_NGAPComponent_gnb + */ + function f_cf_NGAP_gNB_Up( + out gNBNGAPComponent p_NGAPComponent_gnb + ) runs on gNBNGAPComponent system TestAdapter { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_NGAPComponent_gnb := gNBNGAPComponent.create ; + + // Connect mtc sync port + connect(self:syncPort, self:syncPort); + // Connect client sync port + connect(p_NGAPComponent_gnb:syncPort, self:syncPort) ; + //Map + map(p_NGAPComponent_gnb:N2_gNBaMF_P, system:NGAP_gNB_1); + + activate(a_mtc_shutdown()); + + f_setVerdict(v_ret); + } // End of function f_cf_NGAP_gNB_Up + + /** + * @desc Creates test configuration of cf_NGAP_2gNB - AMF is SUT + * @param p_NGAPComponent_enb1, p_NGAPComponent_gnb2 + */ + function f_cf_NGAP_2gNB_Up( + out gNBNGAPComponent p_NGAPComponent_gnb1, + out gNBNGAPComponent p_NGAPComponent_gnb2 + ) runs on gNBNGAPComponent system TestAdapter { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_NGAPComponent_gnb1 := gNBNGAPComponent.create; + p_NGAPComponent_gnb2 := gNBNGAPComponent.create; + + // Connect mtc sync port + connect(self:syncPort, self:syncPort); + // Connect client sync port + connect(p_NGAPComponent_gnb1:syncPort, self:syncPort); + connect(p_NGAPComponent_gnb2:syncPort, self:syncPort) ; + + //Map + map(p_NGAPComponent_gnb1:N2_gNBaMF_P, system:NGAP_gNB_1); + map(p_NGAPComponent_gnb2:N2_gNBaMF_P, system:NGAP_gNB_2); + + activate(a_mtc_shutdown()); + + f_setVerdict(v_ret); + } // End of function f_cf_NGAP_2gNB_Up + + } // End of group cfUp + + group cfDown { + + /** + * @desc Deletes configuration + * @param + */ + function f_cf_Down() runs on NGAPComponent system TestAdapter { + // Deactivate all + deactivate; + // Unmap all + //unmap; + // Disconnect all + //disconnect; + + } // End of function f_cf_Down + + } // End of group cfDown + + group shutDownAltsteps { + + altstep a_mtc_shutdown() + runs on SelfSyncComp { + [] syncSendPort.receive(m_syncServerStop) { + tc_sync.stop ; + log("**** a_mtc_shutdown: MTC component received STOP signal **** "); + } + } // End of altstep a_mtc_shutdown + + } // End of group shutDownAltsteps + +} // End of module NGAP_TestConfiguration diff --git a/ttcn/AtsNGAP/NGAP_TestSystem.ttcn b/ttcn/AtsNGAP/NGAP_TestSystem.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b435c1741354237b8a338c5669aca5db83930e55 --- /dev/null +++ b/ttcn/AtsNGAP/NGAP_TestSystem.ttcn @@ -0,0 +1,55 @@ + /** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides the types and ports used by the test component for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NGAP_TestSystem { + + // LibCommon + import from LibCommon_Sync all; + + // LibNGAP + import from LibNGAP_Interface all; + + group SystemConfiguration { + + group TestComponents { + + group TestSystemInterfaces { + + /** + * @desc The test system interface + */ + type component TestAdapter { + + port + NGAPPort NGAP_AMF, + NGAP_gNB_1, + NGAP_gNB_2 + } // End of type TestAdapter + + } // End of group TestSystemInterfaces + + type component gNBNGAPComponent extends ServerSyncComp, NGAPComponent { + //component variables + } // End of type component gNBNGAPComponent + + type component aMFNGAPComponent extends ServerSyncComp, NGAPComponent { + //component variables + } // End of type component aMFNGAPComponent + + //type component NGAP extends ServerSyncComp, NGAPComponent { + // //component variables + //} // End of component NGAP + + } // End of group TestComponents + + } // End of group SystemConfiguration + +} // End of module NGAP_TestSystem diff --git a/ttcn/AtsNGAP/module.mk_ b/ttcn/AtsNGAP/module.mk_ new file mode 100644 index 0000000000000000000000000000000000000000..fbb1ae3f179f98c441a513d3100ec9e11579c9a5 --- /dev/null +++ b/ttcn/AtsNGAP/module.mk_ @@ -0,0 +1,26 @@ +#suite := AtsNGAP +#pdu := NGAP_PDU + +sources:= \ + NGAP_Pics.ttcn \ + NGAP_Pixits.ttcn \ + NGAP_Steps.ttcn \ + NGAP_TestSystem.ttcn \ + NGAP_TestConfiguration.ttcn + +#modules := \ +# ../LibNGAP \ +# ../LibCommon \ +# ../../titan-test-system-framework/ccsrc/Protocols/Pcap \ +# ../../titan-test-system-framework/ccsrc/Protocols/ETH \ +# ../../ccsrc/Ports/LibNGAP \ +# ../../ccsrc/EncDec \ +# ../../titan-test-system-framework/ccsrc/Framework \ +# ../../titan-test-system-framework/ccsrc/loggers \ +# ../../ccsrc/Protocols/NGAP_layer \ +# ../../ccsrc/Protocols/NGAP \ +# ../../ccsrc/Asn1c \ +# ../../ccsrc/framework \ +# ../modules/titan.TestPorts.Common_Components.Abstract_Socket + + diff --git a/ttcn/Ats_NG_NAS/NG_NAS_Pics.ttcn b/ttcn/Ats_NG_NAS/NG_NAS_Pics.ttcn new file mode 100755 index 0000000000000000000000000000000000000000..6e5069ae20be7da48ba38ea2ec3ac3b73e0de377 --- /dev/null +++ b/ttcn/Ats_NG_NAS/NG_NAS_Pics.ttcn @@ -0,0 +1,23 @@ +/** +* @author ETSI / TTF041 +* @version $URL$ +* $Id$ +* @desc This module provides PICS for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NG_NAS_Pics { + + group PICS_ { + /** + * @desc Does IUT support NG_NAS? + * @see ETSI TS 103 921-1 Table ??? + */ + modulepar boolean PICS_NGNAS := false; + + } // End of group PICS_ + +} // End of module NG_NAS_Pics \ No newline at end of file diff --git a/ttcn/Ats_NG_NAS/NG_NAS_TCFunctions.ttcn b/ttcn/Ats_NG_NAS/NG_NAS_TCFunctions.ttcn new file mode 100755 index 0000000000000000000000000000000000000000..7fa779a50a08f42bda239a99211c83dca2ff12a5 --- /dev/null +++ b/ttcn/Ats_NG_NAS/NG_NAS_TCFunctions.ttcn @@ -0,0 +1,1932 @@ +/** + * @author ETSI / TTF041 + * @version $URL$ + * $Id$ + * @desc This module provides test functions for NG_NAS tests. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS + */ + +module NG_NAS_TCFunctions { + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_VerdictControl all; + import from LibCommon_Time all; + + // Lib_NG_NAS + import from Lib_NG_NAS_Interface all; + import from Lib_NG_NAS_Templates all; + import from LIB_NG_NAS_Functions all; + import from NAS_CommonTemplates all; + + // NG_NAS + import from NG_NAS_TypeDefs all; + import from NG_NAS_TestSystem all; + import from NG_NAS_Templates all; + import from NAS_CommonTypeDefs all; + import from NG_NAS_Templates all; + + // Lib3GPP + import from NG_NAS_MsgContainers all; + + // LibNGAP + import from NGAP_IEs language "ASN.1:2002" all; + import from NGAP_Constants language "ASN.1:2002" all; + import from NGAP_PDU_Descriptions language "ASN.1:2002" all; + import from LibNGAP_Pixits all; + import from LibNGAP_Templates all; + import from LibNGAP_Interface all; + import from LibNGAP_Steps all; + + // LibFramwork + import from LibHelpers_Functions all; + + // NGAP_Ats + import from NGAP_Pixits all; + import from NGAP_Steps all; + import from Lib_NG_NAS_Pixits all; + + // interface at AMF + group TP_AMF_NGAP { + + group /*5_4_*/fiveGMM_Common_Procedures { + + group /*5_4_1_*/fiveGMM_Common_ProceduresPrimary_authentication_and_key_agreement_procedure { + + /** + * @desc Testcase function for TC_5GNAS_AMF_AUT_REQ_01 + */ + function f_TC_5GNAS_AMF_AUT_REQ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_send_NasRegistrationRequest(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_AUTHENTICATION_REQUEST( + '111'B, + -, + ?, // Authentication_parameter_RAND + ? // Authentication_parameter_AUTN + ), + v_message + ) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST ***"); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_AUT_REQ_01 + + /** + * @desc Testcase function for TC_5GNAS_AMF_AUT_REQ_02 + */ + function f_TC_5GNAS_AMF_AUT_REQ_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_send_NasRegistrationRequest(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // SecurityModeCommand + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_SECURITY_MODE_COMMAND, v_message) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: NG_SECURITY_MODE_COMMAND mismatch. ***"); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_AUT_REQ_02 + + /** + * @desc Testcase function for TC_5GNAS_AMF_AUT_REQ_03 + */ + function f_TC_5GNAS_AMF_AUT_REQ_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + var NGAP_PDU v_PDU; + var integer v_start_time_ms; + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_send_NasRegistrationRequest(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + tc_noac.start; + v_start_time_ms := f_getCurrentTimeUtc(); // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) + alt { + [] N2_gNBaMF_P.receive { + // Skip message and check that timer T3560 has not expired (in milliseconds) + if ((f_getCurrentTimeUtc() - v_start_time_ms) < PX_TIMER_T3560) { + repeat; + } else { + tc_noac.stop; + } + } + [] tc_noac.timeout { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: T3560 shall be expired. ***"); + } + } // End of 'alt'statement + N2_gNBaMF_P.clear; // Remove enqueued messages + tc_noac.start; + alt { + [] N2_gNBaMF_P.receive( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))) -> value v_PDU { + tc_noac.stop; + + f_NGAPPDU_Get(v_PDU) + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST, v_message) == true) { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST after T3560 timer expiry ***"); + } + } + [] tc_noac.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + } + } // End of 'alt'statement + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_AUT_REQ_03 + + /** + * @desc Testcase function for TC_5GNAS_AMF_AUT_REQ_04 + */ + function f_TC_5GNAS_AMF_AUT_REQ_04() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_send_NasRegistrationRequest(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // Send error message + vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( + m_GMM_GSM_Cause( + -, + int2bit(20, 8) // MAC failure + )); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + // Await response + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // IdentityRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_AUTHENTICATION_REQUEST( + '111'B // Identity type + ), + v_message + ) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_AUT_REQ_04 + + /** + * @desc Testcase function for TC_5GNAS_AMF_AUT_REQ_05 + */ + function f_TC_5GNAS_AMF_AUT_REQ_05() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + var NG_NAS_DL_Message_Type v_NG_NAS_DL_Message_Type; + var NAS_KsiValue ngKSI; + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_send_NasRegistrationRequest(); + f_decode_5G_NAS_DL_Message(vc_recvNAS_PDU, v_NG_NAS_DL_Message_Type); + ngKSI := v_NG_NAS_DL_Message_Type.authentication_Request.ngNasKeySetId.nasKeySetId; + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // Send error message + vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( + m_GMM_GSM_Cause( + -, + int2bit(71, 8) // ngKSI already in use + )); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + // Await response + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_AUTHENTICATION_REQUEST( + complement(ngKSI) + ), + v_message) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_AUT_REQ_05 + + /** + * @desc Testcase function for TC_5GNAS_AMF_AUT_ABN_01 + */ + function f_TC_5GNAS_AMF_AUT_ABN_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_send_NasRegistrationRequest(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // Send error message + vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( + m_GMM_GSM_Cause( + -, + int2bit(26, 8) // Non-5G authentication unacceptable + )); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + // Await IdentityRequest + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // IdentityRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_IDENTITY_REQUEST( + // TODO + ), + v_message + ) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_AUT_ABN_01 + + } // End of group /*5_4_1_*/fiveGMM_Common_ProceduresPrimary_authentication_and_key_agreement_procedure + + group /*5_4_2_*/Security_mode_control_procedure { + + /** + * @desc Testcase function for TC_NGNAS_AMF_AUT_SEQ_01 + */ + function f_TC_NGNAS_AMF_AUT_SEQ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // Await SecurityModeCommand + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // Security mode command + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_SECURITY_MODE_COMMAND, + v_message + ) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_SECURITY_MODE_COMMAND ***"); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, e_success); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_NGNAS_AMF_AUT_SEQ_01 + + /** + * @desc Testcase function for TC_5GNAS_AMF_SEC_ACC_01 + */ + function f_TC_5GNAS_AMF_SEC_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // Await next command (InitialContextSetupRequest) with NAS encrypted payload + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_InitialContextSetupRequest_withPDUSessionList( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // Security mode command + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_UL_Message_is_encrypted(vc_recvNAS_PDU) == false) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Message is not encrypted ***"); + } + // FIXME FSCOM Add NAS_PDU message check + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + // Terminate call with rejection + f_terminate_NasRegistrationRequest_with_reject(); + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_SEC_ACC_01 + + /** + * @desc Testcase function for TC_5GNAS_AMF_SEC_REJ_01 + */ + function f_TC_5GNAS_AMF_SEC_REJ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // Send SecurityModeComplete + vt_NgNasUl_Msg := m_NG_SECURITY_MODE_REJECT( + m_GMM_GSM_Cause( + -, + '00100011'B // FIXME Create const NAS_CauseValue_Type tsc_EmmCause_UESecurityCapabilitiesMismatch; + + )); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + // FIXME FSCOM How to check the IUT entity sends a DOWNLINK_NAS_TRANSPORT containing to the GNB entity + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_SEC_REJ_01 + + } // End of group /*5_4_2_*/Security_mode_control_procedure + + group /*5_4_5_*/NAS_transport_procedure { + + /** + * @desc Testcase function for TC_5GNAS_AMF_DLN_ACC_01 + */ + function f_TC_5GNAS_AMF_DLN_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_await_NGInitialContextSetupRequest_send_NGInitialContextSetupRespone(); + f_send_NGUERadioCApabilityInfoIndication(); + f_await_registration_accept(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := m_NG_PDU_SESSION_ESTABLISHMENT_REQUEST( + cs_NG_PDU_SessionId, + tsc_PTI_1 + ); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + // Await PDU SESSION ESTABLISHMENT ACCEPT with NAS encrypted payload + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // PDU SESSION ESTABLISHMENT ACCEPT + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT, + v_message + ) == false) { + setverdict(fail); + return; + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_DLN_ACC_01 + + } // End of group /*5__4_5_*/NAS_transport_procedure + + } // End of group /*5_4_*/fiveGMM_Common_Procedures + + group /*5_5_1_2_*/Registration_Procedure_for_initial_registration { + + /** + * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_01 + */ + function f_TC_5GNAS_AMF_REG_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_send_NGUERadioCApabilityInfoIndication(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O)//in template (value) NG_MobileIdentity p_MobileId, // 24.501 cl. 9.11.3.4 + + /* in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + // Await request for REGISTRATION_ACCEPT + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_REGISTRATION_ACCEPT( + -, + ?, + mw_PLMN_List( + -, -, + { + *, + PX_PLMN_IDENTITY, + * + } + ), + -,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-, + ? + ), + v_message) == false) { + setverdict(fail); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_REG_ACC_01 + + /** + * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_02 + */ + function f_TC_5GNAS_AMF_REG_ACC_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_send_NGUERadioCApabilityInfoIndication(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O)//in template (value) NG_MobileIdentity p_MobileId, // 24.501 cl. 9.11.3.4 + + /* in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + // Await request for REGISTRATION_ACCEPT + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_REGISTRATION_ACCEPT( + cs_RegistrationResult('000'B,//B3_Type p_Result, + '0'B,//B1_Type p_SMS, + '0'B,//B1_Type p_EmergencyRegistered, + '0'B,//B1_Type p_NssaaPerformed, + '0'B),//B1_Type p_DisasterRoamingResult),//-, + ?, + mw_PLMN_List( + -, -, + { + *, + PX_PLMN, + * + } + ), + ?/*TAIList*/,-,-,-,-,-,-,-,-,-,-,-,?/*GPRSTimer3512*/,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-, + ? + ), + v_message) == false) { + log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + setverdict(fail); + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_REG_ACC_02 + + /** + * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_03 + */ + function f_TC_5GNAS_AMF_REG_ACC_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_send_NGUERadioCApabilityInfoIndication(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O)//in template (value) NG_MobileIdentity p_MobileId, // 24.501 cl. 9.11.3.4 + + /* in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + // Await request for REGISTRATION_ACCEPT + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_REGISTRATION_ACCEPT( + cs_RegistrationResult('000'B,//B3_Type p_Result, + '0'B,//B1_Type p_SMS, + '0'B,//B1_Type p_EmergencyRegistered, + '0'B,//B1_Type p_NssaaPerformed, + '0'B),//B1_Type p_DisasterRoamingResult),//-, + ?, + mw_PLMN_List( + -, -, + { + *, + PX_PLMN, + * + } + ), + ?/*TAIList*/,-,-,-,-,-,-,-,-,-,-,-,?/*GPRSTimer3512*/,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-, + ? + ), + v_message) == false) { + log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + setverdict(fail); + } + + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_REG_ACC_03 + + /** + * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_04 + */ + function f_TC_5GNAS_AMF_REG_ACC_04() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_send_NGUERadioCApabilityInfoIndication(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O)//in template (value) NG_MobileIdentity p_MobileId, // 24.501 cl. 9.11.3.4 + + /* in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + // Await request for REGISTRATION_ACCEPT + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_REGISTRATION_ACCEPT( + -, + ?, + mw_PLMN_List( + -, -, + { + *, + PX_PLMN, + * + } + ), + -,?/*AllowedNSSAI*/,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-, + ? + ), + v_message) == false) { + log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + setverdict(fail); + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_REG_ACC_04 + + /** + * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_05 + */ + function f_TC_5GNAS_AMF_REG_ACC_05() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_send_NGSetupRequest_await_NGSetupRespone(); + f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); + f_await_NasSecurityModeCommand_send_NasSecurityModeComplete(); + f_send_NGUERadioCApabilityInfoIndication(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O)//in template (value) NG_MobileIdentity p_MobileId, // 24.501 cl. 9.11.3.4 + + /* in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + // Await request for REGISTRATION_ACCEPT + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_REGISTRATION_ACCEPT( + -, + ?, + mw_PLMN_List( + -, -, + { + *, + PX_PLMN, + * + } + ), + -,-,?/*RejectedNSSAI*/,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-, + ? + ), + v_message) == false) { + log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + setverdict(fail); + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GNAS_AMF_REG_ACC_05 + + /** + * @desc Testcase function for TP_5GNAS_AMF_REG_REJ_01 + */ + function f_TC_5GNAS_AMF_REG_REJ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT,PX_SUPI_DIGITS)//in template (value) NG_MobileIdentity p_MobileId, // 24.501 cl. 9.11.3.4 + + /* in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + var bitstring s := encvalue( vt_NgNasUl_Msg ); + //int i := decvalue(encvalue( vt_NgNasUl_Msg),vt_NgNasUl_Msg); + log(vt_NgNasUl_Msg); + log(vc_sendNAS_PDU); + var NG_NAS_UL_Message_Type rec; + var integer i; + i := decvalue(s,rec); + log(i); + log(rec); + + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_REGISTRATION_REJECT( + cr_GMM_GSM_Cause(*,'00010110'B),//tsc_NR5GCCause_Congestion //template (present) GMM_GSM_Cause p_Cause := ?, + ?//template GPRS_Timer2 p_T3346 := * + /*template GPRS_Timer2 p_T3502 := *, + template EAP_Message p_EAP := *, + template RejectedNSSAI p_RejectedNSSAI := *, + template CAGInfoList p_CAGInfoList := *, + template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template GPRS_Timer3 p_LowerBoundTimerValue := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := **/ + )) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_REJECT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + + log(vc_recvNGAP_PDU); + f_NASPDU_Get(vc_recvNGAP_PDU); + s := oct2bit(vc_recvNAS_PDU); + log(s); + var NG_NAS_DL_Message_Type recdl; + var integer ir; + ir := decvalue(s,recdl); + log(ir); + log(recdl); + + vt_NgNasDl_Msg := + m_NG_REGISTRATION_REJECT( + cs_GMM_GSM_Cause(omit, + '00001101'B/*;tsc_Cause_Roaming_NotAllowed*/) + /*in template (omit) GPRS_Timer2 p_T3346 := omit, + in template (omit) GPRS_Timer2 p_T3502 := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + in template (omit) CAGInfoList p_CAGInfoList := omit, + in template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + in template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + in template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + in template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit + */); + vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasDl_Msg )); + s := encvalue( vt_NgNasDl_Msg ); + //int i := decvalue(encvalue( vt_NgNasUl_Msg),vt_NgNasUl_Msg); + log(vt_NgNasDl_Msg); + log(vc_sendNAS_PDU); + var NG_NAS_DL_Message_Type recdl1; + + i := decvalue(s,recdl1); + log(i); + log(recdl1); + + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_REG_REJ_01 + + /** + * @desc Testcase function for TP_5GNAS_AMF_REG_REJ_02 + */ + function f_TC_5GNAS_AMF_REG_REJ_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_REGISTRATION_REQUEST( + {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, + '111'B,//in template (value) NAS_KsiValue p_KeySetId, + '0'B,//in template (value) B1_Type p_Tsc, + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT,PX_SUPI_DIGITS),//in template (value) NG_MobileIdentity p_MobileId, + + omit, // in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + omit, // in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + omit //in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + //in template (omit) NSSAI p_ReqNSSAI := omit, + /*in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit */ + ) + + //vc_sendNAS_PDU := bit2oct(encvalue( vt_NgNasUl_Msg )); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + bit2oct(encvalue( vt_NgNasUl_Msg )),//vc_sendNAS_PDU + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_REGISTRATION_REJECT( + cr_GMM_GSM_Cause(*,'00111110'B)//tsc_Cause_NoNetworkSlices_Available //template (present) GMM_GSM_Cause p_Cause := ?, + /*template GPRS_Timer2 p_T3346 := * + template GPRS_Timer2 p_T3502 := *, + template EAP_Message p_EAP := *, + template RejectedNSSAI p_RejectedNSSAI := *, + template CAGInfoList p_CAGInfoList := *, + template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template GPRS_Timer3 p_LowerBoundTimerValue := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := **/ + )) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_REJECT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_REG_REJ_02 + + } // End of group /*5_5_1_2_*/Registration_Procedure_for_initial_registration + + group /*5_5_2_2_3*/UE_initiated_de_registration_procedure_completion { + + /** + * @desc Testcase function for TC_5GNAS_AMF_DRG_ACC_01 + */ + function f_TC_5GNAS_AMF_DRG_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_DEREGISTRATION_REQUEST_MO( + crs_DeregisterType ('0'B,//B1_Type p_SwitchOff, + '0'B,//B1_Type p_ReReg, + '01'B//B2_Type p_Access := '01'B),//in template (value) DeregisterType p_DeregisterType, + ), + cs_NAS_KeySetIdentifier_lv('111'B,'1'B),//in template (value) NAS_KeySetIdentifier p_KSI, + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT,PX_SUPI_DIGITS)//in template (value) NG_MobileIdentity p_MobileId, + ); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + bit2oct(encvalue( vt_NgNasUl_Msg )),//vc_sendNAS_PDU + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_DEREGISTRATION_ACCEPT_MO + ) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_ACCEPT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_DRG_ACC_01 + + /** + * @desc Testcase function for TC_5GNAS_AMF_DRG_ACC_02 + */ + function f_TC_5GNAS_AMF_DRG_ACC_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + vt_NgNasUl_Msg := + m_NG_DEREGISTRATION_REQUEST_MO( + crs_DeregisterType ('1'B,//B1_Type p_SwitchOff, + '0'B,//B1_Type p_ReReg, + '01'B//B2_Type p_Access := '01'B),//in template (value) DeregisterType p_DeregisterType, + ), + cs_NAS_KeySetIdentifier_lv('111'B,'1'B),//in template (value) NAS_KeySetIdentifier p_KSI, + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT,PX_SUPI_DIGITS)//in template (value) NG_MobileIdentity p_MobileId, + ); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_initialUeMessage( + -, + bit2oct(encvalue( vt_NgNasUl_Msg )),//vc_sendNAS_PDU + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + )) + )) + ); + + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_DEREGISTRATION_ACCEPT_MO + ) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_ACCEPT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_DRG_ACC_02 + + } // End of group /*5_5_2_2_3*/UE_initiated_de_registration_procedure_completion + + group /*5_5_2_3_1*/Network_initiated_de_registration_procedure_initiation { + + /** + * @desc Testcase function for TC_5GNAS_AMF_DRG_REQ_01 + */ + function f_TC_5GNAS_AMF_DRG_REQ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + //USER REGISTRATION + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_DEREGISTRATION_REQUEST_MT( + crs_DeregisterType ('0'B,//B1_Type p_SwitchOff, + '0'B,//B1_Type p_ReReg, + '01'B//B2_Type p_Access := '01'B),//in template (value) DeregisterType p_DeregisterType, + )//template (present) DeregisterType p_Type := ?, + //template GMM_GSM_Cause p_Cause := *, + //template GPRS_Timer2 p_T3346 := *, + //template RejectedNSSAI p_RejectedNSSAI := *, + //template CAGInfoList p_CAGInfoList := *, + //template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + //template RegistrationWaitRange p_DisasterReturnWaitRange := *, + //template ExtdCAGInfoList p_ExtdCAGInfoList := *, + //template GPRS_Timer3 p_LowerBoundTimerValue := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + )) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_DRG_REQ_01 + + /** + * @desc Testcase function for TC_5GNAS_AMF_DRG_REQ_02 + */ + function f_TC_5GNAS_AMF_DRG_REQ_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_DEREGISTRATION_REQUEST_MT( + //template (present) DeregisterType p_Type := ?, + //template GMM_GSM_Cause p_Cause := *, + //template GPRS_Timer2 p_T3346 := *, + //template RejectedNSSAI p_RejectedNSSAI := *, + //template CAGInfoList p_CAGInfoList := *, + //template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + //template RegistrationWaitRange p_DisasterReturnWaitRange := *, + //template ExtdCAGInfoList p_ExtdCAGInfoList := *, + //template GPRS_Timer3 p_LowerBoundTimerValue := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + )) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + //Not sent sesponse and again wait for deregistration_request + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_DEREGISTRATION_REQUEST_MT( + crs_DeregisterType ('0'B,//B1_Type p_SwitchOff, + '0'B,//B1_Type p_ReReg, + '01'B//B2_Type p_Access := '01'B),//in template (value) DeregisterType p_DeregisterType, + )//template (present) DeregisterType p_Type := ?, + //template GMM_GSM_Cause p_Cause := *, + //template GPRS_Timer2 p_T3346 := *, + //template RejectedNSSAI p_RejectedNSSAI := *, + //template CAGInfoList p_CAGInfoList := *, + //template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + //template RegistrationWaitRange p_DisasterReturnWaitRange := *, + //template ExtdCAGInfoList p_ExtdCAGInfoList := *, + //template GPRS_Timer3 p_LowerBoundTimerValue := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + )) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_DRG_REQ_02 + + /** + * @desc Testcase function for TC_5GNAS_AMF_DRG_REQ_03 + */ + function f_TC_5GNAS_AMF_DRG_REQ_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ?//template (present) NAS_PDU p_nasPdu := ? + )) + ); + + f_NASPDU_Get(vc_recvNGAP_PDU); + if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, + mw_NG_DEREGISTRATION_REQUEST_MT( + crs_DeregisterType ('0'B,//B1_Type p_SwitchOff, + '1'B,//B1_Type p_ReReg, + '01'B//B2_Type p_Access := '01'B),//in template (value) DeregisterType p_DeregisterType, + )//template (present) DeregisterType p_Type := ?, + //template GMM_GSM_Cause p_Cause := *, + //template GPRS_Timer2 p_T3346 := *, + //template RejectedNSSAI p_RejectedNSSAI := *, + //template CAGInfoList p_CAGInfoList := *, + //template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + //template RegistrationWaitRange p_DisasterReturnWaitRange := *, + //template ExtdCAGInfoList p_ExtdCAGInfoList := *, + //template GPRS_Timer3 p_LowerBoundTimerValue := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + //template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + )) == false) { + + log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_5GNAS_AMF_DRG_REQ_03 + + } // End of group /*5_5_2_3_1*/Network_initiated_de_registration_procedure_initiation + + + + + + + + + + + } // End of group TP_AMF_NGAP + + group TC_AMF_NGAP { + + /** + * @desc Testcase function for TC_5GAP_ICS_01 + */ + function f_TC_5GAP_ICS_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // TODO + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GAP_ICS_01 + + /** + * @desc Testcase function for TC_5GAP_ICS_02 + */ + function f_TC_5GAP_ICS_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // TODO + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GAP_ICS_02 + + /** + * @desc Testcase function for TC_5GAP_DNA_01 + */ + function f_TC_5GAP_DNA_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // TODO + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GAP_DNA_01 + + /** + * @desc Testcase function for TC_5GAP_DNA_02 + */ + function f_TC_5GAP_DNA_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // TODO + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GAP_DNA_02 + + /** + * @desc Testcase function for TC_5GAP_PDU_01 + */ + function f_TC_5GAP_PDU_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { + // Local variables + + // Preamble + f_NGAP_gnb_init(); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Body + // TODO + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); + + // Postamble + //TODO: f_postamble_NGAP_gNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + } // End of function f_TC_5GAP_PDU_01 + + } // End of group TC_AMF_NGAP + +} // End of module NG_NAS_TCFunctions diff --git a/ttcn/Ats_NG_NAS/NG_NAS_TestCases.ttcn b/ttcn/Ats_NG_NAS/NG_NAS_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..ebff74a426bebca57dba4728df1fdd9c06ce8182 --- /dev/null +++ b/ttcn/Ats_NG_NAS/NG_NAS_TestCases.ttcn @@ -0,0 +1,836 @@ +/** + * @author ETSI / TTF041 + * @version $URL$ + * $Id$ + * @desc This module provides testcases for NG_NAS tests. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS + */ + +module NG_NAS_TestCases { + + // LibCommon + import from LibCommon_Sync all ; + + // NG_NAS + import from Lib_NG_NAS_Interface all; + import from NG_NAS_TCFunctions all; + import from NG_NAS_Pics all; + import from NG_NAS_TestConfiguration all; + import from NG_NAS_TestSystem all; + + // LibNGAP + import from NGAP_Constants language "ASN.1:2002" all; + import from NGAP_CommonDataTypes language "ASN.1:2002" all; + import from NGAP_IEs language "ASN.1:2002" all; + import from NGAP_PDU_Contents language "ASN.1:2002" all; + import from NGAP_PDU_Descriptions language "ASN.1:2002" all; + import from NGAP_Containers language "ASN.1:2002" all; + + //import from LibNGAP_TypesAndValues all; + //import from LibNGAP_Templates all; + //import from LibNGAP_Pixits all; + + // NGAP_Ats + //import from LibNGAP_TypesAndValues all; + //import from NGAP_TestConfiguration all; + import from NGAP_TestSystem all; + //import from NGAP_TCFunctions all; + //import from NGAP_Pics all; + + group TC_AMF { + + group /*5_4_*/fiveGMM_Common_Procedures { + + group /*5_4_1_*/fiveGMM_Common_ProceduresPrimary_authentication_and_key_agreement_procedure { + + /** + * @desc Verify that the IUT sends an AUTHENTICATION REQUEST message correctly upon receipt of a NAS Registration without an active security context + * @see ETSI TS 124 501 [1], Clauses 5.4.1.3.2 and 8.2.1 + */ + testcase TC_5GNAS_AMF_AUT_REQ_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_AUT_REQ_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_AUT_REQ_01 + + /** + * @desc Verify that the IUT sends an AUTHENTICATION REQUEST message correctly upon receipt of a NAS Registration without an active security context + * @see ETSI TS 124 501 [1], Clause 5.4.1.3.5 and 8.2.5 + */ + testcase TC_5GNAS_AMF_AUT_REQ_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_AUT_REQ_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_AUT_REQ_02 + + /** + * @desc Verify that the IUT stops re-sending an AUTHENTICATION REQUEST message if no AUTHENTICATION RESPONSE message is received on the fifth expiry of timer T3560 + * @see ETSI TS 124 501 [1], Clauses 5.4.1.3.7 b) and Table 10.3.1 + */ + testcase TC_5GNAS_AMF_AUT_REQ_03() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_AUT_REQ_03()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_AUT_REQ_03 + + /** + * @desc Verify that the IUT sends an IDENTITY REQUEST message correctly upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #20 - MAC failure + * @see ETSI TS 124 501 [1], Clauses 5.4.1.3.7 c) and 8.2.4 + */ + testcase TC_5GNAS_AMF_AUT_REQ_04() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_AUT_REQ_04()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_AUT_REQ_04 + + /** + * @desc Verify that the IUT sends a new AUTHENTICATION REQUEST message with new ngKSI value to re-initiate the 5G AKA based primary authentication upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #71 - ngKSI already in use + * @see ETSI TS 124 501 [1], Clauses 5.4.1.3.7 e) and 8.2.4 + */ + testcase TC_5GNAS_AMF_AUT_REQ_05() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_AUT_REQ_05()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_AUT_REQ_05 + + /** + * @desc Verify that the IUT sends a new IDENTITY REQUEST message to obtain the SUCI from the UE upon receipt of an AUTHENTICATION FAILURE message indicating a 5GMM cause value #26 - non-5G authentication unacceptable + * @see ETSI TS 124 501 [1], Clauses 5.4.1.3.7 and 8.2.4 + */ + testcase TC_5GNAS_AMF_AUT_ABN_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_AUT_ABN_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_AUT_ABN_01 + + } // End of group /*5_4_1_*/fiveGMM_Common_ProceduresPrimary_authentication_and_key_agreement_procedure + + group /*5_4_2_*/Security_mode_control_procedure { + + /** + * @desc Verify that the IUT sends a SECURITY MODE COMMAND message correctly to indicate NAS security mode procedure upon receipt of a NAS AUTHENTICATION RESPONSE + * @see ETSI TS 124 501 [1], Clause 5.4.1.2 + */ + testcase TC_NGNAS_AMF_AUT_SEQ_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_NGNAS_AMF_AUT_SEQ_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_NGNAS_AMF_AUT_SEQ_01 + + /** + * @desc Verify that the IUT, upon receiving the NAS SECURITY MODE COMPLETE message after completing the NAS Authentication and Security procedure, successfully completes the registration process by accepting the registration + * @see ETSI TS 124 501 [1], Clause 5.4.2 and 8.2.25 + */ + testcase TC_5GNAS_AMF_SEC_ACC_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_SEC_ACC_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_SEC_ACC_01 + + /** + * @desc Verify that the IUT, upon receiving the NAS SECURITY MODE REJECT Message after a failed NAS Authentication and security procedure, successfully aborts the registration process by rejecting the registration + * @see ETSI TS 124 501 [1], Clause 5.4.2 and 8.2.25 + */ + testcase TC_5GNAS_AMF_SEC_REJ_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_SEC_REJ_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_SEC_REJ_01 + + } // End of group /*5_4_2_*/Security_mode_control_procedure + + group /*5_4_5_*/NAS_transport_procedure { + + /** + * @desc Verify that the IUT correctly handles a UL NAS transport message containing a PDU SESSION ESTABLISHMENT REQUEST from the UE and responds with a DL NAS transport message containing a PDU SESSION ESTABLISHMENT ACCEPT + * @see ETSI TS 124 501 [1], Clause 5.4.5 and 8.2.10, 8.2.11 + */ + testcase TC_5GNAS_AMF_DLN_ACC_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_DLN_ACC_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_DLN_ACC_01 + + } // End of group /*5_4_5_*/NAS_transport_procedure + + } // End of group /*5_4_*/fiveGMM_Common_Procedures + + group /*5_5_1_2_*/Registration_Procedure_for_initial_registration { + + /** + * @desc Verify that the IUT sends a REGISTRATION ACCEPT message containing the 5GS registration result, TAI list, 5G-GUTI and T3512 when initial registration is accepted by the network + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7 + */ + testcase TC_5GNAS_AMF_REG_ACC_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_ACC_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase _5GNAS_AMF_REG_ACC_01 + + /** + * @desc Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS allowed when initial registration with SMS over NAS is requested and network allows SMS service + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7 + */ + testcase TC_5GNAS_AMF_REG_ACC_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_ACC_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase _5GNAS_AMF_REG_ACC_02 + + /** + * @desc Verify that the IUT sends a REGISTRATION ACCEPT message indicating SMS over NAS not allowed when initial registration with SMS over NAS is requested and network does not support SMS service + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7 + */ + testcase TC_5GNAS_AMF_REG_ACC_03() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_ACC_03()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase _5GNAS_AMF_REG_ACC_03 + + /** + * @desc Verify that the IUT includes the allowed NSSAI in the REGISTRATION ACCEPT message when the UE includes a requested NSSAI in the REGISTRATION REQUEST message and the network allows one or more S-NSSAIs from the requested NSSAI + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7 + */ + testcase TC_5GNAS_AMF_REG_ACC_04() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_ACC_04()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_REG_ACC_04 + + /** + * @desc Verify that the IUT optionally includes rejected NSSAI in the REGISTRATION ACCEPT message when the network rejects one or more S-NSSAIs from the requested NSSAI + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.4 and 8.2.7 + */ + testcase TC_5GNAS_AMF_REG_ACC_05() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_ACC_05()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_REG_ACC_05 + + /** + * @desc Verify that the IUT rejects initial registration request due to general NAS level mobility management congestion control with 5GMM cause value #22 - congestion and assign a value for back-off timer T3346 + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.5 and 8.2.9 + */ + testcase TC_5GNAS_AMF_REG_REJ_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_REJ_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_REG_REJ_01 + + /** + * @desc Verify that the IUT rejects initial registration request because all the S-NSSAI(s) included in the requested NSSAI are either rejected for current PLMN, rejected for the current registration area or rejected due to failed or revoked NSSAIs + * @see ETSI TS 124 501 [1], Clauses 5.5.1.2.5 and 8.2.9 + */ + testcase TC_5GNAS_AMF_REG_REJ_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_REG_REJ_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_REG_REJ_02 + + } // End of group /*5_5_1_2_*/Registration_Procedure_for_initial_registration + + group /*5_5_2_2_3*/UE_initiated_de_registration_procedure_completion { + + /** + * @desc Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with Normal de-registration from the UE, sends a DEREGISTRATION ACCEPT message + * @see ETSI TS 124 501 [1], Clauses 5.5.2.2.3, 8.2.12 and 8.2.13 + */ + testcase TC_5GNAS_AMF_DRG_ACC_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_DRG_ACC_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_DRG_ACC_01 + + /** + * @desc Verify that the IUT, upon receiving a DEREGISTRATION REQUEST message containing the De-registration type IE with Switch-off from the UE, does not send a DEREGISTRATION ACCEPT message and IUT completes de-registration procedure + * @see ETSI TS 124 501 [1], Clauses 5.5.2.2.3, 8.2.12 and 8.2.13 + */ + testcase TC_5GNAS_AMF_DRG_ACC_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_DRG_ACC_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_DRG_ACC_02 + + } // End of group /*5_5_2_2_3*/UE_initiated_de_registration_procedure_completion + + group /*5_5_2_3_1*/Network_initiated_de_registration_procedure_initiation { + + /** + * @desc Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message containing De-registration type IE with re-registration not required and the access type based on the UE’s registration status (3GPP access only). **NOTE:** explicit network deregistration triggered by O&M - deactivation of UE + * @see ETSI TS 124 501 [1], Clauses 5.5.2.3.1 and 8.2.14 + */ + testcase TC_5GNAS_AMF_DRG_REQ_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_DRG_REQ_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_DRG_REQ_01 + + /** + * @desc Verify that the IUT initiates network de-registration by sending a DEREGISTRATION REQUEST message and if UE does not send DEREGISTRATION ACCEPT then IUT retransmits DEREGISTRATION REQUEST message after timer T3522 expiration. **NOTE:** explicit network deregistration triggered by O&M - UE deregistration + * @see ETSI TS 124 501 [1], Clauses 5.5.2.3.1 and 8.2.14 + */ + testcase TC_5GNAS_AMF_DRG_REQ_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_DRG_REQ_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_DRG_REQ_02 + + /** + * @desc Verify that the IUT initiates network de-registration by sending DEREGISTRATION REQUEST message containing De-registration type IE with re-registration required and the access type based on the UE’s registration status (3GPP access only). **NOTE 1:** UE sends DEREGISTRATION ACCEPT and starts with re-registration procedure.(also used ref 5.5.2.3.2 1st paragraph) **NOTE 2:** explicit network deregistration triggered by O&M - UE deregistration" + * @see ETSI TS 124 501 [1], Clauses 5.5.2.3.1, 5.5.2.3.2 and 8.2.14 + */ + testcase TC_5GNAS_AMF_DRG_REQ_03() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GNAS_AMF_DRG_REQ_03()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GNAS_AMF_DRG_REQ_03 + + } // End of group /*5_5_2_3_1*/Network_initiated_de_registration_procedure_initiation + + } // End of group TC_AMF + + group TC_AMF_NGAP { + + /** + * @desc The IUT is able to receive an INITIAL_UE_MESSAGE to indicate a NAS transport procedure and reply with INITIAL_CONTEXT_SETUP_REQUEST + * @see ETSI TS 138 413 [1], Clauses 8.3.1.2, 8.6.1.2, 9.2.5.1 and 9.2.2.1 + */ + testcase TC_5GAP_ICS_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GAP_ICS_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GAP_ICS_01 + + /** + * @desc The IUT is able to receive an UPLINK_NAS_TRANSPORT to indicate a NAS transport procedure and reply with INITIAL_CONTEXT_SETUP_REQUEST + * @see ETSI TS 138 413 [1], Clauses 8.3.1.2, 8.6.3.2, 9.2.2.1 and 9.2.5.3 + */ + testcase TC_5GAP_ICS_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GAP_ICS_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GAP_ICS_02 + + /** + * @desc The IUT is able to receive an INITIAL_UE_MESSAGE to indicate a NAS transport procedure and reply with DOWNLINK_NAS_TRANSPORT + * @see ETSI TS 138 413 [1], Clauses 8.6.1.2, 8.6.2.2, 9.2.5.1 and 9.2.5.2 + */ + testcase TC_5GAP_DNA_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GAP_DNA_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GAP_DNA_01 + + /** + * @desc The IUT is able to receive an INITIAL_UE_MESSAGE to indicate a NAS transport procedure and reply with DOWNLINK_NAS_TRANSPORT + * @see ETSI TS 138 413 [1], Clauses 8.6.1.2, 8.6.2.2, 9.2.5.1 and 9.2.5.2 + */ + testcase TC_5GAP_DNA_02() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GAP_DNA_02()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GAP_DNA_02 + + /** + * @desc The IUT is able to receive an UPLINK_NAS_TRANSPORT to indicate a NAS transport procedure and reply with DOWNLINK_NAS_TRANSPORT + * @see ETSI TS 138 413 [1], Clauses 8.2.1.2, 8.6.3.2, 9.2.1.1 and 9.2.5.3 + */ + testcase TC_5GAP_PDU_01() runs on gNB_NGNAS_NGAPComponent system TestAdapter { + + // Local variables + var gNB_NGNAS_NGAPComponent v_ngnas_ngap_gnb; + + // Test control + if (not PICS_NGNAS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGNAS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_NGNAS_gNB_Up(v_ngnas_ngap_gnb); + + // Start + v_ngnas_ngap_gnb.start(f_TC_5GAP_PDU_01()); + + // synchronize PTC on 1 sychronization points + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + //f_cf_Down/*gNBoraMF*/(); + + } // End of testcase TC_5GAP_PDU_01 + + } // End of group TC_AMF_NGAP + +}// End of module NG_NAS_TestCases diff --git a/ttcn/Ats_NG_NAS/NG_NAS_TestConfiguration.ttcn b/ttcn/Ats_NG_NAS/NG_NAS_TestConfiguration.ttcn new file mode 100755 index 0000000000000000000000000000000000000000..6e66fe40a3a23480c1f157ae5c52cc1f627ea78b --- /dev/null +++ b/ttcn/Ats_NG_NAS/NG_NAS_TestConfiguration.ttcn @@ -0,0 +1,144 @@ +/** +* @author ETSI / TTF041 +* @version $URL$ +* $Id$ +* @desc This module provides test configuration description for NG_NAS tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ + +module NG_NAS_TestConfiguration{ + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_VerdictControl all; + + // NG_NAS_Ats + import from NG_NAS_TestSystem all; + // Lib_NG_NAS + import from Lib_NG_NAS_Interface all; + + //NGAP + import from NGAP_TestSystem all; + + + group cfUp { + + /** + * @desc Creates test configuration of cf_NGAP_AMF - gNB is SUT + * @param p_NGAPComponent_mme + */ + /*function f_cf_NGAP_aMF_Up( + out aMFNGAPComponent p_NGAPComponent_amf + ) runs on aMFNGAPComponent system TestAdapter { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_NGAPComponent_amf := aMFNGAPComponent.create ; + + // Connect mtc sync port + connect(self:syncPort, self:syncPort); + // Connect client sync port + connect(p_NGAPComponent_amf:syncPort, self:syncPort) ; + //Map + map(p_NGAPComponent_amf:N2_gNBaMF_P, system:NGAP_AMF); + + activate(a_mtc_shutdown()); + + f_setVerdict(v_ret); + } // End of function f_cf_NGAP_AMF_Up*/ + + /** + * @desc Creates test configuration of cf_NGNAS_gNB - AMF is SUT + * @param p_NGNAS_Component_gnb + */ + function f_cf_NGNAS_gNB_Up( + out gNB_NGNAS_NGAPComponent p_NGNAS_Component_gnb + ) runs on gNB_NGNAS_NGAPComponent system TestAdapter { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_NGNAS_Component_gnb := gNB_NGNAS_NGAPComponent.create ; + + // Connect mtc sync port + connect(self:syncPort, self:syncPort); + // Connect client sync port + connect(p_NGNAS_Component_gnb:syncPort, self:syncPort) ; + //Map + map(p_NGNAS_Component_gnb:N2_gNBaMF_P, system:NGAP_gNB_1); + + activate(a_mtc_shutdown()); + + f_setVerdict(v_ret); + } // End of function f_cf_NG_NAS_gNB_Up + + /** + * @desc Creates test configuration of cf_NGAP_2gNB - AMF is SUT + * @param p_NGAPComponent_enb1, p_NGAPComponent_gnb2 + */ + /*function f_cf_NGAP_2gNB_Up( + out gNBNGAPComponent p_NGAPComponent_gnb1, + out gNBNGAPComponent p_NGAPComponent_gnb2 + ) runs on gNBNGAPComponent system TestAdapter { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_NGAPComponent_gnb1 := gNBNGAPComponent.create; + p_NGAPComponent_gnb2 := gNBNGAPComponent.create; + + // Connect mtc sync port + connect(self:syncPort, self:syncPort); + // Connect client sync port + connect(p_NGAPComponent_gnb1:syncPort, self:syncPort); + connect(p_NGAPComponent_gnb2:syncPort, self:syncPort) ; + + //Map + map(p_NGAPComponent_gnb1:N2_gNBaMF_P, system:NGAP_gNB_1); + map(p_NGAPComponent_gnb2:N2_gNBaMF_P, system:NGAP_gNB_2); + + activate(a_mtc_shutdown()); + + f_setVerdict(v_ret); + } // End of function f_cf_NGAP_2gNB_Up*/ + + } // End of group cfUp + + group cfDown { + + /** + * @desc Deletes configuration + * @param + */ + function f_cf_NGNAS_gNB_Down( + inout gNB_NGNAS_NGAPComponent p_NGNAS_Component_gnb + ) runs on gNB_NGNAS_NGAPComponent system TestAdapter { + // Unmap all + unmap(p_NGNAS_Component_gnb:N2_gNBaMF_P, system:NGAP_gNB_1); + // Disconnect all + disconnect(self:syncPort, self:syncPort); + disconnect(p_NGNAS_Component_gnb:syncPort, self:syncPort) ; + // Deactivate all + deactivate; + } // End of function f_cf_NGNAS_gNB_Down + + } // End of group cfDown + + group shutDownAltsteps { + + altstep a_mtc_shutdown() + runs on SelfSyncComp { + [] syncSendPort.receive(m_syncServerStop) { + tc_sync.stop ; + log("**** a_mtc_shutdown: MTC component received STOP signal **** "); + } + } // End of altstep a_mtc_shutdown + + } // End of group shutDownAltsteps + +} // End of module NG_NAS_TestConfiguration diff --git a/ttcn/Ats_NG_NAS/NG_NAS_TestControl.ttcn b/ttcn/Ats_NG_NAS/NG_NAS_TestControl.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a67cdc4844a08f9d8279d8dc39391b1d58091c7e --- /dev/null +++ b/ttcn/Ats_NG_NAS/NG_NAS_TestControl.ttcn @@ -0,0 +1,60 @@ +/** + * @author ETSI / TTF041 + * @version $URL$ + * $Id$ + * @desc This module provides testcases for NG_NAS tests. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS + */ + +module NG_NAS_TestControl { + + // NG_NAS + import from NG_NAS_TestCases all; + import from NG_NAS_Pics all; + + control { + + if (not PICS_NGNAS) { + execute(TC_5GNAS_AMF_AUT_REQ_01()); + execute(TC_5GNAS_AMF_AUT_REQ_02()); + execute(TC_5GNAS_AMF_AUT_REQ_03()); + execute(TC_5GNAS_AMF_AUT_REQ_04()); + execute(TC_5GNAS_AMF_AUT_REQ_05()); + + execute(TC_5GNAS_AMF_AUT_ABN_01()); + + execute(TC_NGNAS_AMF_AUT_SEQ_01()); + + execute(TC_5GNAS_AMF_SEC_ACC_01()); + execute(TC_5GNAS_AMF_SEC_REJ_01()); + + execute(TC_5GNAS_AMF_DLN_ACC_01()); + + execute(TC_5GNAS_AMF_REG_ACC_01()); + execute(TC_5GNAS_AMF_REG_ACC_02()); + execute(TC_5GNAS_AMF_REG_ACC_03()); + execute(TC_5GNAS_AMF_REG_ACC_04()); + execute(TC_5GNAS_AMF_REG_ACC_05()); + + execute(TC_5GNAS_AMF_REG_REJ_01()); + execute(TC_5GNAS_AMF_REG_REJ_02()); + + execute(TC_5GNAS_AMF_DRG_ACC_01()); + execute(TC_5GNAS_AMF_DRG_ACC_02()); + + execute(TC_5GNAS_AMF_DRG_REQ_01()); + execute(TC_5GNAS_AMF_DRG_REQ_02()); + execute(TC_5GNAS_AMF_DRG_REQ_03()); + + } + + if (not PICS_NGNAS) { + execute(TC_5GAP_ICS_01()); + } + } + +} // End of module NG_NAS_TestControl diff --git a/ttcn/Ats_NG_NAS/NG_NAS_TestSystem.ttcn b/ttcn/Ats_NG_NAS/NG_NAS_TestSystem.ttcn new file mode 100755 index 0000000000000000000000000000000000000000..35fd618b4182686ea443c5908df102d7cb3ae85f --- /dev/null +++ b/ttcn/Ats_NG_NAS/NG_NAS_TestSystem.ttcn @@ -0,0 +1,59 @@ + /** +* @author ETSI / TTF041 +* @version $URL$ +* $Id$ +* @desc This module provides the types and ports used by the test component for NG_NAS tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module NG_NAS_TestSystem { + + // LibCommon + import from LibCommon_Sync all; + + // LibNGAP + //import from LibNGAP_Interface all; + + // Lib_NG_NAS + import from Lib_NG_NAS_Interface all; + + group SystemConfiguration { + + group TestComponents { + + // group TestSystemInterfaces { + + // /** + // * @desc The test system interface + // */ + // type component TestAdapter { + + // port + // NGAPPort NGAP_AMF, + // NGAP_gNB_1, + // NGAP_gNB_2 + // } // End of type TestAdapter + + // } // End of group TestSystemInterfaces + + type component gNB_NGNAS_NGAPComponent extends ServerSyncComp, NGNASComponent { + //component variables + } // End of type component gNBNGAPComponent + + //Not defined because tests implemented for network side + //type component aMF_NGNAS_NGAPComponent extends ServerSyncComp, NGNASComponent { + // //component variables + //} // End of type component aMFNGAPComponent + + //type component NGAP extends ServerSyncComp, NGAPComponent { + // //component variables + //} // End of component NGAP + + } // End of group TestComponents + + } // End of group SystemConfiguration + +} // End of module NG_NAS_TestSystem diff --git a/ttcn/Ats_NG_NAS/module.mk b/ttcn/Ats_NG_NAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..9014ba3125c61259ba5cf5d756286c74b9ac8b52 --- /dev/null +++ b/ttcn/Ats_NG_NAS/module.mk @@ -0,0 +1,45 @@ +suite := Ats_NG_NAS +pdu := NGAP-PDU + +sources:= \ + NG_NAS_TestCases.ttcn \ + NG_NAS_TestControl.ttcn \ + NG_NAS_TCFunctions.ttcn \ + NG_NAS_Pics.ttcn \ + NG_NAS_TestSystem.ttcn \ + NG_NAS_TestConfiguration.ttcn \ + ../AtsNGAP/NGAP_Pics.ttcn \ + ../AtsNGAP/NGAP_Pixits.ttcn \ + ../AtsNGAP/NGAP_Steps.ttcn \ + ../AtsNGAP/NGAP_TestSystem.ttcn \ + ../AtsNGAP/NGAP_TestConfiguration.ttcn + + +modules := \ + ../LibNGAP \ + ../Lib_NG_NAS \ + ../LibCommon \ + ../Lib3GPP \ + ../../titan-test-system-framework/ttcn/LibHelpers \ + ../../titan-test-system-framework/ttcn/LibSecurity \ + ../../titan-test-system-framework/ttcn/LibXsd \ + ../../titan-test-system-framework/ccsrc/Protocols/Pcap \ + ../../titan-test-system-framework/ccsrc/Protocols/ETH \ + ../../titan-test-system-framework/ccsrc/Protocols/IP \ + ../../titan-test-system-framework/ccsrc/Protocols/Sctp \ + ../../titan-test-system-framework/ccsrc/Protocols/Xml \ + ../../titan-test-system-framework/ccsrc/Framework \ + ../../titan-test-system-framework/ccsrc/Helpers \ + ../../titan-test-system-framework/ccsrc/loggers \ + ../../titan-test-system-framework/ccsrc/security \ + ../../ccsrc/EncDec \ + ../../ccsrc/Externals \ + ../../ccsrc/Ports/LibNAS \ + ../../ccsrc/Ports/LibNGAP \ + ../../ccsrc/framework \ + ../../ccsrc/Protocols/NGAP_layer \ + ../../ccsrc/Protocols/NGAP \ + ../../ccsrc/Protocols/NG_NAS \ + ../../ccsrc/Protocols/FiveG_AKA \ + ../modules/titan.TestPorts.Common_Components.Abstract_Socket + diff --git a/ttcn/Lib3GPP/Common/CommonDefs.ttcn b/ttcn/Lib3GPP/Common/CommonDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..222a2ca4b326dcab1dad43d9a47e82f898f1f4b4 --- /dev/null +++ b/ttcn/Lib3GPP/Common/CommonDefs.ttcn @@ -0,0 +1,1698 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-07-19 14:52:19 +0200 (Wed, 19 Jul 2023) $ +// $Rev: 36499 $ +/******************************************************************************/ + +module CommonDefs { + + //---------------------------------------------------------------------------- + // type definitions: + + type bitstring B1_Type length(1); + type bitstring B2_Type length(2); + type bitstring B3_Type length(3); + type bitstring B4_Type length(4); + type bitstring B5_Type length(5); + type bitstring B6_Type length(6); + type bitstring B7_Type length(7); + type bitstring B7_15_Type length(7..15); // NOTE: length restriction can only be a range but not two destinct lengths + type bitstring B8_Type length(8); + type bitstring B9_Type length(9); + type bitstring B10_Type length(10); + type bitstring B11_Type length(11); + type bitstring B12_Type length(12); + type bitstring B13_Type length(13); + type bitstring B14_Type length(14); + type bitstring B15_Type length(15); + type bitstring B16_Type length(16); + type bitstring B18_Type length(18); + type bitstring B20_Type length(20); + type bitstring B22_Type length(22); + type bitstring B24_Type length(24); + type bitstring B27_Type length(27); + type bitstring B28_Type length(28); + type bitstring B32_Type length(32); + type bitstring B36_Type length(36); + type bitstring B40_Type length(40); + type bitstring B41_Type length(41); + type bitstring B42_Type length(42); + type bitstring B43_Type length(43); + type bitstring B45_Type length(45); + type bitstring B47_Type length(47); + type bitstring B48_Type length(48); + type bitstring B56_Type length(56); + type bitstring B64_Type length(64); + type bitstring B80_Type length(80); + type bitstring B112_Type length(112); + type bitstring B128_Type length(128); + type bitstring B160_Type length(160); + type bitstring B184_Type length(184); + type bitstring B192_Type length(192); + type bitstring B256_Type length(256); + type bitstring B32_128_Type length(32..128); + + type B128_Type B128_Key_Type; /* 128 bit security key */ + type B256_Type B256_Key_Type; /* 256 bit security key */ + + type octetstring O1_Type length(1); + type octetstring O2_Type length(2); + type octetstring O3_Type length(3); + type octetstring O4_Type length(4); + type octetstring O5_Type length(5); + type octetstring O6_Type length(6); + type octetstring O8_Type length(8); + type octetstring O9_Type length(9); + type octetstring O10_Type length(10); + type octetstring O13_Type length(13); + type octetstring O14_Type length(14); + type octetstring O15_Type length(15); + type octetstring O16_Type length(16); + type octetstring O28_Type length(28); + type octetstring O32_Type length(32); + type octetstring O43_Type length(43); + + type hexstring H1_Type length(1); + type hexstring H2_Type length(2); + type hexstring H4_Type length(4); + type hexstring H12_Type length(12); + type hexstring H14_Type length(14); + + type O1_Type Octet_Type; + type hexstring HalfOctet_Type length(1); + + type record of B8_Type B8_List_Type; + + type boolean Null_Type (true); // dummy type for 'typeless' fields in unions + type boolean Dummy_Type (true); // dummy type for temporary purposes only + + const integer tsc_UInt7Max := 127; + const integer tsc_UInt8Max := 255; + const integer tsc_UInt16Max := 65535; + const integer tsc_UInt20Max := 1048575; + const integer tsc_UInt24Max := 16777215; + const integer tsc_UInt32Max := 4294967295; + + type integer UInt_Type (0 .. infinity); + type integer UInt8_Type (0 .. tsc_UInt8Max); + type integer UInt16_Type (0 .. tsc_UInt16Max); + type integer UInt20_Type (0 .. tsc_UInt20Max); + type integer UInt24_Type (0 .. tsc_UInt24Max); + type integer UInt32_Type (0 .. tsc_UInt32Max); + + type Octet_Type UE_TestLoopMode_Type; + + type charstring Char1_Type length (1); + type charstring Char3_Type length (3); + type record of Char1_Type Char1List_Type; + type record of charstring CharStringList_Type; + type set of charstring SetOfCharString_Type; + + type record of octetstring OctetStringList_Type; + + type record of bitstring BitStringList_Type; + + type record of integer IntegerList_Type; + + + type record NameValue_Type { + charstring Name, + charstring Value + }; + type set of NameValue_Type NameValueList_Type; + + const integer tsc_DirectionUL := 0; /* acc. to 33.401 B.1.1 and B.2.1 @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, POS, UTRAN) */ + const integer tsc_DirectionDL := 1; /* acc. to 33.401 B.1.1 and B.2.1 @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, POS, UTRAN) */ + const octetstring tsc_WLAN_SSID_AP1 := char2oct("3GPP WLAN InterWorking"); /* @status APPROVED (IMS) */ + + type integer MAC_Direction_Type (tsc_DirectionDL, tsc_DirectionUL); /* direction bit for calculation of MAC acc. to 24.301 cl. 9.5 @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, POS, UTRAN) */ + + type enumerated IndicationAndControlMode_Type {enable, disable}; + + type enumerated SinglePLMN_TestedType {SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand}; // @sic R5-123667 sic@ + type enumerated EUTRA_ATTACH_TESTED_Type { EPS_ATTACH_ONLY, COMBINED_ATTACH}; + type enumerated EUTRA_FDD_TDD_Mode_Type {FDD, TDD}; + type enumerated UTRAN_FDD_TDD_Type {UTRAN_FDD, UTRAN_TDD}; + type enumerated RATComb_Tested_Type {EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only}; + type enumerated RRCConnectionReleaseRequired_Type { rrcConnectionRelease, noRrcConnectionRelease }; + type enumerated NTN_Satellite_Type {ntn_None, ntn_GSO, ntn_NGSO}; //@sic R5s230512 sic@ + + type enumerated NGC_CellId_Type { + ngc_Cell_NonSpecific, + ngc_CellA, + ngc_CellB, + ngc_CellC, + ngc_CellD, + ngc_CellE, + ngc_CellF, + ngc_CellG, + ngc_CellH, + ngc_CellI, + ngc_CellJ + }; + + type enumerated NR_CellId_Type { + nr_Cell_NonSpecific, + nr_Cell1, + nr_Cell2, + nr_Cell3, + nr_Cell4, + nr_Cell6, + nr_Cell10, + nr_Cell11, + nr_Cell12, + nr_Cell13, + nr_Cell14, + nr_Cell23, + nr_Cell28, + nr_Cell29, + nr_Cell30, + nr_Cell31 + }; + + type record of NR_CellId_Type NR_CellIdList_Type; /* NOTE: there seems to be no need for any length restriction */ + + type enumerated EUTRA_CellId_Type { + eutra_Cell_NonSpecific, + eutra_Cell1, + eutra_Cell2, + eutra_Cell3, + eutra_Cell4, + eutra_Cell6, + eutra_Cell10, + eutra_Cell11, + eutra_Cell12, + eutra_Cell13, + eutra_Cell14, + eutra_Cell23, + eutra_Cell28, + eutra_Cell29, + eutra_Cell30, + eutra_Cell31, + eutra_CellA, + eutra_CellB, + eutra_CellC, + eutra_CellD, + eutra_CellE, + eutra_CellG, + eutra_CellH, + eutra_CellI, + eutra_CellJ, + eutra_CellK, + eutra_CellL, + eutra_CellM + }; + + type record length (0..9) of EUTRA_CellId_Type EUTRA_CellIdList_Type; + + type enumerated UTRAN_CellId_Type { + utran_CellDedicated (-1), + utran_Cell5 (5), + utran_Cell7 (7), + utran_Cell8 (8), + utran_Cell9 (9), + utran34_Cell1 (1000), + utran34_Cell2 (1001), + utran34_Cell3 (1002), + utran34_Cell4 (1003), + utran34_Cell5 (1004), + utran34_Cell6 (1005), + utran34_Cell7 (1006), + utran34_Cell8 (1007), + utran34_CellA (2000), + utran34_CellB (2001), + utran34_CellC (2002), + utran34_CellD (2003), + utran34_CellE (2004), + utran34_CellF (2005), + utran34_CellG (2006), + utran34_CellH (2007) + }; // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + + type record of UTRAN_CellId_Type UTRAN_CellIdList_Type; + + type enumerated WLAN_CellId_Type { + wlan_Cell_NonSpecific (-1), + wlan_Cell27 (27), /* WLAN AP in EUTRA environment */ + wlan_Cell27b (272), /* WLAN AP in EUTRA environment */ + wlan_Cell39 (39) /* WLAN AP in UTRA environment */ + }; + + //Common delta types + type record UE_NR_DeltaValues_Type { + DeltaValues_Type DeltaPrimaryBand, + DeltaValues_Type DeltaSecondaryBand + }; + + type union AnyCellId_Type { + EUTRA_CellId_Type Eutra, + NR_CellId_Type Nr + // to be extended when needed + }; + + type record DeltaValues_Type { + /* Delta value for each frequency, by default for FR1 or when the frequency is not available the Delta value is set to 0. */ + integer DeltaNRf1, + integer DeltaNRf2, + integer DeltaNRf3, + integer DeltaNRf4 + }; + + //---------------------------------------------------------------------------- + + type integer IP_DrbId_Type; /* DRB identity type common for all RATs: + * - for EUTRA it corresponds to the ASN.1 type DRB-Identity + * - for UTRAN it corresponds to the ASN.1 type RB-Identity and values are as defined in TS 34.123-3 Table 8.2.4.1 + * - for GERAN the NSAPI value (type record NSAPI) may be used + * NOTE: this is introduced to simplify the dependencies (i.e. to keep IP_ASP_TypeDefs independent from any RAT specific type definitions) */ + + type record IP_EUTRA_DrbInfo_Type { + EUTRA_CellId_Type CellId, /* data is routed to a specific cell regardless of whether the same DRB is configured in any other cell */ + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + + type record IP_UTRAN_GERAN_DrbInfo_Type { + integer CellId, + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + + type record IP_WLAN_DrbInfo_Type { + integer CellId + }; + + type record IP_ePDG_IPsecTunnelInfo_Type { + PDN_Index_Type PdnId /* 'index name' of PDN associated to the IPsec tunnel, e.g. for SS to distinguish routing of IP packets in case of more than one IPsec tunnel + * NOTE: In general only 'ePDG_XXX' values shall be used */ + + }; + + type record QosFlow_Identification_Type { + integer PDU_SessionId, /* TS 24.007 clause 11.2.3.1b */ + integer QFI /* TS 24.501 Table 11.2.3.1c.1 */ + }; + + type record IP_NR_QosFlowInfo_Type { + NR_CellId_Type CellId, /* data is routed to a specific cell regardless of whether the same DRB is configured in any other cell */ + QosFlow_Identification_Type QosFlow optional /* mandatory at the system interface */ + }; + + type record IP_EUTRA_QosFlowInfo_Type { + EUTRA_CellId_Type CellId, /* data is routed to a specific cell regardless of whether the same DRB is configured in any other cell */ + QosFlow_Identification_Type QosFlow optional /* mandatory at the system interface */ + }; + + type record IP_NR_DrbInfo_Type { + NR_CellId_Type CellId, + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + + type union IP_DrbInfo_Type { + IP_EUTRA_DrbInfo_Type Eutra, + IP_EUTRA_QosFlowInfo_Type Eutra5GC, /* used when SDAP is configured in non-transparent mode at the SS */ + IP_UTRAN_GERAN_DrbInfo_Type Utran, + IP_UTRAN_GERAN_DrbInfo_Type Geran, + IP_NR_QosFlowInfo_Type Nr5GC, /* used when SDAP is configured in non-transparent mode at the SS @sic R5-188107, R5w190005r1 sic@ */ + IP_NR_DrbInfo_Type NrEPC, /* used when NR is connected to EPC (S1-U interface) or when SDAP is configured in transparent mode at the SS @sic R5w190118 sic@ */ + IP_WLAN_DrbInfo_Type Wlan, /* @sic R5w160107 slide 7 sic@ */ + IP_ePDG_IPsecTunnelInfo_Type IPsecTunnel /* @sic R5w160107 slide 7 sic@ */ + }; + + //---------------------------------------------------------------------------- + + type enumerated GPRS_CipheringAlgorithm_Type { + gea0(0), + gea2(2), + gea3(3), + gea4(4) + }; + + type O4_Type MessageAuthenticationCode; /* 24.301 cl. 9.5 */ + type O4_Type NasCount_Type; + + type B32_Type PdcpCountValue_Type; + + type enumerated IPCAN_RAN_Type { /* radio access network technology used by the IPCAN PTC */ + GERAN, + UTRAN_FDD, + UTRAN_TDD, + EUTRA_FDD, + EUTRA_TDD, + WLAN, /* @sic R5-163201 sic@ */ + NR /* @sic R5-188107 sic@ */ + }; + + // To indicate which PTCs are configured (EUTRA alone is included for completeness) + type enumerated IRAT_ConfiguredPTCs_Type { EUTRA_Only, EUTRA_UTRAN, EUTRA_GERAN, EUTRA_UTRAN_GERAN, EUTRA_CDMA2000, UTRAN_Only, UTRAN_GERAN, EUTRA_WLAN, UTRAN_WLAN, WLAN_Only, NR5GC_WLAN } + + const float tsc_GuardTimePreamble := 180.0; + const float tsc_GuardTimePreamble_12min := tsc_GuardTimePreamble * int2float(4); // @sic R5s200494 sic@ + + // definitions needed for IP and IMS handling + const integer tsc_NoOfPDNs := 3; /* @sic R5s191074 sic@ */ + const integer tsc_NoOfIMSPDNs := 2; /* @sic R5s201177 sic@ */ + + const integer tsc_Index_IMS1 := 0; + const integer tsc_Index_IMS2 := 1; + + type enumerated PDN_Index_Type { /* 'index name' associated to a PDN: + The major purpose is to associate a PDN specific set of IP addresses to the given PDN (e.g. UE addresses, P-CSCF address etc.); + in general there are one or two PDNs configured at the same time and - from TTCN point of view - the IMS PDN is considered to be the first one; + a second PDN may be configured in case of emergency call or e.g. for XCAP signalling; + the 'internet PDN' (according to TS 36.508 clause 4.5.2) is considered as (optional) second PDN during initial registration and gets released after initial registration; + in case of WLAN a separate group of index names is used to distinguish the different configuration of the emulated IP network */ + PDN_1 (0), /* "default" PDN being kept connected to during a test case (in case of LTE in general the IMS PDN) */ + PDN_2 (1), /* second PDN: during initial registration (TS 36.508 clause 4.5.2) for LTE and "multiple PDN' this is the internet PDN; + after initial registration it is used if needed according to the test purpose (e.g. emergency call) */ + PDN_2a, /* used for the special case when the UE IP address of the second PDN changes in a test case */ + PDN_Internet, /* mainly used as alias for PDN2 during initial registration */ + ePDG_IMS1, /* WLAN: PDN for 'normal' IMS */ + ePDG_IMS2, /* WLAN: PDN for emergency IMS (in general) */ + ePDG_XCAP, /* WLAN: PDN for XCAP in case of XCAP server being part of 3GPP-network + NOTE: In contrast to LTE for WLAN there is a different IP architecture to be consider by TTCN for XCAP and IMS emergency */ + ePDG_Internet, /* place-holder for WLAN-offload scenarios */ + nrPDN_Internet, /* mainly used as alias during initial registration in ENDC @sic R5s191074 sic@ */ + PDN_3 (2), /* used in ENDC and 5GC for the third PDN @sic R5s191074 sic@ */ + PDN_4 (3), /* used in 5GC for the URLLC PDN @sic R5-221467 sic@ */ + PDN_5 (4), /* used in 5GC for the MIoT PDN @sic R5-221467 sic@ */ + PDN_6 (5) /* used in 5GC for the V2X PDN @sic R5-221467 sic@ */ + }; + + const integer tsc_EUTRA_MaxEARFCN := 65535; // @sic R5-173669 moved from UTRANCommonDefs sic@ + + /* @sic R5s220330 sic@ */ + const integer tsc_Max_NR_PDCP_SDU_size := 9000; // TS38.323 cl. 4.3.1 + const integer tsc_Max_LTE_PDCP_SDU_size := 8188; // TS36.323 cl. 4.3.1 + + //---------------------------------------------------------------------------- + + // **** C-RNTI: 16 bit for all EUTRA/NBIOT/NR; same constants to be used for NR unless there is a need for NR-specifc values in which case the constants shall have an NR prefix **** + type UInt16_Type RNTI_Value_Type; /* corresponds to NR ASN.1: RNTI-Value ::= INTEGER (0..65535) */ + type B16_Type RNTI_B16_Type; + + const RNTI_Value_Type tsc_C_RNTI_Value1 := hex2int('1001'H); /* '1001'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value2 := hex2int('1034'H); /* '1034'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value3 := hex2int('1111'H); /* '1111'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value4 := hex2int('1FF1'H); /* '1FF1'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value5 := hex2int('04D2'H); /* '04D2'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value6 := hex2int('0929'H); /* '0929'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value7 := hex2int('0D80'H); /* '0D80'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value8 := hex2int('11D7'H); /* '11D7'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value9 := hex2int('162E'H); /* '162E'H acc. to TS 36.523-3 table 7.1.1-1 */ + const RNTI_Value_Type tsc_C_RNTI_Value10 := hex2int('1A85'H); /* '1A85'H acc. to TS 36.523-3 table 7.1.1-1 */ + + + const RNTI_B16_Type tsc_C_RNTI_Def := int2bit(tsc_C_RNTI_Value1, 16); + const RNTI_B16_Type tsc_C_RNTI_Def2 := int2bit(tsc_C_RNTI_Value2, 16); + const RNTI_B16_Type tsc_C_RNTI_Def3 := int2bit(tsc_C_RNTI_Value3, 16); + const RNTI_B16_Type tsc_C_RNTI_Def4 := int2bit(tsc_C_RNTI_Value4, 16); + const RNTI_B16_Type tsc_C_RNTI_Def5 := int2bit(tsc_C_RNTI_Value5, 16); + const RNTI_B16_Type tsc_C_RNTI_Def6 := int2bit(tsc_C_RNTI_Value6, 16); + const RNTI_B16_Type tsc_C_RNTI_Def7 := int2bit(tsc_C_RNTI_Value7, 16); + const RNTI_B16_Type tsc_C_RNTI_Def8 := int2bit(tsc_C_RNTI_Value8, 16); + const RNTI_B16_Type tsc_C_RNTI_Def9 := int2bit(tsc_C_RNTI_Value9, 16); + const RNTI_B16_Type tsc_C_RNTI_Def10 := int2bit(tsc_C_RNTI_Value10, 16); + + template (present) octetstring cr_Octet10_Any := ? length(10); /* @status APPROVED (LTE) */ + + //---------------------------------------------------------------------------- + // constant to generate PRBS sequence + const octetstring tsc_RandomPRBS := + 'FFE665A5C5CA3452085408ABEECE4B0B813FD337873F2CD1E29AE91BD6C8E14F'O + & 'DE630F8195688EBE465F09816A8EEB1B83953DD362DAE3B06D5B76D8E3E53087'O + & 'EA645A09017FD99C3CACBB46DF1CD61DA9C435F89943DF9CC34ADEE31AD6E24F'O + & 'A1903D53778D949742750DD49DE9CE9E430AD448A14575D89C16025508814020'O //octets 0 .. 127 + & '0555DDC9CBCB9EC31F833F866A5BA390680EAB11282EAE44F5E7658F6B247A0C'O + & '54A21057F73278595C235077F267A59097E8CEB4EDE49A16FDB36D2485EA3107'O + & 'D59DC360700D5488BEB9B96C24AF44DF498BC135788C14A8BBEC64A5EF64DA1C'O + & '5608FEB312D7B738D3E2CFB4C74A7458A3EF9B3C79F3CD348740DFE330780C01'O //octets 128 .. 255 + & 'FFCCCB4B8B9468A410A81157DD9C9617027FA66F0E7E59A3C535D237AD91C29F'O + & 'BCC61F032AD11D7C8CBE1302D51DD637072A7BA6C5B5C760DAB6EDB1C7CA610F'O + & 'D4C8B41202FFB3387959768DBE39AC3B53886BF13287BF398695BDC635ADC49F'O + & '43207AA6EF1B292E84EA1BA93BD39D3C8615A891428AEBB1382C04AA11028040'O //octets 256 .. 383 + & '0AABBB9397973D863F067F0CD4B74720D01D5622505D5C89EBCECB1ED648F418'O + & 'A94420AFEE64F0B2B846A0EFE4CF4B212FD19D69DBC9342DFB66DA490BD4620F'O + & 'AB3B86C0E01AA9117D7372D8495E89BE9317826AF118295177D8C94BDEC9B438'O + & 'AC11FD6625AF6E71A7C59F698E94E8B147DF3678F3E79A690E81BFC660F01803'O //octets 384 .. 511 + & 'FF9996971728D148215022AFBB392C2E04FF4CDE1CFCB3478A6BA46F5B23853F'O + & '798C3E0655A23AF9197C2605AA3BAC6E0E54F74D8B6B8EC1B56DDB638F94C21F'O + & 'A991682405FF6670F2B2ED1B7C735876A710D7E2650F7E730D2B7B8C6B5B893E'O + & '8640F54DDE36525D09D4375277A73A790C2B51228515D7627058095422050080'O //octets 512 .. 639 + & '155777272F2E7B0C7E0CFE19A96E8E41A03AAC44A0BAB913D79D963DAC91E831'O + & '5288415FDCC9E165708D41DFC99E96425FA33AD3B792685BF6CDB49217A8C41F'O + & '56770D81C0355222FAE6E5B092BD137D262F04D5E23052A2EFB19297BD936871'O + & '5823FACC4B5EDCE34F8B3ED31D29D1628FBE6CF1E7CF34D21D037F8CC1E03007'O //octets 640 .. 767 + & 'FF332D2E2E51A29042A0455F7672585C09FE99BC39F9668F14D748DEB6470A7E'O + & 'F3187C0CAB4475F232F84C0B547758DC1CA9EE9B16D71D836ADBB6C71F29843F'O + & '5322D0480BFECCE1E565DA36F8E6B0ED4E21AFC4CA1EFCE61A56F718D6B7127D'O + & '0C81EA9BBC6CA4BA13A86EA4EF4E74F21856A2450A2BAEC4E0B012A8440A0100'O //octets 768 .. 895 + & '2AAEEE4E5E5CF618FC19FC3352DD1C834075588941757227AF3B2C7B5923D062'O + & 'A51082BFB993C2CAE11A83BF933D2C84BF4675A76F24D0B7ED9B69242F51883E'O + & 'ACEE1B03806AA445F5CDCB61257A26FA4C5E09ABC460A545DF63252F7B26D0E2'O + & 'B047F59896BDB9C69F167DA63A53A2C51F7CD9E3CF9E69A43A06FF1983C0600F'O //octets 896 .. 1023 + & 'FE665A5C5CA3452085408ABEECE4B0B813FD337873F2CD1E29AE91BD6C8E14FD'O + & 'E630F8195688EBE465F09816A8EEB1B83953DD362DAE3B06D5B76D8E3E53087E'O + & 'A645A09017FD99C3CACBB46DF1CD61DA9C435F89943DF9CC34ADEE31AD6E24FA'O + & '1903D53778D949742750DD49DE9CE9E430AD448A14575D89C160255088140200'O //octets 1024 .. 1151 + & '555DDC9CBCB9EC31F833F866A5BA390680EAB11282EAE44F5E7658F6B247A0C5'O + & '4A21057F73278595C235077F267A59097E8CEB4EDE49A16FDB36D2485EA3107D'O + & '59DC360700D5488BEB9B96C24AF44DF498BC135788C14A8BBEC64A5EF64DA1C5'O + & '608FEB312D7B738D3E2CFB4C74A7458A3EF9B3C79F3CD348740DFE330780C01F'O //octets 1152 .. 1279 + & 'FCCCB4B8B9468A410A81157DD9C9617027FA66F0E7E59A3C535D237AD91C29FB'O + & 'CC61F032AD11D7C8CBE1302D51DD637072A7BA6C5B5C760DAB6EDB1C7CA610FD'O + & '4C8B41202FFB3387959768DBE39AC3B53886BF13287BF398695BDC635ADC49F4'O + & '3207AA6EF1B292E84EA1BA93BD39D3C8615A891428AEBB1382C04AA110280400'O //octets 1280 .. 1407 + & 'AABBB9397973D863F067F0CD4B74720D01D5622505D5C89EBCECB1ED648F418A'O + & '94420AFEE64F0B2B846A0EFE4CF4B212FD19D69DBC9342DFB66DA490BD4620FA'O + & 'B3B86C0E01AA9117D7372D8495E89BE9317826AF118295177D8C94BDEC9B438A'O + & 'C11FD6625AF6E71A7C59F698E94E8B147DF3678F3E79A690E81BFC660F01803F'O //octets 1408 .. 1535 + & 'F9996971728D148215022AFBB392C2E04FF4CDE1CFCB3478A6BA46F5B23853F7'O + & '98C3E0655A23AF9197C2605AA3BAC6E0E54F74D8B6B8EC1B56DDB638F94C21FA'O + & '991682405FF6670F2B2ED1B7C735876A710D7E2650F7E730D2B7B8C6B5B893E8'O + & '640F54DDE36525D09D4375277A73A790C2B51228515D76270580954220500801'O //octets 1536 .. 1663 + & '55777272F2E7B0C7E0CFE19A96E8E41A03AAC44A0BAB913D79D963DAC91E8315'O + & '288415FDCC9E165708D41DFC99E96425FA33AD3B792685BF6CDB49217A8C41F5'O + & '6770D81C0355222FAE6E5B092BD137D262F04D5E23052A2EFB19297BD9368715'O + & '823FACC4B5EDCE34F8B3ED31D29D1628FBE6CF1E7CF34D21D037F8CC1E03007F'O //octets 1664 .. 1791 + & 'F332D2E2E51A29042A0455F7672585C09FE99BC39F9668F14D748DEB6470A7EF'O + & '3187C0CAB4475F232F84C0B547758DC1CA9EE9B16D71D836ADBB6C71F29843F5'O + & '322D0480BFECCE1E565DA36F8E6B0ED4E21AFC4CA1EFCE61A56F718D6B7127D0'O + & 'C81EA9BBC6CA4BA13A86EA4EF4E74F21856A2450A2BAEC4E0B012A8440A01002'O //octets 1792 .. 1919 + & 'AAEEE4E5E5CF618FC19FC3352DD1C834075588941757227AF3B2C7B5923D062A'O + & '51082BFB993C2CAE11A83BF933D2C84BF4675A76F24D0B7ED9B69242F51883EA'O + & 'CEE1B03806AA445F5CDCB61257A26FA4C5E09ABC460A545DF63252F7B26D0E2B'O + & '047F59896BDB9C69F167DA63A53A2C51F7CD9E3CF9E69A43A06FF1983C0600'O; //octets 1920 .. 2046 + + const charstring tsc_AT_ResultOK := "OK"; + const charstring tsc_Fox := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. - 0123456789 - THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'S BACK."; + const charstring tsc_Fox_PDU := "06812222222222" + & "11000A9174097538740000A7a054741914afa7c76b9058febebb41e6371ea4aeb7e173d0db5e9683" + & "e8e832881dd6e741e4f7f9340789c3e3b50bb40cd7cd6537689a2e83926879590e32cac375903d5d" + & "9683c4e578bddc2e83a065b6beec02b540b0986c46abd96eb81ca805a2228ba06835395c8284d2e7" + & "d509323eb12065b5099d829ed6a21444451641cca0360b223e8fa72948181c2e5d"; + const charstring tsc_FoxShort := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. 0123456789 - 153 chars - 134 octets for SMS concatenation."; + + const charstring tsc_CarriageReturnLineFeed := char(0,0,0,13) & char(0,0,0,10); + + const octetstring tsc_Oct1000_0 := int2oct(0, 1000); /* @sic R5s230084 sic@ + @status APPROVED (NR5GC) */ + + //---------------------------------------------------------------------------- + + + /* Verdict control */ + type enumerated VerdictCtrl_Type { + normal, /* verdict assignments as for normal L3 signalling test */ + layer2 /* verdict assignments for layer2 test: FAIL for unexpected events on DRB ports */ + }; + + type enumerated HarqErrorHandling_Type { + ignore, /* ignore HARQ error indications */ + raiseInconc, /* assign INCONC when there is a HARQ error indication */ + allowOneRetransmission /* allow up-to one harq retransmission + @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + //---------------------------------------------------------------------------- + + type integer LineNo_Type; + + /* + * @desc local function + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @return charstring + */ + function fl_FormatLog(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) return charstring + { + var charstring v_LineNoStr := int2str(p_LineNo); + + return p_FileName & ":" & v_LineNoStr & ": " & p_Msg; /* common "UNIX style" format as e.g. used by grep */ + + } + + //---------------------------------------------------------------------------- + /* + * @desc function for common error logging + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_ErrorLog(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + log(fl_FormatLog(p_FileName, p_LineNo, p_Msg)); + }; + + //---------------------------------------------------------------------------- + /* + * @desc common function for verdict assignment + * @param p_Verdict + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_SetVerdict(verdicttype p_Verdict, + charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + var charstring v_OutputLine := fl_FormatLog(p_FileName, p_LineNo, p_Msg); + setverdict(p_Verdict, v_OutputLine); + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functions to be called in case unrecoverable errors + * (i.e. runtimer errors generated by TTCN) + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function FatalError(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + // setverdict(inconc); // setverdict causes problems when FatalError is used in a function called from within a template + f_ErrorLog(p_FileName, p_LineNo, p_Msg); + testcase.stop (p_Msg); // This operation now defined in TTCN3 v4.2.1 + }; + + /* + * @desc set verdict inconc in cases when no pass/fail is possible e.g. due to wrong PICS/PIXIT + * NOTE: as there is no need to evaluate any component specific information ans as "self.kill" can be used to terminate the test case + * (resulting in the final verdict 'inconc') this function is independent from any component and can be call from everywhere where 'setverdict' or 'self.kill' are allowed + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_SetVerdictInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + self.kill; // => test case will be terminated immediately + } + + + + //---------------------------------------------------------------------------- + /* + * @desc Common function to delay the test case for the given time + * @param p_DelayTime + */ + function f_Delay ( float p_DelayTime ) + { + timer t_Delay; + + t_Delay.start ( p_DelayTime ); + t_Delay.timeout; + }; + + //---------------------------------------------------------------------------- + /* + * @desc return index of the first occurance of the given value in the list or -1 if not found + * @param p_IntegerList + * @param p_Val + * @return integer + */ + function f_IntegerList_Search(IntegerList_Type p_IntegerList, + integer p_Val) return integer + { + var integer i; + + for (i:=0; i < lengthof(p_IntegerList); i:= i+1) { + if (p_IntegerList[i] == p_Val) { + return i; + } + } + return -1; /* @sic R5s190465 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc return log2 rounded up to the next integer + * @param p_Val + * @return upperbound(log2(p_Val)) + */ + function f_CeilLog2(integer p_Val) return integer + { + var integer N := 1; + var integer i := 0; + + if (p_Val > 0) { + while (N < p_Val) { + N := N * 2; + i := i + 1; + } + } + return i; + } + + /* + * @desc return log2 rounded down to the next integer + * @param p_Val + * @return lowerbound(log2(p_Val)) + */ + function f_FloorLog2(integer p_Val) return integer + { + return f_CeilLog2(p_Val + 1) - 1; // see e.g. wikipedia + } + + /* + * @desc return Base ^ Exponent + * NOTE: current implementation serves positive integer values only + * @param p_Base + * @param p_Exponent + * @return integer + */ + function f_Power(UInt_Type p_Base, + UInt_Type p_Exponent) return UInt_Type + { + var integer i; + var UInt_Type v_Result := 1; + for (i := 0; i < p_Exponent; i := i + 1) { + v_Result := v_Result * p_Base; + } + return v_Result; + } + + /* + * @desc return float value rounded with tie-breaking away from zero (i.e. x.5 is rounded up for positive values but rounded down for negative values) + * @param p_Float + * @return integer + * @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) + */ + function f_Round(float p_Float) return integer + { + var integer v_Result; + + if (p_Float >= 0.0) { + v_Result := float2int(p_Float + 0.5); + } else { // @sic R5s200469: negative values sic@ + v_Result := float2int(p_Float - 0.5); + } + return v_Result; + } + + //---------------------------------------------------------------------------- + + function f_TemplateInt2Bit(template (present) integer p_Val, + integer p_Length) return template (present) bitstring + { /* Auxiliary function + * note: there is no possibility in TTCN-3 to check whether a template parameter + * which is not a value is "*", "?" or omit + * => we restrict p_Val to "template (present)", i.e it shall be a value or "?" */ + if (isvalue(p_Val)) { + return int2bit(valueof(p_Val), p_Length); + } else { + return ?; + } + } + + function f_TemplateInt2Str(template (present) integer p_Val) return template (present) charstring + { + if (isvalue(p_Val)) { + return int2str(valueof(p_Val)); + } else { + return ?; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc returns index of first occurency of any char of p_CharList in p_String starting from p_StartIndex; + * returns -1 if there is no occurency + * @param p_String + * @param p_CharList + * @param p_StartIndex + * @return integer + */ + function f_StringFindChar(charstring p_String, + Char1List_Type p_CharList, + UInt_Type p_StartIndex := 0) return integer + { + var integer v_NoOfChars := lengthof(p_CharList); + var integer v_Index; + var integer i; + var Char1_Type v_Char; + + if (v_NoOfChars == 0) { + return -1; + } + + for (v_Index:=p_StartIndex; v_Index 0) { + for (i:=0; i < k - 1; i := i+1) { + v_String := v_String & v_StringList[i] & p_JoinString; + } + v_String := v_String & v_StringList[i]; + } + return v_String; + } + + function f_CharStringList_Add(CharStringList_Type p_StringList, + charstring p_NewString) return CharStringList_Type + { + var integer v_Length := lengthof(p_StringList); + var CharStringList_Type v_StringList := p_StringList; + + v_StringList[v_Length] := p_NewString; + return v_StringList; + } + + function f_CharStringList_Remove(CharStringList_Type p_StringList, + template (present) charstring p_Pattern) return CharStringList_Type + { + var CharStringList_Type v_NewList := {}; + var integer k := 0; + var integer i; + + for (i:=0; i < lengthof(p_StringList); i := i+1) { + if (not match(p_StringList[i], p_Pattern)) { + v_NewList[k] := p_StringList[i]; + k := k + 1; + } + } + return v_NewList; + } + + //---------------------------------------------------------------------------- + + function f_ConvertBoolToBit(boolean p_Bool) return B1_Type + { + var B1_Type v_Bit := '0'B; + if (p_Bool) { + v_Bit := '1'B; + } + return v_Bit; + } + + //---------------------------------------------------------------------------- + + function f_ConvertStrToBit(charstring p_Charstring) return bitstring + { + var integer i; + var bitstring v_ReturnBitString := ''B; + + for (i := 0; i 0) { // if not already byte aligned + v_PaddingLength := 8 - (v_BitLength mod 8); + for (i:=0; i < v_PaddingLength; i := i+1) { + v_Bitstring := v_Bitstring & '0'B; + } + } + + return v_Bitstring; + } + + //---------------------------------------------------------------------------- + /* + * @desc function to extract output string from random test pattern of a certain length and at a starting point + * @param p_Start + * @param p_N + * @return octetstring + */ + function f_GetN_OctetsFromPRBS(UInt_Type p_Start, + UInt_Type p_N) + return octetstring + { /* @sic R5s180289: code optimisation sic@ */ + var integer v_LengthOfPRBS := lengthof(tsc_RandomPRBS); + var integer v_Start := p_Start mod v_LengthOfPRBS; + var octetstring v_Noctets := substr(tsc_RandomPRBS, v_Start, v_LengthOfPRBS - v_Start); + + while (lengthof(v_Noctets) < p_N) { + v_Noctets := v_Noctets & tsc_RandomPRBS; + } + v_Noctets := substr(v_Noctets, 0, p_N); + return v_Noctets; + } + + //---------------------------------------------------------------------------- + + type enumerated Gsm7BitPacking_Type { SMS_Packing, CBS_Packing, USSD_Packing }; + + const integer tsc_Gsm7BitLookup[32..126][2] := { /* ASCII to GSM 7 bit char conversion table + Self indexing lookup table per ASCII integer value + 1st field - status + 0 => no change + 1 => basic table - no translation required + 2 => escape to ext table 23.038 6.2.1.1 + 3 => char does not exist in gsm char table + 2nd field - translation integer value per 23.038 6.2.1/6.2.1.1 + range 0-127 & dummy entry 256 */ + { 0, 256 }, // 32 - space - no xlat + { 0, 256 }, // 33 - "!" - no xlat + { 0, 256 }, // 34 - """ - no xlat + { 0, 256 }, // 35 - "#" - no xlat + { 1, 2 }, // 36 - "$" - gsm 23.038 6.2.1 - 02 + { 0, 256 }, // 37 - "%" - no xlat + { 0, 256 }, // 38 - "&" - no xlat + { 0, 256 }, // 39 - "'" - no xlat + { 0, 256 }, // 40 - "(" - no xlat + { 0, 256 }, // 41 - ")" - no xlat + { 0, 256 }, // 42 - "*" - no xlat + { 0, 256 }, // 43 - "+" - no xlat + { 0, 256 }, // 44 - "," - no xlat + { 0, 256 }, // 45 - "-" - no xlat + { 0, 256 }, // 46 - "." - no xlat + { 0, 256 }, // 47 - "/" - no xlat + { 0, 256 }, // 48 - "0" - no xlat + { 0, 256 }, // 49 - "1" - no xlat + { 0, 256 }, // 50 - "2" - no xlat + { 0, 256 }, // 51 - "3" - no xlat + { 0, 256 }, // 52 - "4" - no xlat + { 0, 256 }, // 53 - "5" - no xlat + { 0, 256 }, // 54 - "6" - no xlat + { 0, 256 }, // 55 - "7" - no xlat + { 0, 256 }, // 56 - "8" - no xlat + { 0, 256 }, // 57 - "9" - no xlat + { 0, 256 }, // 58 - ":" - no xlat + { 0, 256 }, // 59 - ";" - no xlat + { 0, 256 }, // 60 - "<" - no xlat + { 0, 256 }, // 61 - "=" - no xlat + { 0, 256 }, // 62 - ">" - no xlat + { 0, 256 }, // 63 - "9" - no xlat + { 1, 0 }, // 64 - "@" - gsm 23.038 6.2.1 - 00 + { 0, 256 }, // 65 - "A" - no xlat + { 0, 256 }, // 66 - "B" - no xlat + { 0, 256 }, // 67 - "C" - no xlat + { 0, 256 }, // 68 - "D" - no xlat + { 0, 256 }, // 69 - "E" - no xlat + { 0, 256 }, // 70 - "F" - no xlat + { 0, 256 }, // 71 - "G" - no xlat + { 0, 256 }, // 72 - "H" - no xlat + { 0, 256 }, // 73 - "I" - no xlat + { 0, 256 }, // 74 - "J" - no xlat + { 0, 256 }, // 75 - "K" - no xlat + { 0, 256 }, // 76 - "L" - no xlat + { 0, 256 }, // 77 - "M" - no xlat + { 0, 256 }, // 78 - "N" - no xlat + { 0, 256 }, // 79 - "0" - no xlat + { 0, 256 }, // 80 - "P" - no xlat + { 0, 256 }, // 81 - "Q" - no xlat + { 0, 256 }, // 82 - "R" - no xlat + { 0, 256 }, // 83 - "S" - no xlat + { 0, 256 }, // 84 - "T" - no xlat + { 0, 256 }, // 85 - "U" - no xlat + { 0, 256 }, // 86 - "V" - no xlat + { 0, 256 }, // 87 - "W" - no xlat + { 0, 256 }, // 88 - "X" - no xlat + { 0, 256 }, // 89 - "Y" - no xlat + { 0, 256 }, // 90 - "Z" - no xlat + { 2, 60 }, // 91 - "[" - gsm 23.038 6.2.1.1 ext. - 3C + { 2, 47 }, // 92 - "\" - gsm 23.038 6.2.1.1 ext. - 2F + { 2, 62 }, // 93 - "]" - gsm 23.038 6.2.1.1 ext. - 3E + { 2, 20 }, // 94 - "^" - gsm 23.038 6.2.1.1 ext. - 14 + { 1, 17 }, // 95 - "_" - gsm 23.038 6.2.1 - 11 + { 3, 256 }, // 96 - "`" - char does not exist in gsm 23.038 6.2.1/6.2.1.1 + { 0, 256 }, // 97 - "a" - no xlat + { 0, 256 }, // 98 - "b" - no xlat + { 0, 256 }, // 99 - "c" - no xlat + { 0, 256 }, // 100 - "d" - no xlat + { 0, 256 }, // 101 - "e" - no xlat + { 0, 256 }, // 102 - "f" - no xlat + { 0, 256 }, // 103 - "g" - no xlat + { 0, 256 }, // 104 - "h" - no xlat + { 0, 256 }, // 105 - "i" - no xlat + { 0, 256 }, // 106 - "j" - no xlat + { 0, 256 }, // 107 - "k" - no xlat + { 0, 256 }, // 108 - "l" - no xlat + { 0, 256 }, // 109 - "m" - no xlat + { 0, 256 }, // 110 - "n" - no xlat + { 0, 256 }, // 111 - "o" - no xlat + { 0, 256 }, // 112 - "p" - no xlat + { 0, 256 }, // 113 - "q" - no xlat + { 0, 256 }, // 114 - "r" - no xlat + { 0, 256 }, // 115 - "s" - no xlat + { 0, 256 }, // 116 - "t" - no xlat + { 0, 256 }, // 117 - "u" - no xlat + { 0, 256 }, // 118 - "v" - no xlat + { 0, 256 }, // 119 - "w" - no xlat + { 0, 256 }, // 120 - "x" - no xlat + { 0, 256 }, // 121 - "y" - no xlat + { 0, 256 }, // 122 - "z" - no xlat + { 2, 40 }, // 123 - "{" - gsm 23.038 6.2.1.1 ext. - 28 + { 2, 64 }, // 124 - "|" - gsm 23.038 6.2.1.1 ext. - 40 + { 2, 41 }, // 125 - "}" - gsm 23.038 6.2.1.1 ext. - 29 + { 2, 61 } // 126 - "~" - gsm 23.038 6.2.1.1 ext. - 3D + }; + + function fl_XlatAcsiiToGsm7Bit(octetstring p_AsciiOctetString) return octetstring + { + var octetstring v_GsmOctetString; + var integer v_XlatStatus; + var integer v_AsciiIndex; + var integer i; + var integer j := 0; + + for (i:=0; i '48616C6C6F'O + var bitstring v_BitString := int2bit(0, p_NumFillbits); // => fill bits are the rightmost bits of the first octet carrying the first (rightmost) bits of the first (leftmost) character of the message + var bitstring v_Padding := ''B; + var integer v_TextLength; + var integer v_BitStringLength := p_NumFillbits; + var integer v_IntValue; + var integer v_NoOfOctets; + var integer v_NoOfPaddingBits; + var integer v_Index; + var integer i; + + // convert ascii table to GSM 7 bit table + v_OctetString := fl_XlatAcsiiToGsm7Bit(v_OctetString); // @sic R5s130103 change 3 sic@ + v_TextLength := lengthof(v_OctetString); + + if (((p_Packing == SMS_Packing) and (v_TextLength > 160)) or // a maximum of 160 characters for SMS (i.e. 140 octets) + ((p_Packing == CBS_Packing) and (v_TextLength > 93)) or // a maximum of 93 characters for CBS (i.e. 82 octets) + ((p_Packing == USSD_Packing) and (v_TextLength > 182))) { // a maximum of 182 characters for USSD (i.e. 160 octets) + FatalError(__FILE__, __LINE__, "input string is too long"); + } + + for (i:=0; i 0) { + if ((p_Packing == USSD_Packing) and (v_NoOfPaddingBits == 7)) { + v_Padding := '0001101'B; // use instead of the @ character; see TS 23.038 cl. 6.1.2.3.1 + } else { + v_Padding := int2bit(0, v_NoOfPaddingBits); // 1..7 padding bits, all 0 + } + } + v_BitString := v_Padding & v_BitString; + + // convert bitstring back to octetstring: the first character is at the end of the bitstring + // => we need to take the octets from the end of the bitstring + v_OctetString := ''O; + for (i:=0; i < v_NoOfOctets; i:=i+1) { + v_Index := (v_NoOfOctets - (i+1)) * 8; // get start index of the next octet + v_OctetString[i] := bit2oct(substr(v_BitString, v_Index, 8)); + } + return v_OctetString; + } + + function f_CharPacking_IA5toBCD(charstring p_ASCII_String) return octetstring + { /* Packed BCD coding with "swaping of nibbles" as required e.g. for encoding of called and calling party numbers in NAS messages (e.g. TS 24.004 cl. 10.5.4.7 and 10.5.4.9); + when the length of the input string is odd 'F' is aded as padding: + "0613454120" -> '6031541402'O - even number of digits + "06134541209" -> '6031541402F9'O - odd number of digits (padding) + "A6134541209" -> error */ + var integer i; + var charstring v_BcdString; + var integer v_Length := lengthof(p_ASCII_String); + var charstring v_ASCII_String := p_ASCII_String; + + // check input string + for (i := 0; i < v_Length; i := i+1) { + if (not match(p_ASCII_String[i], pattern "[0-9]")) { + FatalError(__FILE__, __LINE__, "invalid character for BCD string"); + } + } + + // add padding (if needed) + if (v_Length mod 2 != 0) { + v_ASCII_String := v_ASCII_String & "F"; + } + + // swap digits + for (i := 0; i < v_Length; i := i+2) { + v_BcdString[i] := v_ASCII_String[i+1]; + v_BcdString[i+1] := v_ASCII_String[i]; + } + + return str2oct(v_BcdString); + } + + //---------------------------------------------------------------------------- + + function f_BitstringReplaceMSB(bitstring p_Bitstring, + B1_Type p_NewMSB) return bitstring + { + return replace(p_Bitstring, 0, 1, p_NewMSB); + } + + //---------------------------------------------------------------------------- + + function f_Bitstring_BitIsSet(bitstring p_Bitstring, + integer p_Index) return boolean + { + if (p_Index >= lengthof(p_Bitstring)) { + FatalError(__FILE__, __LINE__, "invalid bit position"); + } + return (substr(p_Bitstring, p_Index, 1) == '1'B); + } + + function f_Bitstring_LeastSignificantBits(bitstring p_Bitstring, + integer p_NoOfBis) return bitstring + { + var integer v_Length := lengthof(p_Bitstring); + if (p_NoOfBis > v_Length) { + FatalError(__FILE__, __LINE__, "invalid length"); + } + return substr(p_Bitstring, v_Length - p_NoOfBis, p_NoOfBis); + } + + function f_BitstringTemplate_SetBit(template (present) bitstring p_Bitstring, + integer p_Position, + template (present) B1_Type p_Bit) return template (present) bitstring + { /* ES 201 873-1 clause 15.6.1 does not allow index notation */ + /* p_Bitstring needs to be a bitstring with well-defined length (i.e. allowing lengthof(p_Bitstring)) */ + var template (present) bitstring v_Substring1; + var template (present) bitstring v_Substring2; + var integer v_Length := lengthof(p_Bitstring); + + if (p_Position >= v_Length) { + FatalError(__FILE__, __LINE__, "out of range"); + } + v_Substring1 := substr(p_Bitstring, 0, p_Position); + v_Substring2 := substr(p_Bitstring, p_Position + 1, v_Length - p_Position - 1); + + return v_Substring1 & p_Bit & v_Substring2; + } + + //---------------------------------------------------------------------------- + // Moved here because now needed in Authentication_Init (i.e. GERAN and UTRAN PTCs too) + const integer tsc_KDF_HMAC_SHA_256 := 1; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const integer tsc_KDF_Spare3 := 4; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type integer KDF_Type ( tsc_KDF_HMAC_SHA_256 .. tsc_KDF_Spare3 ); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT, POS, UTRAN) */ + + external function fx_KeyDerivationFunction(KDF_Type p_KDF, + bitstring p_Key, //@sic R5-155058 sic@ + octetstring p_String) return B256_Type; + /* External function to hashing function with algorithm as defined in 33.401; + SHA-256 encoding algorithm used as KEY Description Function + @status APPROVED (LTE) */ + + external function fx_CalculateFCS32 (bitstring p_TMSI) return B32_Type; /* Cyclic Redundancy Check calculation according to ITU-T Recommendation V.42 of CRC-32 Algorithm @sic R5-172046 sic@ */ + + //---------------------------------------------------------------------------- + /* system time acc. to default C library (see time.h) */ + + type record Struct_tm_Type { /* TTCN-3 equivalent for the "struct tm" as defined on C standard library (time.h or ctime.h for C or C++) */ + integer tm_sec, /* seconds after the minute 0..61 (tm_sec is generally 0-59. Extra range to accommodate for leap seconds in certain systems) */ + integer tm_min, /* minutes after the hour 0..59 */ + integer tm_hour, /* hours since midnight 0..23 */ + integer tm_mday, /* day of the month 1..31 */ + integer tm_mon, /* months since January 0..11 */ + integer tm_year, /* years since 1900 */ + integer tm_wday, /* days since Sunday 0..6 */ + integer tm_yday, /* days since January 1 0..365 */ + integer tm_isdst /* Daylight Saving Time flag */ + }; + + external function fx_GetSystemTime(out Struct_tm_Type p_Struct_tm, /* p_Struct_tm returns local system time; + * C implementation: + * time_t v_Now = time(NULL); + * struct tm *v_Tm = localtime(&v_Now); + */ + out integer p_TimezoneInfo); /* p_TimezoneInfo returns the difference (in seconds) between the UTC time (GMT) and the local time; + * C implementation: + * int timezone = (int)difftime(mktime(gmtime(&v_Now)), v_Now); + * NOTE: p_TimezoneInfo does not consider daylight saving e.g. it is always 3600 for CET independent of summer/winter + */ + + + + + + //---------------------------------------------------------------------------- + /* + * @desc returns integer formated as "%02d" + * @param p_Value + * @return charstring + * @status APPROVED (IMS) + */ + function fl_FormatIntegerAsTwoDigits(UInt_Type p_Value) return charstring + { + var UInt_Type v_Value := p_Value mod 100; + var charstring v_String := int2str(v_Value); + + if (v_Value < 10) { + v_String := "0" & v_String; + } + return v_String; + } + + /* + * @desc return HTTP Date/Time formatted according to RFC 2616 cl. 3.3.1 and RFC 822 cl. 5.1 (obsoleted by RFC 2822, obsoleted by RFC 5322) + * @param p_LocalTime + * @param p_TimezoneSeconds + * @return charstring + * @status APPROVED (IMS) + */ + function f_HTTP_FormatHttpDate(Struct_tm_Type p_LocalTime, + integer p_TimezoneSeconds) return charstring + { + const CharStringList_Type tsc_Month := { "Jan", "Feb","Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + const CharStringList_Type tsc_WDay := { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }; + var charstring v_Year := int2str(p_LocalTime.tm_year + 1900); + var charstring v_Month := tsc_Month[p_LocalTime.tm_mon]; + var charstring v_WDay := tsc_WDay[p_LocalTime.tm_wday]; + var charstring v_MDay := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_mday); + var charstring v_Hour := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_hour); + var charstring v_Minute := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_min); + var charstring v_Second := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_sec); + var integer v_TimezoneSeconds := p_TimezoneSeconds; + var charstring v_TimezoneSign; + var charstring v_TimezoneHours; + var charstring v_TimezoneMinutes; + + if (p_LocalTime.tm_isdst > 0) { // see f_BCD_TimestampWithTimezone + v_TimezoneSeconds := v_TimezoneSeconds + 3600; + } + if (v_TimezoneSeconds < 0) { + v_TimezoneSeconds := -v_TimezoneSeconds; + v_TimezoneSign := "-"; + } else { + v_TimezoneSign := "+"; + } + v_TimezoneHours := fl_FormatIntegerAsTwoDigits(v_TimezoneSeconds / 3600); + v_TimezoneMinutes := fl_FormatIntegerAsTwoDigits((v_TimezoneSeconds mod 3600) / 60); + + return v_WDay & ", " & v_MDay & " " & v_Month & " " & v_Year & " " & v_Hour & ":" & v_Minute & ":" & v_Second & " " & v_TimezoneSign & v_TimezoneHours & v_TimezoneMinutes; + } + + //---------------------------------------------------------------------------- + /* + * @desc format date and time acc. to UTC + * @param p_LocalTime + * @param p_TimezoneSeconds (default value: omit) + * @return charstring + * @status APPROVED (IMS) + */ + function f_UTC_FormatDateTime(Struct_tm_Type p_LocalTime, + template (omit) integer p_TimezoneSeconds := omit) return charstring + { + var charstring v_Year := int2str(p_LocalTime.tm_year + 1900); + var charstring v_Month := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_mon + 1); // @sic R5s201156: p_LocalTime.tm_mon + 1 sic@ + var charstring v_MDay := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_mday); + var charstring v_Hour := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_hour); + var charstring v_Minute := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_min); + var charstring v_Second := fl_FormatIntegerAsTwoDigits(p_LocalTime.tm_sec); + var charstring v_Timezone := ""; + var charstring v_Sign; + var integer v_TimezoneSeconds; + var integer v_TimezoneMinutes; + + if (isvalue(p_TimezoneSeconds)) { // @sic R5s201156 sic@ + v_TimezoneSeconds := valueof(p_TimezoneSeconds); + if (v_TimezoneSeconds > 0) { + v_Sign := "-"; + } else { + v_Sign := "+"; + v_TimezoneSeconds := - v_TimezoneSeconds; + } + v_TimezoneMinutes := v_TimezoneSeconds / 60; + v_Timezone := v_Sign & fl_FormatIntegerAsTwoDigits(v_TimezoneMinutes / 60) & ":" & fl_FormatIntegerAsTwoDigits(v_TimezoneMinutes mod 60); + } + return v_Year & "-" & v_Month & "-" & v_MDay & "T" & v_Hour & ":" & v_Minute & ":" & v_Second & v_Timezone; + } + + /* + * @desc return timestamp (current system time) according to ISO 8601 + * @return charstring + */ + function f_UTC_Timestamp() return charstring + { + var Struct_tm_Type v_LocalTime; + var integer v_TimezoneSeconds; + + fx_GetSystemTime(v_LocalTime, v_TimezoneSeconds); + return f_UTC_FormatDateTime(v_LocalTime, v_TimezoneSeconds); + } + + /* + * @desc auxiliary function for f_BCD_TimestampWithTimezone + * @param p_Val + * @return H2_Type + */ + function f_SwappedNibbles(integer p_Val) return H2_Type + { + var integer v_LowNibble := p_Val mod 10; + var integer v_HighNibble := (p_Val / 10) mod 10; + + return int2hex(v_LowNibble, 1) & int2hex(v_HighNibble, 1); + } + + /* + * @desc returns the timestamp as e.g. used as ServiceCentreTimeStamp for SMS with current time + * (see e.g. calculation of the TP Service Centre Time Stamp acc. to TS 23.040 cl. 9.2.3.11) + * Example: + * 2002 April 18, 15:32:46, timezone=4 + * f_BCD_TimestampWithTimezone returns 20408151236440 + * @return H14_Type + */ + function f_BCD_TimestampWithTimezone() return H14_Type + { /* @sic R5-1307270: common function to provide timestamp for MDT test cases too sic@ */ + var Struct_tm_Type v_LocalTime; + var integer v_TimezoneSeconds; + var integer v_TimezoneVal; + var integer v_SignVal := 0; // positive value per default + var H2_Type v_Year; + var H2_Type v_Month; + var H2_Type v_Day; + var H2_Type v_Hour; + var H2_Type v_Minute; + var H2_Type v_Second; + var H2_Type v_Timezone; + + fx_GetSystemTime(v_LocalTime, v_TimezoneSeconds); + + v_Year := f_SwappedNibbles(v_LocalTime.tm_year + 1900); /* acc. to definition of struct tm */ + v_Month := f_SwappedNibbles(v_LocalTime.tm_mon + 1); /* acc. to definition of struct tm */ + v_Day := f_SwappedNibbles(v_LocalTime.tm_mday); + v_Hour := f_SwappedNibbles(v_LocalTime.tm_hour); + v_Minute := f_SwappedNibbles(v_LocalTime.tm_min mod 60); /* v_LocalTime.tm_min can be 0..61 on some systems */ + v_Second := f_SwappedNibbles(v_LocalTime.tm_sec); + + /* Calculation of the timezone (-> 23.040): */ + if (v_LocalTime.tm_isdst > 0) { /* The value contained in the Time Zone field must take into account daylight saving time, such that when the sending entity changes from regular + (winter) time to daylight saving (summer) time, there is a change to the value in the Time Zone field, + for example in the UK the winter setting is 00000000 and the summer setting is 01000000. */ + v_TimezoneSeconds := v_TimezoneSeconds + 3600; + } + + if (v_TimezoneSeconds < 0) { + v_TimezoneSeconds := -v_TimezoneSeconds; + v_SignVal := 128; /* In the first of the two semi octets, the first bit (bit 3 of the seventh octet of the TP Service Centre Time Stamp field) + represents the algebraic sign of this difference (0: positive, 1: negative) */ + } + v_TimezoneVal := v_TimezoneSeconds / (60 * 15); /* The Time Zone indicates the difference, expressed in quarters of an hour, between the local time and GMT. */ + v_TimezoneVal := v_TimezoneVal mod 128; /* ... just to be sure */ + v_TimezoneVal := v_TimezoneVal + v_SignVal; /* set the upper bit */ + + v_Timezone := f_SwappedNibbles(v_TimezoneVal); + + return v_Year & v_Month & v_Day & v_Hour & v_Minute & v_Second & v_Timezone; + } + + /* + * @desc wrapper function to strip the timezone (e.g. for 'AbsoluteTimeInfo' acc. to 36.331 cl. 6.3.6) + * @return H12_Type + * @status + */ + function f_BCD_TimestampWithoutTimezone() return H12_Type + { + var H14_Type v_TimestampWithTimezone := f_BCD_TimestampWithTimezone(); + return substr(v_TimestampWithTimezone, 0, 12); + } + + /* + * @desc wrapper function to convert f_BCD_TimestampWithoutTimezone() to bitstring as needed for MDT + * @return B48_Type + * @status + */ + + function f_MDT_GetAbsolute_TimeStamp() return B48_Type + { + return hex2bit(f_BCD_TimestampWithoutTimezone()); + } + + //---------------------------------------------------------------------------- + /* + * @desc similar to mktime but considering the "TimezoneInfo" as e.g. returned by fx_GetSystemTime + * @param p_TM + * @param p_TimezoneDelta + * @return integer + * @status APPROVED (MCX) + */ + function f_UTC_MKTime(Struct_tm_Type p_TM, + integer p_TimezoneDelta) return integer + { + var integer v_Seconds; + var integer v_MonthsSinceJanuary; + var integer v_CurrentMonth; + var integer v_Days := 0; + var boolean v_CurrentYearIsLeapYear := false; + + if (p_TM.tm_year > 0) { // 1900 has been no leap year in contrast to 2000, 2100 and beyond not considered + v_CurrentYearIsLeapYear := ((p_TM.tm_year mod 4) == 0); + v_Days := p_TM.tm_year * 365; + v_Days := v_Days + ((p_TM.tm_year - 1) / 4); // every 4th year is a leap year; current year is considered in the calculation for the month + } + + for (v_MonthsSinceJanuary := 0; v_MonthsSinceJanuary < p_TM.tm_mon; v_MonthsSinceJanuary := v_MonthsSinceJanuary + 1) { + v_CurrentMonth := v_MonthsSinceJanuary + 1; + select (v_CurrentMonth) { + case (2) { + v_Days := v_Days + 28; + if (v_CurrentYearIsLeapYear) { + v_Days := v_Days + 1; + } + } + case (4, 6, 9, 11) { + v_Days := v_Days + 30; + } + case else { + v_Days := v_Days + 31; + } + } + } + v_Days := v_Days + (p_TM.tm_mday - 1); // "-1" as tm_mday is 1..31 + v_Seconds := (((((v_Days * 24) + p_TM.tm_hour) * 60) + p_TM.tm_min) * 60) + p_TM.tm_sec + p_TimezoneDelta; + if (p_TM.tm_isdst > 0) { + v_Seconds := v_Seconds - 3600; + } + return v_Seconds; + } + + /* + * @desc Return the upper part of the NTP timestamp acc. to RFC 958 (i.e. the seconds since january 1st 1900 UTC) + * @return integer + * @status APPROVED (MCX) + */ + function f_UTC_TimestampSeconds() return integer + { + var Struct_tm_Type v_TM; + var integer v_TimezoneDelta; + + fx_GetSystemTime(v_TM, v_TimezoneDelta); + + return f_UTC_MKTime(v_TM, v_TimezoneDelta); + } + + /* + * @desc seconds since 00:00:00 UTC on 1 January 1970 UTC (GMT) + * @return integer + * @status APPROVED (MCX) + */ + function f_UnixEpoch_TimestampSeconds() return integer + { + return f_UTC_TimestampSeconds() - 2208988800; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert UTRAN cell ID acc to 34.123-3 clause 8.5 + * @param p_CellId - enumerated type + * @return integer + * @status + */ + function f_UtranCellId2Int(UTRAN_CellId_Type p_CellId) return integer + { // @sic R5s130195 Baseline moving to rel-11: UTRAN cellID enhanced sic@ + var integer v_CellId := enum2int(p_CellId); + + // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + if (v_CellId >= 2000) { + v_CellId := v_CellId - 2000; + } else if (v_CellId >= 1000) { + v_CellId := v_CellId - 1000; + } + return v_CellId; + } + + //---------------------------------------------------------------------------- + /* + * @desc check that the result string starts with specific sub-string + * @param p_SourceString + * @param p_StartString + * @return boolean + */ + function f_CheckStringStartWith(charstring p_SourceString, + charstring p_StartString) + return boolean + { + var integer v_Length := lengthof(p_StartString); + var charstring v_SubStr; + var boolean v_Result := false; + + if (v_Length <= lengthof(p_SourceString)) { + v_SubStr := substr(p_SourceString, 0, v_Length); + v_Result := (v_SubStr == p_StartString); + } + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Return TRUE if the band is an FDD band or false otherwise + * If the band indication is a placeholder for an ext. band (maxFBI=64) this means as well an FDD band + * as all ext. bands are FDD bands + * @param p_FrequencyBand + * @return boolean + */ + function f_EUTRA_FrequencyBandIsFDD(integer p_FrequencyBand) return boolean + { //@sic R5s160134 sic@ + return (p_FrequencyBand < 33 or p_FrequencyBand >= 64); //@sic R5-162796, R5-193997 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc calculation of DRB_Identity associated to EpsBearerId + * @param p_EpsBearerId + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, POS) + */ + function f_EUTRA_NB_EpsBearerAssociatedDRB(HalfOctet_Type p_EpsBearerId) return integer + { /* @sic R5s141351 change 5: returns integer instead of DRB_Identity sic@ */ + return (hex2int(p_EpsBearerId) - 4); + } + + //---------------------------------------------------------------------------- + /* + * @desc return value for given name from Name-Value list or omit if there is no entry for the given name + * @param p_NameValueList + * @param p_Name + * @return charstring + */ + function f_NameValueList_Get(NameValueList_Type p_NameValueList, + charstring p_Name) return template (omit) charstring + { + var integer i; + + for (i := 0; i < lengthof(p_NameValueList); i := i + 1) { + if (p_NameValueList[i].Name == p_Name) { + return p_NameValueList[i].Value; + } + } + return omit; + } +} diff --git a/ttcn/Lib3GPP/Common/module.mk b/ttcn/Lib3GPP/Common/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..52891f8dd9dd3a4bbd8c4fec2bd430705a812694 --- /dev/null +++ b/ttcn/Lib3GPP/Common/module.mk @@ -0,0 +1,6 @@ +sources := \ + CommonDefs.ttcn + + +modules :=\ + diff --git a/ttcn/Lib3GPP/Common4G5G/Common4G5G.ttcn b/ttcn/Lib3GPP/Common4G5G/Common4G5G.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e41aafff27fbe45b037f667a39a8cc4666252c67 --- /dev/null +++ b/ttcn/Lib3GPP/Common4G5G/Common4G5G.ttcn @@ -0,0 +1,394 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-08-28 14:15:56 +0200 (Mon, 28 Aug 2023) $ +// $Rev: 36572 $ +/******************************************************************************/ + +module Common4G5G { + + import from CommonDefs all; + + type enumerated NR_Configuration_Type { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + NR_SA, // Option 2 + EN_DC, // Option 3 + NE_DC, // Option 4 + NGE_SA, // Option 5 + NGEN_DC // Option 7 + }; + + type enumerated NR_TESTMODE_STATE_Type {TESTMode_OFF, TESTModeA_ON, TEST_LOOPModeA_ON, PING_Or_TESTModeB_ON, TESTModeB_ON, TEST_LOOPModeB_ON, PING_Or_TEST_LOOPModeB_ON, TESTModeE_ON, TEST_LOOPModeE_ON}; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + + // Options for Connectivity (E-UTRA/EPC) and parameter Unrestricted nr PDN is set to Off + type ENDC_DRB_Configuration_Type ENDC_Bearer_Type (MCG_SCG, MCG_Split, MCG_Only); /* @status APPROVED (ENDC) */ + + type enumerated NEDC_DRB_Configuration_Type { MCG_SCG, //MCG configured with SRB1/SRB2/Default MCG DRB(s) + SCG DRB configured SN terminated (secured with Secondary keys) + MCG_Split, //MCG configured with SRB1/SRB2/Default MCG DRB(s) + split SCG DRB configured SN terminated (secured with Secondary keys) + MCG_SCG_MNTerminated, //MCG configured with SRB1/SRB2/Default MCG DRB(s) + SCG DRB configured MN terminated (secured with Master keys) + MCG_Split_MNTerminated, //MCG configured with SRB1/SRB2/Default MCG DRB(s) + split SCG DRB configured MN terminated (secured with Master keys) + MCG_SCG_OnNR, //MCG configured with SRB1/SRB2/Default MCG DRB(s) + SCG DRB configured on NR but secured with secondary keys + MCG_SplitOnNR //MCG configured with SRB1/SRB2/Default MCG DRB(s) + split SCG DRB configured on NR, secured with Secondary keys + }; + + + type enumerated NR_TestEnvironment_Type { Conducted, OTA }; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + + type enumerated ENDC_DRB_Configuration_Type { /* @status APPROVED (ENDC) */ + MCG_Only, // Connectivity (E-UTRA/EPC) when Unrestricted nr PDN is set to Off and SCG is not (yet) configured @sic R5-213443 sic@ + MCG_SCG, + MCG_Split, + RBConfig_Only, // when only RadioBearer is modified in Reconfig msg + SCG_RBConfig, // when both CellGroupConfig and RadioBearer is modified in Reconfig msg (but not for default condition MCG_SCG) + Meas_SCGOnly // when only MeasConfig or CellGroupConfig is modified in Reconfig msg + }; + + type enumerated ENDC_SRB_DRB_Configuration_Type { /* @status APPROVED (ENDC) */ + NONE, + NR_PDCP_MCG, + NR_PDCP_SRB1_2, + NR_PDCP_MCG_SRB1_2, // Used in L2 ciphering test case + NR_PDCP_SRB1_2_SRB3, // Used in L2 integrity test case + SRB3 + }; + + type enumerated ENDC_BandCombination_Type { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + //@sic R5-194369 R5-194370 R5-197106 R5-198959 R5-200921 R5-201061 R5-203634 R5-204800 R5-205771 R5-206715 R5-2182699 R5-218268 R5-220311, R5-220374, R5-221186 R5-223126 R5-225310 R5-227700 R5-230093 sic@ + //@sic R5-230897 R5-231793 sic@ + // Acc to38.508-1 Table 4.3.1.4.1.2-1: Inter-band EN-DC configurations within FR1 (two bands) + DC_1A_n3A, + DC_1A_n5A, + DC_1A_n7A, + DC_1A_n28A, + DC_1A_n41A, + DC_1A_n77A, + DC_1A_n78A, + DC_1A_n79A, + DC_2A_n5A, + DC_2A_n41A, + DC_2A_n48A, + DC_2A_n66A, + DC_2A_n71A, + DC_2A_n77A, + DC_2A_n78A, + DC_3A_n1A, + DC_3A_n5A, + DC_3A_n7A, + DC_3A_n28A, + DC_3A_n41A, + DC_3A_n77A, + DC_3A_n78A, + DC_3A_n79A, + DC_5A_n2A, + DC_5A_n66A, + DC_5A_n77A, + DC_5A_n78A, + DC_7A_n1A, + DC_7A_n3A, + DC_7A_n5A, + DC_7A_n28A, + DC_7A_n66A, + DC_7A_n78A, + DC_8A_n1A, + DC_8A_n3A, + DC_8A_n20A, + DC_8A_n41A, + DC_8A_n77A, + DC_8A_n78A, + DC_11A_n77A, + DC_11A_n78A, + DC_11A_n79A, + DC_12A_n2A, + DC_12A_n5A, + DC_12A_n66A, + DC_12A_n78A, + DC_13A_n2A, + DC_13A_n66A, + DC_13A_n77A, + DC_14A_n2A, + DC_14A_n66A, + DC_18A_n77A, + DC_18A_n78A, + DC_18A_n79A, + DC_19A_n1A, + DC_19A_n77A, + DC_19A_n78A, + DC_19A_n79A, + DC_20A_n1A, + DC_20A_n3A, + DC_20A_n7A, + DC_20A_n8A, + DC_20A_n28A, + DC_20A_n78A, + DC_21A_n1A, + DC_21A_n28A, + DC_21A_n77A, + DC_21A_n78A, + DC_21A_n79A, + DC_25A_n41A, + DC_26A_n41A, + DC_26A_n77A, + DC_26A_n78A, + DC_26A_n79A, + DC_28A_n3A, + DC_28A_n5A, + DC_28A_n7A, + DC_28A_n77A, + DC_28A_n78A, + DC_28A_n79A, + DC_30A_n5A, + DC_30A_n66A, + DC_38A_n78A, + DC_39A_n41A, + DC_39A_n79A, + DC_40A_n1A, + DC_40A_n41A, + DC_40A_n78A, + DC_40A_n79A, + DC_41A_n28A, + DC_41A_n77A, + DC_41A_n78A, + DC_41A_n79A, + DC_42A_n1A, + DC_42A_n77A, + DC_42A_n78A, + DC_42A_n79A, + DC_48A_n5A, + DC_48A_n66A, + DC_66A_n2A, + DC_66A_n41A, + DC_66A_n5A, + DC_66A_n71A, + DC_66A_n77A, + DC_66A_n78A, + DC_71A_n2A, + DC_71A_n66A, + //ACc to 38.508-1 Table 4.3.1.5.1.2-1: Inter-band EN-DC configurations including FR2 (two bands) + DC_1A_n257A, + DC_2A_n257A, + DC_2A_n260A, + DC_3A_n257A, + DC_5A_n257A, + DC_5A_n260A, + DC_5A_n261A, + DC_7A_n257A, + DC_8A_n257A, + DC_8A_n258A, + DC_11A_n257A, + DC_12A_n260A, + DC_13A_n257A, + DC_13A_n260A, + DC_14A_n260A, + DC_18A_n257A, + DC_19A_n257A, + DC_20A_n257A, + DC_21A_n257A, + DC_28A_n257A, + DC_30A_n260A, + DC_41A_n257A, + DC_42A_n257A, + DC_48A_n260A, + DC_66A_n257A, + DC_66A_n260A, + DC_66A_n261A, + //Acc to 38.508-1 Table 6.2.3.2.2-1: Test frequencies for EN-DC Intra-band Contiguous configurations with E-UTRA 1CC and NR 1CC + DC_n41AA, + DC_n71AA, + //Acc to 38.508-1 Table 6.2.3.2.2-2: Test frequencies for EN-DC Intra-Band Non-Contiguous configurations with E-UTRA 1CC and NR 1CC + DC_41A_n41A + }; + + type enumerated ENDC_CombinationType_Type {InterBand, IntraBandContiguous, IntraBandNonContiguous}; /* @status APPROVED (ENDC, NR5GC_IRAT) */ + + type enumerated ENDC_CA_BandCombination_Type { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + //@sic R5-201020 R5s200626 R5-211034 R5-215969 R5-218269 R5-220974 R5-223649 R5-234689 sic@ + //Acc to 38.508-1 Table 4.3.1.4.1.3-1: Inter-band EN-DC configurations within FR1 (three bands) + DC_1A_n28A_n78A, + DC_1A_n78A_n79A, + DC_1A_n78A_n257A, + DC_1A_n79A_n257A, + DC_3A_n28A_n78A, + DC_3A_n78A_n79A, + DC_7A_n5A_n78A, + DC_3A_n78A_n257A, + DC_3A_n79A_n257A, + DC_7A_n28A_n78A, + DC_19A_n78A_n79A, + //Acc to 38.508-1 Table 4.3.1.6.1.2-1: Inter-band EN-DC including FR1 and FR2 (three bands) + DC_19A_n78A_n257A, + DC_19A_n79A_n257A, + DC_20A_n28A_n78A, + DC_21A_n78A_n79A, + DC_28A_n7A_n78A, + //Acc to 38.508-1 Table 4.3.1.4.1.2-1: Inter-band EN-DC configurations within FR1 (two bands) + DC_1A_n78C, + DC_3A_n78C, + DC_5A_n78C, + DC_8A_n77_2A, + DC_19A_n78_2A, + DC_19A_n78C, + DC_21A_n78_2A, + DC_21A_n78C, + DC_28A_n78C, + DC_42A_n78C, + //Acc to 38.508-1 Table 4.3.1.5.1.2-1: Inter-band EN-DC configurations including FR2 (two bands) + DC_1A_n257G, + DC_2A_n260G, + DC_3A_n257G, + DC_5A_n260G, + DC_5A_n261G, + DC_5A_n261_2A, + DC_8A_n257G, + DC_12A_n260G, + DC_14A_n260G, + DC_19A_n257G, + DC_21A_n257G, + DC_30A_n260G, + DC_66A_n260G, + DC_66A_n261G, + DC_66A_n261_2A + } + + + type enumerated NR_CA_BandCombination_Type { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + //@sic R5-200597 R5-200921 R5-203056 R5-206306 R5-214019 R5-212986 R5-214853 R5-214727 R5-214929 R5-215970 R5-2159771 R5-217259 R5-217587 R5-217588 R5-218267 R5-220206 R5-220271 R5-220860 R5-220861 R5-220862 R5-221176 R5-221389 R5-221871 R5-222175 R5-222572 R5-223025 R5-223067 R5-223197 R5-223650 R5-223072 R5-226366 R5-226400 R5-227700 R5-227275 R5-231227 R5-231634 R5-232654 R5-232790 R5-233944 R5-234295 R5-234447 R5-235414 sic@ + //Acc to 38.508-1 Table 4.3.1.1.2.1-1: Inter-band NR CA configurations (FR1, two bands) + CA_n1A_n3A, + CA_n1A_n8A, + CA_n1A_n77A, + CA_n1A_n78A, + CA_n1A_n79A, + CA_n2A_n5A, + CA_n2A_n14A, + CA_n2A_n48A, + CA_n2A_n66A, + CA_n2A_n77A, + CA_n3A_n5A, + CA_n3A_n8A, + CA_n3A_n41A, + CA_n3A_n77A, + CA_n3A_n78A, + CA_n5A_n7A, + CA_n5A_n48A, + CA_n5A_n66A, + CA_n5A_n77A, + CA_n5A_n78A, + CA_n7A_n78A, + CA_n8A_n78A, + CA_n14A_n30A, + CA_n14A_n66A, + CA_n14A_n77A, + CA_n20A_n78A, + CA_n24A_n41A, + CA_n24A_n48A, + CA_n24A_n77A, + CA_n26A_n66A, + CA_n26A_n70A, + CA_n28A_n41A, + CA_n28A_n77A, + CA_n28A_n78A, + CA_n28A_n79A, + CA_n29A_n66A, + CA_n29A_n70A, + CA_n29A_n71A, + CA_n39A_n41A, + CA_n41A_n66A, + CA_n41A_n71A, + CA_n41A_n79A, + CA_n48A_n66A, + CA_n48A_n70A, + CA_n48A_n71A, + CA_n48A_n77A, + CA_n66A_n70A, + CA_n66A_n71A, + CA_n66A_n77A, + CA_n70A_n71A, + CA_n71A_n77A, + CA_n77A_n79A, + CA_n78A_n79A, + //Acc to 38.508-1 Table 4.3.1.6.1.2-1: Inter-band EN-DC including FR1 and FR2 (three bands) + CA_n78A_n257A, + CA_n79A_n257A, + //Acc to 38.508-1 Table 4.3.1.3.2.1-1: NR-CA configurations between FR1 and FR2 (two bands) + CA_n1A_n258A, + //Acc to 38.508-1 Table 4.3.1.2.2-1: NR inter-band CA configurations in FR2 + CA_n260A_n261A, + //Acc to 38.508-1 Table 6.2.3.4-1: Test frequencies for NR CA Intra-band Contiguous configurations with FR1 + CA_n41C, + CA_n48B, + CA_n66B, + CA_n77C, + CA_n78C, + //Acc to 38.508-1 Table 6.2.3.4-2: Test frequencies for NR CA Intra-band Contiguous configurations with FR2 + CA_n257G, + CA_n258G, + CA_n260G, + CA_n261G, + //Acc to 38.508-1 Table 6.2.3.4-3: Test frequencies for NR CA Intra-Band Non-Contiguous configurations with FR1 + CA_n48_2A, + CA_n66_2A, + CA_n71_2A, + CA_n77_2A, + CA_n78_2A, + //Acc to 38.508-1 Table 6.2.3.4-4: Test frequencies for NR CA Intra-Band Non-Contiguous configurations with FR2 + CA_n261_2A + }; + + type enumerated NR_CA_3CC_BandCombination_Type { + // Acc to 38.508-1 Table 6.2.3.4-2a: Test frequencies for NR CA Intra-band Contiguous configurations with FR2 (3CC) + //@sic R5-225367 sic@ + CA_n257H, + CA_n258H, + CA_n260H, + CA_n261H + }; + + type enumerated NR_DC_BandCombination_Type { + /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + //@sic R5-215971 R5-223650 R5-223755 sic@ + //Acc to 38.508-1 Table 4.3.1.1.2.1-1: Inter-band NR CA configurations (FR1, two bands) + DC_n1A_n258A, + DC_n77A_n261A, + DC_n78A_n257A, + DC_n78A_n258A, + DC_n79A_n257A, + //Acc to 38.508-1 cl 4.3.1.1.7.1 NR inter-band NR-DC configurations in FR1 (two bands) + DC_n48A_n70A + }; + + type enumerated NR_DC_CA_BandCombination_Type { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + //Acc to 38.508-1 clause 4.3.1.3.2.1 + DC_n1A_n258G, + DC_n77A_n261G, + DC_n78A_n257G, + DC_n78A_n258G, + DC_n79A_n257G + }; + + type enumerated NEDC_CombinationType_Type { InterBand }; + + type record EUTRA_NR_PduSessionInfo_Type /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + { + integer PDU_SessionId, + integer EPS_Bearer, // @sic R5s201094 sic@ + integer QFI optional, // @sic R5s220883 sic@ + PDN_Index_Type PdnIndex, + boolean IsIMS + }; + + type enumerated NEDC_BandCombination_Type { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + /* @sic R5-221872 sic@ */ + DC_n28A_3A, + DC_n28A_39A + }; + + type record of EUTRA_NR_PduSessionInfo_Type EUTRA_NR_PduSessionInfoList_Type; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + + type enumerated NR_V2X_ConcurrentOperationBandCombination_Type { + //Acc to 38.508-1 Table 4.3.1.8.2.1-1: Test frequencies for Inter-band concurrent NR sidelink operating bands + V2X_n71_n47 + }; +} diff --git a/ttcn/Lib3GPP/Common4G5G/Common4G5G_LoopBack.ttcn b/ttcn/Lib3GPP/Common4G5G/Common4G5G_LoopBack.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..534e975c93a77d33c2f47a1c9a66c82451be2fb7 --- /dev/null +++ b/ttcn/Lib3GPP/Common4G5G/Common4G5G_LoopBack.ttcn @@ -0,0 +1,174 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-12-07 16:03:11 +0100 (Wed, 07 Dec 2022) $ +// $Rev: 35058 $ +/******************************************************************************/ +module Common4G5G_LoopBack { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_LoopBack_TypeDefs all; + import from NAS_CommonTemplates all; + + //---------------------------------------------------------------------------- + // Constant definitions Elements (36.509) + //---------------------------------------------------------------------------- + + // Message Type definitions from 36.509 clause 6.X + const MessageType tsc_MsgType_CloseUE_TestLoop := oct2bit ('80'O); /* @status APPROVED (ENDC, IMS, LTE, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MsgType_CloseUE_TestLoopCmpl := oct2bit ('81'O); /* @status APPROVED (ENDC, IMS, LTE, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MsgType_OpenUE_TestLoop := oct2bit ('82'O); /* @status APPROVED (ENDC, LTE, NBIOT, NR5GC) */ + const MessageType tsc_MsgType_OpenUE_TestLoopCmpl := oct2bit ('83'O); /* @status APPROVED (ENDC, LTE, NBIOT, NR5GC) */ + const MessageType tsc_MsgType_Activate_TestMode := oct2bit ('84'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MsgType_Activate_TestModeCmpl := oct2bit ('85'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MsgType_Deactivate_TestMode := oct2bit ('86'O); /* @status APPROVED (ENDC, LTE, LTE_A_PRO, NBIOT, NR5GC) */ + const MessageType tsc_MsgType_Deactivate_TestModeCmpl := oct2bit ('87'O); /* @status APPROVED (ENDC, LTE, LTE_A_PRO, NBIOT, NR5GC) */ + const MessageType tsc_MsgType_SetULMsgReq := '10101100'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MsgType_SetULMsgResp := '10101101'B; /* @status APPROVED (NR5GC) */ + + + const UE_TestLoopMode_Type tsc_UE_TestLoopMode_TypeA := '00'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const UE_TestLoopMode_Type tsc_UE_TestLoopMode_TypeB := '01'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const UE_TestLoopMode_Type tsc_UE_TestLoopMode_TypeE := '04'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) */ + const SkipIndicator tsc_Gen_SkipIndicator := '0000'B; /* Skip Indicator field consists of latter half byte + after Protocol discriminator field. + Its value is '0000'B in all the messages. + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const ProtocolDiscriminator tsc_LB_ProtocolDiscriminator := '1111'B; /* Protocol descriminator for test procedures + 24.007 Table 11.2 + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const B1_Type tsc_LoopModeE_Transmission := '1'B; + const B1_Type tsc_LoopModeE_Reception := '0'B; + const B1_Type tsc_LoopModeE_V2x := '1'B; + + // ============================================================================= + // Close UE Test Loop + // 3G TS 36.509 cl. 6.1 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + + type record NR_CLOSE_UE_TEST_LOOP { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + UE_TestLoopMode_Type ueTestLoopMode, /* M V 1 */ + UE_TestLoopModeA_NR_LB_Setup_Type ueTestLoopModeA_LB_Setup optional, /* C LV 1-25 + present if ueTestLoopMode ='00'F */ + UE_TestLoopModeB_LB_Setup_Type ueTestLoopModeB_LB_Setup optional, /* C V 1 + present if ueTestLoopMode ='01'F/ + represents IP PDU delay time 0..255 seconds */ + UE_TestLoopModeE_LB_Setup_Type ueTestLoopModeE_LB_Setup optional /* C LV 1-25 + present if ueTestLoopMode ='04'F */ + }; + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode A LB Setup 38.509 cl. 6.3.1 + // *** additional Notes: + // The maximum number of LB entities in the LB setup list is less than or equal to 5. + // ----------------------------------------------------------------------------- + type record UE_TestLoopModeA_NR_LB_Setup_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + O1_Type iel, + NR_LB_SetupDRB_IE_List_Type lbSetupDrbList optional + }; + + // ============================================================================= + // LB Setup DRB IE + // UE Test Loop Mode A LB Setup 38.509 cl. 6.3.1 + // ----------------------------------------------------------------------------- + type record NR_LB_SetupDRB_IE_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + B16_Type uplinkPdcpSduSize, + B2_Type reserved, + B1_Type nrDRB, + B5_Type drbIdentity + }; + + type record length (1..tsc_MAX_ModeA_LB_Entities)of NR_LB_SetupDRB_IE_Type NR_LB_SetupDRB_IE_List_Type; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + + // ============================================================================= + // Structured Type Definition + // Set UL Message + // *** Comments: + // 36.509 cl. 6.19 + // ----------------------------------------------------------------------------- + type record SET_UL_MESSAGE_REQUEST { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + B7_Type spare, + B1_Type usePreconfiguredULMsg + }; + + type record SET_UL_MESSAGE_RESPONSE { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + //---------------------------------------------------------------------------- + // Templates for Loop Back PDU's + //---------------------------------------------------------------------------- + + template (value) NR_LB_SetupDRB_IE_Type cs_NR_LB_SetupDRB_IE(integer p_PDCP_SDU_Size, + integer p_DRB_Id, + B1_Type p_NRDRB := '1'B) := + { /* @status APPROVED (ENDC, NR5GC) */ + uplinkPdcpSduSize := int2bit (p_PDCP_SDU_Size,16), /* Uplink PDCP SDU size */ + reserved := '00'B, + nrDRB := p_NRDRB, + drbIdentity := int2bit (p_DRB_Id-1, 5) /* Note: acc. to ASN.1 DRB_Identity is 1..32 but the DRB-Identity of LB setup DRB IE has just 5 bits + => assumption: binary coded DRB identity means ASN.1 coded (i.e. "p_DRB_Id-1") */ + }; + + template (value) UE_TestLoopModeA_NR_LB_Setup_Type cs_UE_TestLoopModeA_NR_LB_Setup_1DRB(integer p_PDCP_SDU_Size, + integer p_DRB_Id, + B1_Type p_NRDRB := '1'B) := + { /* @status APPROVED (ENDC, NR5GC) */ + iel := '03'O, // 3 octets, i.e. one element in LB_SetupDRB_IE_List + lbSetupDrbList := { + cs_NR_LB_SetupDRB_IE(p_PDCP_SDU_Size, p_DRB_Id, p_NRDRB) + } + }; + + template (value) UE_TestLoopModeA_NR_LB_Setup_Type cs_UE_TestLoopModeA_NR_LB_Setup_NoScaling := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + iel := '00'O, // 0 octets, i.e. no element in LB_SetupDRB_IE_List + lbSetupDrbList := omit + }; + + template (value) UE_TestLoopModeE_LB_Setup_Type cs_UE_TestLoopModeE_LB_Setup(B1_Type p_CommTransmitOrReceive := tsc_LoopModeE_Reception, + integer p_CommMonitorListLength, + template (omit) CommMonitorList_Type p_CommMonitorList := omit, + B1_Type p_D2dOrV2x := '0'B // @sic R5-175219 sic@ D2D by default + ) := + { /* @status */ + commMonitorListLength := int2bit(p_CommMonitorListLength,8), // Length of UE test loop mode E Monitor setup contents in bytes + reserved := '000000'B, + commTransmitOrReceive := p_CommTransmitOrReceive, // Communication Transmit or Receive + commMonitorList := p_CommMonitorList, + d2dOrV2x := p_D2dOrV2x // @sic R5-175219 sic@ + }; + + template (value) SET_UL_MESSAGE_REQUEST cs_SET_UL_MESSAGE_REQUEST (B1_Type p_UsePreconfigured) := + {/* @status APPROVED (NR5GC) */ + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_SetULMsgReq, /* M V 1 */ + spare := tsc_Spare7, + usePreconfiguredULMsg := p_UsePreconfigured + }; + + template (present) SET_UL_MESSAGE_RESPONSE cr_SET_UL_MESSAGE_RESPONSE := + { /* @status APPROVED (NR5GC) */ + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_SetULMsgResp /* M V 1 */ + }; + + +} with { encode "NAS Types"} // @sic R5s190445 sic@ diff --git a/ttcn/Lib3GPP/Common4G5G/EUTRA_NR_SecurityFunctions.ttcn b/ttcn/Lib3GPP/Common4G5G/EUTRA_NR_SecurityFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..fb87157d35ba5fcc076eb89939701bfb8c459d54 --- /dev/null +++ b/ttcn/Lib3GPP/Common4G5G/EUTRA_NR_SecurityFunctions.ttcn @@ -0,0 +1,325 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-09-13 17:51:49 +0200 (Wed, 13 Sep 2023) $ +// $Rev: 37110 $ +/******************************************************************************/ +module EUTRA_NR_SecurityFunctions { + import from CommonDefs all; + + //============================================================================ + // constants and types + type integer SK_Counter_Type; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + + const SK_Counter_Type tsc_SK_Counter:= 0; /* @status APPROVED (ENDC, NR5GC_IRAT) */ + const integer tsc_NAS_Enc_Alg := 1; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_NAS_Int_Alg := 2; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_RRC_Enc_Alg := 3; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_RRC_Int_Alg := 4; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_UP_Enc_Alg := 5; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_N_UP_Int_Alg := 6; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + + type integer NR_AlgTypeDistg_Type(tsc_NAS_Enc_Alg, + tsc_NAS_Int_Alg, + tsc_RRC_Enc_Alg, + tsc_RRC_Int_Alg, + tsc_UP_Enc_Alg, + tsc_N_UP_Int_Alg); /* As per Table A.8-1 of 33.501; @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + + type integer AlgTypeDistg_Type(tsc_NAS_Enc_Alg, + tsc_NAS_Int_Alg, + tsc_RRC_Enc_Alg, + tsc_RRC_Int_Alg, + tsc_UP_Enc_Alg); /* As per Table A.8-1 of 33.401; @status */ + + //============================================================================ + // TEMPLATES + //---------------------------------------------------------------------------- + + //============================================================================ + + group Auth_S_Function { // Group of S functions defined in Annex A of 33.401 + + //-------------------------------------------------------------------------- + /* + * @desc KASME to CKSRVCC, IKSRVCC derivation (S1A) + * As per annex A.12 of 33.401 + * @param p_KDF + * @param p_KASME + * @param p_DL_NAS_Count + * @return B256_Type + * @status APPROVED (IMS_IRAT, LTE_A_IRAT, LTE_IRAT) + */ + function f_EUTRA_Authentication_S1A(KDF_Type p_KDF, + B256_Type p_KASME, + O4_Type p_DL_NAS_Count) return B256_Type + { + const octetstring const_S1A_FC :='1A'O; + var octetstring v_S; + + // Generation of String + v_S := const_S1A_FC; + //FC = 0x1A + v_S := ( v_S & p_DL_NAS_Count ); + //P0 = NAS downlink COUNT value + v_S := ( v_S & '0004'O ); + //L0 = length of NAS downlink COUNT value (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction ( p_KDF, p_KASME, v_S ); // @sic R5s160711 sic@ + // The result is 256 bit CKSRVCC ll IKSRVCC each of 128 bits + }; + + //-------------------------------------------------------------------------- + /* + * @desc S-KeNB derivation function used at SeNB + * As per annex A.15 of 33.401 + * @param p_KDF + * @param p_KENB + * @param p_SCG_Counter + * @return B256_Type + * @status APPROVED (ENDC, NR5GC_IRAT) + */ + function f_EUTRA_Authentication_S1C(KDF_Type p_KDF, + B256_Type p_KENB, + SK_Counter_Type p_SCG_Counter) return B256_Type + { + const octetstring const_S1C_FC :='1C'O; + var octetstring v_S; + // Generation of String + v_S := const_S1C_FC; + //FC = 0x1C + v_S := ( v_S & int2oct (p_SCG_Counter,2)); + //P0 = Value of the SCG Counter as a non-negative integer + v_S := ( v_S & '0002'O ); + //L0 = length of the SCG Counter value (i.e. 0x00 0x02) + return fx_KeyDerivationFunction ( p_KDF, p_KENB , v_S ); + } + + //-------------------------------------------------------------------------- + /* + * @desc Algorithm key derivation functions (S15) + * As per annex A.7 of 33.401 + * @param p_AlgTypeDistg + * @param p_Alg + * @param p_Key + * @param p_KDF_Type + * @return B128_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) + */ + function f_EUTRA_NB_Authentication_S15(NR_AlgTypeDistg_Type p_AlgTypeDistg, // @sic R5-235451 sic@ + B3_Type p_Alg, + B256_Type p_Key, + KDF_Type p_KDF_Type) return B128_Type + { + const octetstring const_S15_FC :='15'O; + var octetstring v_S; + // Generation of String + v_S := const_S15_FC; + //FC = 0x15 + v_S := ( v_S & int2oct ( p_AlgTypeDistg, 1 ) ); + //P0 = algorithm type distinguisher + v_S := ( v_S & '0001'O ); + //L0 = length of algorithm type distinguisher (i.e. 0x00 0x01)) + v_S := ( v_S & bit2oct ( p_Alg ) ); + //P1 = algorithm identity + v_S := ( v_S & '0001'O ); + //L1 = length of algorithm identity (i.e. 0x00 0x01) + + return substr(fx_KeyDerivationFunction(p_KDF_Type, p_Key, v_S), 128, 128); + // returns LSB 128 bits[truncated] of the key generated + }; + + //-------------------------------------------------------------------------- + /* + * @desc Algorithm key derivation functions (S69) + * As per annex A.8 of 33.501/ A.19 of 33.401 + * @param p_AlgTypeDistg + * @param p_Alg + * @param p_Key + * @param p_KDF_Type + * @return B128_Type + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Authentication_A8(NR_AlgTypeDistg_Type p_AlgTypeDistg, + B4_Type p_Alg, + B256_Type p_Key, + KDF_Type p_KDF_Type) return B128_Type + { + const octetstring const_S69_FC :='69'O; + var octetstring v_S; + // Generation of String + v_S := const_S69_FC; + //FC = 0x69 + v_S := ( v_S & int2oct ( p_AlgTypeDistg, 1 ) ); + //P0 = algorithm type distinguisher + v_S := ( v_S & '0001'O ); + //L0 = length of algorithm type distinguisher (i.e. 0x00 0x01)) + v_S := ( v_S & bit2oct ( p_Alg ) ); + //P1 = algorithm identity + v_S := ( v_S & '0001'O ); + //L1 = length of algorithm identity (i.e. 0x00 0x01) + + return substr(fx_KeyDerivationFunction(p_KDF_Type, p_Key, v_S), 128, 128); + // returns LSB 128 bits[truncated] of the key generated + } + + //-------------------------------------------------------------------------- + /* + * @desc KAMF to KAMF' horizontal derivation function + * As per annex A.13 of 33.501 + * @param p_Handover + * @param p_Count + * @param p_KAMF + * @param p_KDF_Type + * @return B256_Type + * @status APPROVED (NR5GC) + */ + function f_NG_Authentication_A13(boolean p_Handover, + O4_Type p_Count, + B256_Type p_KAMF, + KDF_Type p_KDF_Type) return B256_Type + { + const octetstring const_S72_FC :='72'O; + var octetstring v_S; + var octetstring v_P0; + + // Generation of String + v_S := const_S72_FC; + //FC = 0x72 + if (p_Handover) { + v_P0 := '01'O; + } else { // mobility registration + v_P0 := '00'O; + } + v_S := (v_S & v_P0); + //P0 = Direction + v_S := (v_S & '0001'O) ; + //L0 = length of direction + v_S := (v_S & p_Count); + //P1 = Count + v_S := (v_S & '0004'O) ; + //L1 = length of count + + return fx_KeyDerivationFunction(p_KDF_Type, p_KAMF, v_S); + }; + + //-------------------------------------------------------------------------- + /* + * @desc KAMF to KASME' derivation function + * As per annex A.14 of 33.501 + * @param p_Handover + * @param p_Count + * @param p_KAMF + * @param p_KDF_Type + * @return B256_Type + * @status APPROVED (NR5GC_IRAT) + */ + function f_NG_Authentication_A14(boolean p_Handover, + O4_Type p_Count, + B256_Type p_KAMF, + KDF_Type p_KDF_Type) return B256_Type + { + const octetstring const_S73_FC :='73'O; + const octetstring const_S74_FC :='74'O; + var octetstring v_S; + + if (p_Handover) { + // Generation of String + v_S := const_S74_FC; + //FC = 0x73 + } else { // mobility registration + // Generation of String + v_S := const_S73_FC; + //FC = 0x74 + } + v_S := (v_S & p_Count); + //P0 = Count + v_S := (v_S & '0004'O) ; + //L0 = length of count + + return fx_KeyDerivationFunction(p_KDF_Type, p_KAMF, v_S); + }; + + //-------------------------------------------------------------------------- + /* + * @desc KASME to KAMF' derivation function + * As per annex A.15 of 33.501 + * @param p_Count + * @param p_KASME + * @param p_KDF_Type + * @return B256_Type + * @status APPROVED (NR5GC_IRAT) + */ + function f_NG_Authentication_A15_IdleMode(O4_Type p_Count, + B256_Type p_KASME, + KDF_Type p_KDF_Type) return B256_Type + { + const octetstring const_S75_FC :='75'O; + var octetstring v_S; + + // Generation of String + v_S := const_S75_FC; + //FC = 0x75 + v_S := (v_S & p_Count); + //P0 = UL Count + v_S := (v_S & '0004'O) ; + //L0 = length of count + + return fx_KeyDerivationFunction(p_KDF_Type, p_KASME, v_S); + }; + + /* + * @desc KASME to KAMF' derivation function + * As per annex A.15 of 33.501 + * @param p_NH + * @param p_KASME + * @param p_KDF_Type + * @return B256_Type + * @status APPROVED (NR5GC_IRAT) + */ + function f_NG_Authentication_A15_HO(B256_Type p_NH, + B256_Type p_KASME, + KDF_Type p_KDF_Type) return B256_Type + { + const octetstring const_S76_FC :='76'O; + var octetstring v_S; + + // Generation of String + v_S := const_S76_FC; + //FC = 0x76 + v_S := (v_S & bit2oct(p_NH)); + //P0 = NH + v_S := (v_S & '0020'O) ; + //L0 = length of NH + + return fx_KeyDerivationFunction(p_KDF_Type, p_KASME, v_S); + }; + + } /* End of group Auth_S_Function */ + + //============================================================================ + /* + * @desc Function to be used for AS KEy derivation for SgNB data encryption. + * @param p_KDF + * @param p_KENB + * @param p_SK_Counter + * @return B256_Type + * @status APPROVED (ENDC, NR5GC_IRAT) + */ + function f_EUTRA_NR_InitAS_KeyChaining_SgNB(KDF_Type p_KDF, + B256_Type p_KENB, + SK_Counter_Type p_SK_Counter) return B256_Type + { + // Derive S-KgNB from KeNB + return f_EUTRA_Authentication_S1C (p_KDF, + p_KENB, + p_SK_Counter); + // Ciphering algorithm for UP is same as RRC + } + + +} diff --git a/ttcn/Lib3GPP/Common4G5G/module.mk b/ttcn/Lib3GPP/Common4G5G/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..88bc4b442392face9cacdfbe2f6c29d5f3366b2d --- /dev/null +++ b/ttcn/Lib3GPP/Common4G5G/module.mk @@ -0,0 +1,8 @@ +sources := \ + Common4G5G.ttcn\ + Common4G5G_LoopBack.ttcn \ + EUTRA_NR_SecurityFunctions.ttcn + + +modules :=\ + diff --git a/ttcn/Lib3GPP/CommonIP/CommonIP.ttcn b/ttcn/Lib3GPP/CommonIP/CommonIP.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6bc0af15c21f7e40b7da3ef15c111b96424685eb --- /dev/null +++ b/ttcn/Lib3GPP/CommonIP/CommonIP.ttcn @@ -0,0 +1,691 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-09-21 20:24:35 +0200 (Wed, 21 Sep 2022) $ +// $Rev: 34317 $ +/******************************************************************************/ + +module CommonIP { + + import from CommonDefs all; + import from Parameters all; + + const integer tsc_IMS_MediaPort_M1 := 60350; /* RTP port Speech @sic R5s130495 Change 19 sic@ + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_IMS_MediaPort_M2 := 60352; /* RTP port Video @sic R5s130495 Change 19 sic@ + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const integer tsc_IMS_MediaPort_M3 := 60354; /* RTP port Text @sic R5s130495 Change 19 sic@ + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT) */ + + + const UInt16_Type tsc_PortNumberHTTP := 80; /* @status APPROVED (IMS) */ + const UInt16_Type tsc_PortNumberHTTPS := 443; + + const UInt8_Type tsc_IP_Protocol_ICMP := 1; /* @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const UInt8_Type tsc_IP_Protocol_UDP := 17; /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC, UTRAN) */ + const UInt8_Type tsc_ICMP_Type_EchoReply := 0; /* @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const UInt8_Type tsc_ICMPv6_Type_EchoReply := 129; /* @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const UInt8_Type tsc_ICMP_Type_EchoRequest := 8; /* @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const UInt8_Type tsc_ICMPv6_Type_EchoRequest := 128; /* @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const UInt8_Type tsc_IP_Protocol_TCP := 6; /* @status APPROVED (LTE, NBIOT, NR5GC, UTRAN) */ + const UInt8_Type tsc_IP_Protocol_IPSec := 50; /* @status APPROVED (LTE, NBIOT, NR5GC, UTRAN) */ + const UInt8_Type tsc_IP_Protocol_ICMPv6 := 58; /* @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const integer tsc_IMS_PortNumber_5060 := 5060; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + + const O2_Type tsc_MulticastPrefix_FF02 := 'FF02'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + + const octetstring tsc_IP_AnyData := '00112233445566778899AABBCCDDEEFF'O; //* @status APPROVED (ENDC, LTE, LTE_A_PRO, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + + type record PDN_AddressInfo_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + charstring UE_IPAddressIPv4, + charstring UE_IPAddressIPv6, + charstring Remote_IPAddressIPv4, /* @sic R5s130681 additional change sic@ */ + charstring Remote_IPAddressIPv6, /* @sic R5s130681 additional change sic@ */ + charstring DHCP_ServerAddress, + charstring ICMPv6_ServerAddress, + charstring PCSCF_IPAddressIPv4, + charstring PCSCF_IPAddressIPv6, + charstring DNS_ServerAddressIPv4, + charstring DNS_ServerAddressIPv6, + charstring XCAP_ServerAddressIPv4, /* @sic R5s141051 change 8 sic@ */ + charstring XCAP_ServerAddressIPv6, /* @sic R5s141051 change 8 sic@ */ + charstring ProSe_ServerAddressIPv4, /* @sic R5-160765 sic@ */ + charstring ProSe_ServerAddressIPv6 /* @sic R5-160765 sic@ */ + }; + + const PDN_AddressInfo_Type tsc_PDN1_AddressInfo := { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address1_UE, + UE_IPAddressIPv6 := px_IPv6_Address1_UE, + Remote_IPAddressIPv4 := px_IPv4_Address1_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address1_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address1_NW, + ICMPv6_ServerAddress := px_IPv6_Address1_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address1_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address1_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address1_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address1_NW, + XCAP_ServerAddressIPv4 := px_IPv4_Address1_NW, /* @sic R5s141051 change 8 sic@ */ + XCAP_ServerAddressIPv6 := px_IPv6_Address1_NW, /* @sic R5s141051 change 8 sic@ */ + ProSe_ServerAddressIPv4 := px_IPv4_Address1_NW, /* @sic R5-160765 sic@ */ + ProSe_ServerAddressIPv6 := px_IPv6_Address1_NW /* @sic R5-160765 sic@ */ + }; + const PDN_AddressInfo_Type tsc_PDN2_AddressInfo := { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address2_UE, + UE_IPAddressIPv6 := px_IPv6_Address2_UE, + Remote_IPAddressIPv4 := px_IPv4_Address2_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address2_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address2_NW, + ICMPv6_ServerAddress := px_IPv6_Address2_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address2_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address2_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address2_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address2_NW, + XCAP_ServerAddressIPv4 := px_IPv4_Address2_NW, /* @sic R5s141051 change 8 sic@ */ + XCAP_ServerAddressIPv6 := px_IPv6_Address2_NW, /* @sic R5s141051 change 8 sic@ */ + ProSe_ServerAddressIPv4 := px_IPv4_Address2_NW, /* @sic R5-160765 sic@ */ + ProSe_ServerAddressIPv6 := px_IPv6_Address2_NW /* @sic R5-160765 sic@ */ + }; + + // @sic R5s191074 sic@ + const PDN_AddressInfo_Type tsc_PDN3_AddressInfo := { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) To Do: make this equal to new PIXITs for address 3 */ + UE_IPAddressIPv4 := px_IPv4_Address3_UE, + UE_IPAddressIPv6 := px_IPv6_Address3_UE, + Remote_IPAddressIPv4 := px_IPv4_Address3_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address3_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address3_NW, + ICMPv6_ServerAddress := px_IPv6_Address3_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address3_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address3_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address3_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address3_NW, + XCAP_ServerAddressIPv4 := px_IPv4_Address3_NW, + XCAP_ServerAddressIPv6 := px_IPv6_Address3_NW, + ProSe_ServerAddressIPv4 := px_IPv4_Address3_NW, + ProSe_ServerAddressIPv6 := px_IPv6_Address3_NW + }; + + // @sic R5-221467 sic@ + const PDN_AddressInfo_Type tsc_PDN4_AddressInfo := { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address4_UE, + UE_IPAddressIPv6 := px_IPv6_Address4_UE, + Remote_IPAddressIPv4 := px_IPv4_Address3_RemoteUE, // no new PIXIT defined for this as not expecting to be used + Remote_IPAddressIPv6 := px_IPv6_Address3_RemoteUE, // no new PIXIT defined for this as not expecting to be used + DHCP_ServerAddress := px_IPv4_Address4_NW, + ICMPv6_ServerAddress := px_IPv6_Address4_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address4_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address4_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address4_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address4_NW, + XCAP_ServerAddressIPv4 := px_IPv4_Address4_NW, + XCAP_ServerAddressIPv6 := px_IPv6_Address4_NW, + ProSe_ServerAddressIPv4 := px_IPv4_Address4_NW, + ProSe_ServerAddressIPv6 := px_IPv6_Address4_NW + }; + + // @sic R5-221467 sic@ + const PDN_AddressInfo_Type tsc_PDN5_AddressInfo := { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address5_UE, + UE_IPAddressIPv6 := px_IPv6_Address5_UE, + Remote_IPAddressIPv4 := px_IPv4_Address3_RemoteUE, // no new PIXIT defined for this as not expecting to be used + Remote_IPAddressIPv6 := px_IPv6_Address3_RemoteUE, // no new PIXIT defined for this as not expecting to be used + DHCP_ServerAddress := px_IPv4_Address5_NW, + ICMPv6_ServerAddress := px_IPv6_Address5_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address5_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address5_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address5_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address5_NW, + XCAP_ServerAddressIPv4 := px_IPv4_Address5_NW, + XCAP_ServerAddressIPv6 := px_IPv6_Address5_NW, + ProSe_ServerAddressIPv4 := px_IPv4_Address5_NW, + ProSe_ServerAddressIPv6 := px_IPv6_Address5_NW + }; + + // @sic R5-221467 sic@ + const PDN_AddressInfo_Type tsc_PDN6_AddressInfo := { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address6_UE, + UE_IPAddressIPv6 := px_IPv6_Address6_UE, + Remote_IPAddressIPv4 := px_IPv4_Address3_RemoteUE, // no new PIXIT defined for this as not expecting to be used + Remote_IPAddressIPv6 := px_IPv6_Address3_RemoteUE, // no new PIXIT defined for this as not expecting to be used + DHCP_ServerAddress := px_IPv4_Address6_NW, + ICMPv6_ServerAddress := px_IPv6_Address6_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address6_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address6_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address6_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address6_NW, + XCAP_ServerAddressIPv4 := px_IPv4_Address6_NW, + XCAP_ServerAddressIPv6 := px_IPv6_Address6_NW, + ProSe_ServerAddressIPv4 := px_IPv4_Address6_NW, + ProSe_ServerAddressIPv6 := px_IPv6_Address6_NW + }; + + // @sic R5s191074, R5-221467 sic@ + const PDN_AddressInfo_Type tsc_PDN_AddressInfo[6] := { tsc_PDN1_AddressInfo, tsc_PDN2_AddressInfo, tsc_PDN3_AddressInfo, tsc_PDN4_AddressInfo, tsc_PDN5_AddressInfo, tsc_PDN6_AddressInfo}; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + + type record WLAN_AddressInfo_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + charstring UE_IPAddressIPv4, + charstring UE_IPAddressIPv6, + charstring DNS_ServerAddressIPv4, + charstring DNS_ServerAddressIPv6, + charstring EPDG_ServerAddressIPv4, + charstring EPDG_ServerAddressIPv6, + charstring EmergencyEPDG_ServerAddressIPv4, + charstring EmergencyEPDG_ServerAddressIPv6, + charstring Non3GPP_XCAP_ServerAddressIPv4, + charstring Non3GPP_XCAP_ServerAddressIPv6 + }; + + /* + * @desc return index of the IP address or IMS server corresponding to the given PdnIndex + * @param p_PdnIndex + * @return integer + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_PDN_PdnIndex2Integer(PDN_Index_Type p_PdnIndex) return integer + { /* PDN_2a to support change of the IP address for IMS test case 19.5.1 */ + /* @sic R5s150031: fl_IP_ServerIndex -> f_PDN_PdnIndex2Integer sic@ */ + var integer v_Index; + select (p_PdnIndex) { + case (PDN_1, ePDG_IMS1) { + v_Index := 0; + } + case (PDN_2, PDN_2a, PDN_Internet, nrPDN_Internet, ePDG_IMS2, ePDG_XCAP, ePDG_Internet) { // @sic R5s191074 sic@ + v_Index := 1; + } + case (PDN_3) { // @sic R5s191074 sic@ + v_Index := 2; + } + case (PDN_4) { // @sic R5-221467 sic@ + v_Index := 3; + } + case (PDN_5) { // @sic R5-221467 sic@ + v_Index := 4; + } + case (PDN_6) { // @sic R5-221467 sic@ + v_Index := 5; + } + case else { + FatalError(__FILE__, __LINE__, "Invalid PDN index"); + } + } + return v_Index; + } + + /* + * @desc return index of the IMS server or IMS PTC + * @param p_PdnIndex + * @return integer + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_PDN_PdnIndex2ImsIndex(PDN_Index_Type p_PdnIndex) return integer + { + var integer v_Index := f_PDN_PdnIndex2Integer(p_PdnIndex); + + if (v_Index >= tsc_NoOfIMSPDNs) { + FatalError(__FILE__, __LINE__, "Invalid PDN index"); + } + return v_Index; + } + + /* + * @desc return PDN_AddressInfo corresponding to the given PdnIndex + * @param p_PdnIndex + * @return PDN_AddressInfo_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_PDN_AddressInfo_Get(PDN_Index_Type p_PdnIndex) return PDN_AddressInfo_Type + { /* PDN_2a to support change of the IP address for IMS test case 19.5.1 */ + var PDN_AddressInfo_Type v_PDN_AddressInfo; + var integer v_Index := f_PDN_PdnIndex2Integer(p_PdnIndex); + + v_PDN_AddressInfo := tsc_PDN_AddressInfo[v_Index]; + if (p_PdnIndex == PDN_2a) { + v_PDN_AddressInfo.UE_IPAddressIPv4 := px_IPv4_Address2a_UE; /* @sic implementation of IMS TC_19_5_1 sic@ */ + v_PDN_AddressInfo.UE_IPAddressIPv6 := px_IPv6_Address2a_UE; /* @sic implementation of IMS TC_19_5_1 sic@ */ + } + return v_PDN_AddressInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc Check whether given string is IPv4 address + * @param p_IpAddress + * @return boolean + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_IpAddressIsIPv4(charstring p_IpAddress) return boolean + { + var template charstring v_Pattern := pattern "[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+"; + return match(p_IpAddress, v_Pattern); + }; + + //---------------------------------------------------------------------------- + /* + * @desc Check whether given string is IPv6 address + * @param p_IpAddress + * @return boolean + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_IpAddressIsIPv6(charstring p_IpAddress) return boolean + { + var Char1List_Type v_SplitCharList := {":"}; + var CharStringList_Type v_FieldList := f_StringSplit(p_IpAddress, v_SplitCharList); + var integer v_FieldCnt := lengthof(v_FieldList); + var charstring v_Field; + var charstring v_Pattern; + var integer v_FieldLength; + var integer i; + + if ((v_FieldCnt == 1) or (v_FieldCnt > 8)) { return false; } + + for (i:=0; i 4) { return false; } + if (not match(v_Field, pattern v_Pattern)) { return false; } + } + return true; + } + + //---------------------------------------------------------------------------- + /* + * @desc Return IP address to be used as host name: for IPv6 the IP address gets surrounded with "[" and "]" + * @param p_IpAddress + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_IpAddressAsHostname(charstring p_IpAddress) return charstring + { + var charstring v_Hostname; + + if (f_IpAddressIsIPv6(p_IpAddress)) { + v_Hostname := "[" & p_IpAddress & "]"; + } else { + v_Hostname := p_IpAddress; + } + return v_Hostname; + } + + //---------------------------------------------------------------------------- + /* + * @desc convert IP address in dot notation into octetstring; + * e.g. "10.11.12.13" results in '0A0B0C0D'O + * @param p_IPv4AddrChar + * @return O4_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) + */ + function f_Convert_IPv4Addr2OctString(charstring p_IPv4AddrChar) return O4_Type + { + var Char1List_Type v_SplitCharList := {"."}; + var CharStringList_Type v_FieldList := f_StringSplit(p_IPv4AddrChar, v_SplitCharList); + var octetstring v_IPv4AddrOct := ''O; + var integer v_FieldCnt := lengthof(v_FieldList); + var integer v_IntVal; + var integer i; + + if (v_FieldCnt != 4) { + FatalError(__FILE__, __LINE__, "invalid IP Address"); + } + for (i:=0; i subsequent empty fields will just be replaced by '0000' */ + var charstring v_Field; + var integer v_NoOfEmptyBlocks; + var integer i; + var integer k; + + if (v_FieldCnt > 8) { + FatalError(__FILE__, __LINE__, "invalid IP Address"); + } + for (i:=0; i tsc_UInt16Max) { + v_Sum := (v_Sum mod (tsc_UInt16Max+1)) + (v_Sum / (tsc_UInt16Max+1)); + } + // get complement + v_Sum := tsc_UInt16Max - v_Sum; + return int2oct(v_Sum, 2); + } + + //---------------------------------------------------------------------------- + /* + * @desc Check whether an address is a IPv6 multicast address + * @param p_IPv6Addr + * @return boolean .. true if the address is a multicast address + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_IPv6AddrIsMulticast(charstring p_IPv6Addr) return boolean + { + var O2_Type v_Prefix; + v_Prefix := str2oct(substr(p_IPv6Addr, 0, 4)); + if (v_Prefix == tsc_MulticastPrefix_FF02) { // RFC 2375 + return true; + } + return false; + } + + //---------------------------------------------------------------------------- + /* + * @desc convert (global) IPv6 adddress into link-local address + * @param p_IPv6Addr .. global IPv6 address + * @return charstring .. link-local address + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_IPv6AddrGetLinkLocalAddr(charstring p_IPv6Addr) return charstring + { + var O16_Type v_IPv6AddrOctets := f_Convert_IPv6Addr2OctString(p_IPv6Addr); + var O8_Type v_InterfaceId := substr(v_IPv6AddrOctets, 8, 8); // interface id assuming a /64 prefix + + return f_Convert_OctString2IPv6Addr('FE80000000000000'O & v_InterfaceId); + } + + //---------------------------------------------------------------------------- + /* + * @desc Return ICMP PDU including correct checksum + * @param p_SrcAddress + * @param p_DstAddress + * @param p_IcmpPDU + * @return octetstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_ICMPv6_UpdateCRCChecksum(charstring p_SrcAddress, + charstring p_DstAddress, + octetstring p_IcmpPDU) return octetstring + { + var octetstring v_PseudoHeader; + var octetstring v_IcmpPDU := p_IcmpPDU; + var O2_Type v_Checksum; + // Build pseudo headers for ICMPv6, see RFC 4443 clause 2.3 + // Pseudo headers are specified in RFC 2460 clause 8.1 + v_PseudoHeader := + f_Convert_IPv6Addr2OctString(p_SrcAddress) & + f_Convert_IPv6Addr2OctString(p_DstAddress) & + int2oct (lengthof(p_IcmpPDU), 4) & '0000003A'O; + + //According to RFC 4443, section 2.3, + //For computing the checksum, the checksum field is first set to zero. + p_IcmpPDU[2] := '00'O; /* @sic R5s190281 sic@ */ + p_IcmpPDU[3] := '00'O; /* @sic R5s190281 sic@ */ + + // Now compute checksum + v_Checksum := f_IpChecksum (v_PseudoHeader & p_IcmpPDU); + + // See RFC 4443 clause 2.1 + v_IcmpPDU[2] := v_Checksum[0]; + v_IcmpPDU[3] := v_Checksum[1]; + return v_IcmpPDU; + } + + //---------------------------------------------------------------------------- + /* + * @desc create an IPv6 packet (currently with typical settings for an UDP packet) + * For IPv6 packet format, see RFC 2460 + * @param p_TrafficClass (default value: '00'O) + * @param p_FlowLabel (default value: 0) + * @param p_Protocol + * @param p_HopCount (default value: 64) + * @param p_SourceAddr + * @param p_DestAddr + * @param p_IPPayload + * @return octetstring + * @status APPROVED (ENDC, LTE, LTE_A_PRO, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) + */ + function f_IPv6Packet_Create(O1_Type p_TrafficClass := '00'O, + UInt20_Type p_FlowLabel := 0, + UInt8_Type p_Protocol, + UInt8_Type p_HopCount := 64, + charstring p_SourceAddr, + charstring p_DestAddr, + octetstring p_IPPayload) + return octetstring + { /* @sic R5s170286: p_HopCount sic@ */ + var hexstring v_Version := '6'H; + var hexstring v_TrafficClass := oct2hex (p_TrafficClass); + var hexstring v_FlowLabel := int2hex (p_FlowLabel, 5); + var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr); + var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr); + var octetstring v_OctetString; + + // IP header + v_OctetString := hex2oct(v_Version & v_TrafficClass & v_FlowLabel); // Version, Traffic Class and Flow Label to be revised + v_OctetString := v_OctetString & int2oct (lengthof(p_IPPayload), 2); // Payload Length + v_OctetString := v_OctetString & int2oct(p_Protocol, 1); // Next header + v_OctetString := v_OctetString & int2oct(p_HopCount, 1); // Hop Limit @sic R5s170286 sic@ + v_OctetString := v_OctetString & v_SourceAddrStr; + v_OctetString := v_OctetString & v_DestAddrStr; + v_OctetString := v_OctetString & p_IPPayload; + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc return MNC and MCC derived from IMSI acc. to 23.003 + * @param p_IMSI + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_DomainName_MNC_MCC_DerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + var charstring v_IMSI := hex2str(p_IMSI); + var charstring v_MCC := substr(v_IMSI, 0, 3); + var charstring v_MNC := substr(v_IMSI, 3, p_LengthOfMNC); // @sic R5s140356: index = 3 sic@ + + if (p_LengthOfMNC == 2) { + v_MNC := "0" & v_MNC; + } + + return "mnc" & v_MNC & "." & "mcc" & v_MCC; + } + + //---------------------------------------------------------------------------- + /* + * @desc build up a domain name derived from IMSI acc. to 23.003 clause 13.2 + * @param p_FirstLabel + * @param p_IMSI + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_DomainName_3gppnetwork_DerivedFromIMSI(charstring p_FirstLabel, + hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { /* NOTE: the length of the MNC in general cannot be derived from the IMSI (some countries have MNCs with 2 and 3 digits; see e.g "Annex to ITU Operational Bulletin No. 992 - 15.XI.2011") + * instead the length of the MNC is stored in the EF-AD file on the SIM card (see 31.102 cl. 4.2.18) and acc. to 31.121 the MNC has 2 digits. */ + /* @sic R5-155363: usage of f_DomainName_MNC_MCC_DerivedFromIMSI sic@ */ + var charstring v_MncMcc := f_DomainName_MNC_MCC_DerivedFromIMSI(p_IMSI, p_LengthOfMNC); + var CharStringList_Type v_LableList := { p_FirstLabel, v_MncMcc, "3gppnetwork.org" }; + + return f_StringJoin(v_LableList, "."); + } + + /* + * @desc build up home network domain name derived from IMSI acc. to 23.003 clause 13.2 + * @param p_IMSI + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_DomainName_IMS_DerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + return f_DomainName_3gppnetwork_DerivedFromIMSI("ims", p_IMSI, p_LengthOfMNC); + } + + /* + * @desc build up Private User Identity derived from IMSI acc. to 23.003 clause 13.3 + * @param p_IMSI + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_IMS_PrivateUserIdentityDerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + var charstring v_IMSI := hex2str(p_IMSI); + return v_IMSI & "@" & f_DomainName_IMS_DerivedFromIMSI(p_IMSI, p_LengthOfMNC); + } + + /* + * @desc build up Public User Identity derived from IMSI acc. to 23.003 clause 13.4B + * @param p_IMSI + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NR5GC, NR5GC_IRAT, POS) + */ + function f_IMS_TemporaryPublicUserIdentity(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + return "sip:" & f_IMS_PrivateUserIdentityDerivedFromIMSI(p_IMSI, p_LengthOfMNC); + } +} diff --git a/ttcn/Lib3GPP/CommonIP/LoopbackIP.ttcn b/ttcn/Lib3GPP/CommonIP/LoopbackIP.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..968c3d3e85cbb9af6f9f48f4395aa9fc14ec58ad --- /dev/null +++ b/ttcn/Lib3GPP/CommonIP/LoopbackIP.ttcn @@ -0,0 +1,622 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-04-12 17:34:38 +0200 (Wed, 12 Apr 2023) $ +// $Rev: 35833 $ +/******************************************************************************/ + +module LoopbackIP { + + import from CommonDefs all; + import from CommonIP all; + import from Parameters all; + import from EUTRA_NR_Parameters all; + + type enumerated DataPathCheck_BearerType_Type {dedicatedBearer, defaultBearer}; /* @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) */ + + //---------------------------------------------------------------------------- + /* + * @desc auxiliary function + * @param p_UseIPv4 + * @param p_IPv4Addr + * @param p_IPv6Addr + * @return charstring + * @status APPROVED (ENDC, LTE, LTE_A_PRO, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) + */ + function fl_LoopbackModeB_IPv4IPv6Address(boolean p_UseIPv4, + charstring p_IPv4Addr, + charstring p_IPv6Addr) return charstring + { + if (p_UseIPv4) { return p_IPv4Addr; } + else { return p_IPv6Addr; } + } + + /* + * @desc returns IP address to be used for IP packets in loopback mode B depending on IPv4/v6 for the given PDN + * @param p_UseIPv4 (default value: not pc_IPv6) + * @param p_PdnIndex (default value: PDN_1) + * @return charstring + * @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) + */ + function f_LoopbackModeB_IP_Address_UE(boolean p_UseIPv4 := not pc_IPv6, + PDN_Index_Type p_PdnIndex := PDN_1) return charstring + { /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + /* @sic R5s190281 change 1: not pc_IPv6 instead of pc_IPv4 sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + return fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, v_PDN_AddressInfo.UE_IPAddressIPv4, v_PDN_AddressInfo.UE_IPAddressIPv6); + } + + /* + * @desc returns IP address to be used for IP packets in loopback mode B depending on IPv4/v6 for the given PDN + * @param p_UseIPv4 (default value: not pc_IPv6) + * @param p_PdnIndex (default value: PDN_1) + * @return charstring + * @status APPROVED (ENDC, LTE, LTE_A_PRO, NBIOT, NR5GC, NR5GC_IRAT) + */ + function f_LoopbackModeB_IP_Address_NW(boolean p_UseIPv4 := not pc_IPv6, + PDN_Index_Type p_PdnIndex := PDN_1) return charstring + { /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + /* @sic R5s190411: not pc_IPv6 instead of pc_IPv4 sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + return fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, v_PDN_AddressInfo.PCSCF_IPAddressIPv4, v_PDN_AddressInfo.PCSCF_IPAddressIPv6); + } + + //---------------------------------------------------------------------------- + /* + * @desc create an IPv4 packet ( currently with typical settings for UDP or ICMP packet) + * @param p_Identification (default value: '6d7d'O) + * @param p_TOS (default value: '00'O) + * @param p_Protocol + * @param p_SourceAddr + * @param p_DestAddr + * @param p_IPPayload + * @return octetstring + * @status APPROVED (ENDC, LTE, LTE_A_PRO, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) + */ + function f_IPv4Packet_Create(O2_Type p_Identification := '6d7d'O, // Identification; random value (can be used to generate different packets + O1_Type p_TOS := '00'O, // Differentiated services (RFC 2474), Explicit Congestion Notification (ECN, RFC 3168), former TOS (RFC 791) + UInt8_Type p_Protocol, + charstring p_SourceAddr, + charstring p_DestAddr, + octetstring p_IPPayload) + return octetstring + { + var integer v_TotalLength := lengthof(p_IPPayload) + 20; // 20 bytes IP header + var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr); + var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr); + var octetstring v_OctetString; + + // IP header + v_OctetString := '45'O; // version and header length + v_OctetString := v_OctetString & p_TOS; + v_OctetString := v_OctetString & int2oct(v_TotalLength, 2); + v_OctetString := v_OctetString & p_Identification; + v_OctetString := v_OctetString & '0000'O; // flags (3 bits; typically 0 for UDP) and fragment offset (13 bits; typically 0 for UDP) + v_OctetString := v_OctetString & '80'O; // Time to live (random value) + v_OctetString := v_OctetString & int2oct(p_Protocol, 1); + v_OctetString := v_OctetString & f_IpChecksum(v_OctetString & '0000'O & v_SourceAddrStr & v_DestAddrStr); + v_OctetString := v_OctetString & v_SourceAddrStr; + v_OctetString := v_OctetString & v_DestAddrStr; + v_OctetString := v_OctetString & p_IPPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc build an IPv4 UDP datagram + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_UdpPayload + * @return octetstring + * @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC, UTRAN) + */ + function f_IPv4UdpDatagram_Create(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_UdpPayload) + return octetstring + { /* @desc create UDP datagram */ + var integer v_UdpDatagramLength := lengthof(p_UdpPayload) + 8; // 8 bytes UDP header + // Pseudo Header: + var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr); + var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr); + var O2_Type v_LengthStr := int2oct(v_UdpDatagramLength, 2); + var O1_Type v_Protocol := '11'O; // UDP + var octetstring v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr &'00'O & v_Protocol & v_LengthStr; + var O2_Type v_ChecksumDummy := '0000'O; + var octetstring v_OctetString := ''O; + + v_OctetString := v_OctetString & int2oct(p_SourcePort, 2); + v_OctetString := v_OctetString & int2oct(p_DestPort, 2); + v_OctetString := v_OctetString & v_LengthStr; + v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & p_UdpPayload); /* Note: the UDP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */ + v_OctetString := v_OctetString & p_UdpPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc create UDP datagram + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_UdpPayload + * @return octetstring + * @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC, UTRAN) + */ + function f_IPv6UdpDatagram_Create(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_UdpPayload) + return octetstring + { + var integer v_UdpDatagramLength := lengthof(p_UdpPayload) + 8; // 8 bytes UDP header + var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr); + var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr); + var O4_Type v_LengthStr := int2oct(v_UdpDatagramLength, 4); // RFC 2460 clause 8.1 + var octetstring v_PseudoHeader; + var octetstring v_OctetString; + + // Prepare the pseudo header, see RFC 2460 and illustration in Wikipedia + v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr & v_LengthStr; + v_PseudoHeader := v_PseudoHeader & v_LengthStr; // UDP length + v_PseudoHeader := v_PseudoHeader & '000000'O & '11'O; // Zeros and Next header (= Protocol) + v_PseudoHeader := v_PseudoHeader & int2oct(p_SourcePort, 2) & int2oct(p_DestPort, 2) & int2oct(v_UdpDatagramLength, 2) & '0000'O; + v_PseudoHeader := v_PseudoHeader & p_UdpPayload; + + // Now set the UDP packet + v_OctetString := int2oct(p_SourcePort, 2); + v_OctetString := v_OctetString & int2oct(p_DestPort, 2); + v_OctetString := v_OctetString & int2oct(v_UdpDatagramLength, 2); + v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader); + v_OctetString := v_OctetString & p_UdpPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc create TCP datagram + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_TcpPayload + * @return octetstring + * @status APPROVED (LTE, NBIOT, NR5GC, UTRAN) + */ + function f_IPv4TcpDatagram_Create(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_TcpPayload) + return octetstring + { + var integer v_TcpDatagramLength := lengthof(p_TcpPayload) + 20; // 20 bytes TCP header + // Pseudo Header: + var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr); + var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr); + var O2_Type v_LengthStr := int2oct(v_TcpDatagramLength, 2); + var O1_Type v_Protocol := int2oct(tsc_IP_Protocol_TCP, 1); + var octetstring v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr &'00'O & v_Protocol & v_LengthStr; + var O2_Type v_ChecksumDummy := '0000'O; + var octetstring v_UrgPointer := '0000'O; + var octetstring v_OctetString := ''O; + + v_OctetString := v_OctetString & int2oct(p_SourcePort, 2); + v_OctetString := v_OctetString & int2oct(p_DestPort, 2); + v_OctetString := v_OctetString & int2oct(0, 4); // Sequence Number + v_OctetString := v_OctetString & int2oct(0, 4); // Acknowledgment Number + v_OctetString := v_OctetString & '5011'O; // 4bits HeaderLen/6bits Reserved/URG/ACK/PSH/RST/SYN/FIN + v_OctetString := v_OctetString & int2oct(256, 4); // How to set the windows size? + v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & v_UrgPointer & p_TcpPayload); /* Note: the TCP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */ + v_OctetString := v_OctetString & v_UrgPointer; + v_OctetString := v_OctetString & p_TcpPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc Datagram acc. RFC2406 + * @param p_NextHeader + * @param p_SPI + * @param p_Payload + * @return octetstring + * @status APPROVED (LTE, NBIOT, NR5GC, UTRAN) + */ + function f_IPSecESPDatagram_Create(integer p_NextHeader, + O4_Type p_SPI, + octetstring p_Payload) + return octetstring + { + var octetstring v_OctetString := ''O; + var O4_Type v_SequenceNumber := int2oct(1, 4); + var integer v_PayloadLen := lengthof(p_Payload); + var integer v_PaddingLen := 0; + var integer i; + + v_OctetString := v_OctetString & p_SPI; // Security Parameters Index + v_OctetString := v_OctetString & v_SequenceNumber; // Sequence Number + v_OctetString := v_OctetString & p_Payload; + + // Padding to ensure that the resulting text terminates on a 4-byte boundary. RFC 2406 cl2.4 + select (v_PayloadLen mod 4) { + case (0) { v_PaddingLen := 2; } + case (1) { v_PaddingLen := 1; } + case (2) { v_PaddingLen := 0; } + case (3) { v_PaddingLen := 3; } + } + for (i:=0; i v_Start = 0 .. v_BlockSize-1 */ + var integer v_Length := v_BlockSize + (i mod n); /* => v_Length = v_BlockSize .. p_MaxPayloadSize */ + + while (lengthof(v_Data) < p_MaxPayloadSize + v_BlockSize) { + v_Data := v_Data & tsc_IP_AnyData; + } + v_IcmpPayload := substr(v_Data, v_Start, v_Length); /* @sic R5s200653 sic@ */ + + v_Payload := fl_IcmpDatagram_Create(p_IcmpMsgType, v_IcmpSequenceNumber, v_IcmpPayload); + + select (p_IcmpMsgType) { + case (tsc_ICMP_Type_EchoRequest, tsc_ICMP_Type_EchoReply) { + v_IpPacket := f_IPv4Packet_Create('10'O & int2oct(p_SequenceNumber, 1), -, tsc_IP_Protocol_ICMP, p_SourceAddr, p_DestAddr, v_Payload); /* @sic R5s120642 sic@ */ + } + case (tsc_ICMPv6_Type_EchoRequest, tsc_ICMPv6_Type_EchoReply) { + v_Payload := f_ICMPv6_UpdateCRCChecksum(p_SourceAddr, p_DestAddr, v_Payload); /* @sic R5s190117 - Additional change sic@ */ + v_IpPacket := f_IPv6Packet_Create(-, -, tsc_IP_Protocol_ICMPv6, -, p_SourceAddr, p_DestAddr, v_Payload); + } + } + return v_IpPacket; + } + + /* + * @desc depending on whether p_UE_Addr is an IPv4 or an IPv6 address an IPv4 or IPv6 packet is returned with an IcmpEchoReply as payload; + * when p_DestAddr is empty p_SourceAddr for both source and destination (that is mostly the case for loopback mode) + * @param p_SourceAddr + * @param p_DestAddr (default value: "") + * @param p_SequenceNumber (default value: 1) + * @return octetstring + * @status APPROVED (ENDC, LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) + */ + function f_IPv4IPv6_IcmpEchoReply(charstring p_SourceAddr, + charstring p_DestAddr := "", + integer p_SequenceNumber := 1) return octetstring + { + var charstring v_DestAddr:= p_DestAddr; + var UInt8_Type v_IcmpMsgType; + var octetstring v_IpPacket; + + if (v_DestAddr == "") { v_DestAddr := p_SourceAddr; } + + if (f_IpAddressIsIPv4(p_SourceAddr)) { + v_IcmpMsgType := tsc_ICMP_Type_EchoReply; + } else { + v_IcmpMsgType := tsc_ICMPv6_Type_EchoReply; + } + v_IpPacket := fl_IPv4IPv6_IcmpEchoRequestReply(v_IcmpMsgType, p_SourceAddr, v_DestAddr, p_SequenceNumber); + return v_IpPacket; + } + + /* + * @desc depending on whether p_UE_Addr is an IPv4 or an IPv6 address an IPv4 or IPv6 packet is returned with an IcmpEchoRequest as payload + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SequenceNumber + * @return octetstring + * @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) + */ + function f_IPv4IPv6_IcmpEchoRequest(charstring p_SourceAddr, + charstring p_DestAddr, + integer p_SequenceNumber) return octetstring + { + var UInt8_Type v_IcmpMsgType; + var octetstring v_IpPacket; + + if (f_IpAddressIsIPv4(p_SourceAddr)) { + v_IcmpMsgType := tsc_ICMP_Type_EchoRequest; + } else { + v_IcmpMsgType := tsc_ICMPv6_Type_EchoRequest; + } + v_IpPacket := fl_IPv4IPv6_IcmpEchoRequestReply(v_IcmpMsgType, p_SourceAddr, p_DestAddr, p_SequenceNumber); + return v_IpPacket; + } + + /* + * @desc depending on whether p_UE_Addr is an IPv4 or an IPv6 address an IPv4 or IPv6 packet is returned with a UDP datagram as payload + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_Payload (default value: tsc_IP_AnyData) + * @return octetstring + * @status APPROVED (LTE, LTE_A_PRO, NBIOT) + */ + function f_IPv4IPv6_AnyUdpPacket(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_Payload := tsc_IP_AnyData) return octetstring + { + var UInt8_Type v_Protocol := tsc_IP_Protocol_UDP; + var octetstring v_IpPacket; + + if (f_IpAddressIsIPv4(p_SourceAddr)) { + v_IpPacket := f_IPv4Packet_Create(-, -, v_Protocol, p_SourceAddr, p_DestAddr, f_IPv4UdpDatagram_Create(p_SourceAddr, p_DestAddr, p_SourcePort, p_DestPort, p_Payload)); + } else { + v_IpPacket := f_IPv6Packet_Create(-, -, v_Protocol, -, p_SourceAddr, p_DestAddr, f_IPv6UdpDatagram_Create(p_SourceAddr, p_DestAddr, p_SourcePort, p_DestPort, p_Payload)); + } + return v_IpPacket; + } + + //**************************************************************************** + + type record IPv4IPv6PacketInfo_Type { /* @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) */ + UInt8_Type Protocol, + charstring SourceAddr, + charstring DestAddr, + octetstring Payload + }; + + /* + * @desc Get relevant info of IP packet (protocol, source/destination address, payload) + * @param p_IpPacket + * @return IPv4IPv6PacketInfo_Type + * @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) + */ + function f_IPv4IPv6Packet_GetInfo(octetstring p_IpPacket) return IPv4IPv6PacketInfo_Type + { + var IPv4IPv6PacketInfo_Type v_IPv4IPv6PacketInfo; + var UInt8_Type v_Protocol; + var bitstring v_IpVersion; + var bitstring v_IHL; + var integer v_HeaderLength; + var integer v_PayloadLength; + var octetstring v_SourceAddrString; + var octetstring v_DestAddrString; + var charstring v_SourceAddr; + var charstring v_DestAddr; + + v_IpVersion := substr(oct2bit(substr(p_IpPacket, 0, 1)), 0, 4); + select (v_IpVersion) { + case ('0100'B) { // IPv4 + v_IHL := substr(oct2bit(substr(p_IpPacket, 0, 1)), 4, 4); //IHL is the 4 last bits of the first Octet. + v_HeaderLength := bit2int(v_IHL) * 4; /* length in bytes */ + v_Protocol:= oct2int(substr(p_IpPacket, 9, 1)); + v_SourceAddrString := substr(p_IpPacket, 12, 4); + v_DestAddrString := substr(p_IpPacket, 16, 4); + v_SourceAddr := f_Convert_OctString2IPv4Addr(v_SourceAddrString); + v_DestAddr := f_Convert_OctString2IPv4Addr(v_DestAddrString); + } + case ('0110'B) { // IPv6 + v_HeaderLength := 40; + v_Protocol:= oct2int(substr(p_IpPacket, 6, 1)); + v_SourceAddrString := substr(p_IpPacket, 8, 16); + v_DestAddrString := substr(p_IpPacket, 24, 16); + v_SourceAddr := f_Convert_OctString2IPv6Addr(v_SourceAddrString); + v_DestAddr := f_Convert_OctString2IPv6Addr(v_DestAddrString); + } + } + v_PayloadLength := lengthof(p_IpPacket) - v_HeaderLength; + v_IPv4IPv6PacketInfo.Protocol := v_Protocol; + v_IPv4IPv6PacketInfo.SourceAddr := v_SourceAddr; + v_IPv4IPv6PacketInfo.DestAddr := v_DestAddr; + v_IPv4IPv6PacketInfo.Payload := substr(p_IpPacket, v_HeaderLength, v_PayloadLength); + return v_IPv4IPv6PacketInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc Check received IP packet against sent IP packet for check of user plane connectivity according to 38.508-1 clause 4.9.1 + * @param p_IpPacketTX + * @param p_IpPacketRX + * @param p_CheckPING (default value: true) + * @return boolean + * @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) + */ + function f_LoopbackModeBorPing_CheckDataRX(octetstring p_IpPacketTX, + octetstring p_IpPacketRX, + boolean p_CheckPING := true) return boolean + { + var IPv4IPv6PacketInfo_Type v_PacketInfoTX; + var IPv4IPv6PacketInfo_Type v_PacketInfoRX; + var IPv4IPv6PacketInfo_Type v_PacketInfoExpected; + var integer v_SequenceNumber; + var octetstring v_ExpectedIcmpEchoReplyPacket; + var boolean v_UsePING := p_CheckPING and pc_IP_Ping; // @sic R5-206332 only use PING if required by test case sic@ + + if (v_UsePING) { + v_PacketInfoTX := f_IPv4IPv6Packet_GetInfo(p_IpPacketTX); + v_PacketInfoRX := f_IPv4IPv6Packet_GetInfo(p_IpPacketRX); + v_SequenceNumber := oct2int(substr(v_PacketInfoTX.Payload, 6, 2)); + + v_ExpectedIcmpEchoReplyPacket := f_IPv4IPv6_IcmpEchoReply(v_PacketInfoTX.DestAddr, v_PacketInfoTX.SourceAddr, v_SequenceNumber); + v_PacketInfoExpected := f_IPv4IPv6Packet_GetInfo(v_ExpectedIcmpEchoReplyPacket); + + return ((v_PacketInfoRX.Protocol == v_PacketInfoExpected.Protocol) and + (v_PacketInfoRX.SourceAddr == v_PacketInfoExpected.SourceAddr) and + (v_PacketInfoRX.DestAddr == v_PacketInfoExpected.DestAddr) and + (v_PacketInfoRX.Payload == v_PacketInfoExpected.Payload)); + } + else { + return (p_IpPacketTX == p_IpPacketRX); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc get IP packet to be sent to the UE for check of user plane connectivity according to 38.508-1 clause 4.9.1 + * @param p_PdnType + * @param p_BearerType + * @param p_SequenceNumber + * @param p_CheckPING (default value: true) + * @return octetstring + * @status APPROVED (ENDC, NR5GC, NR5GC_IRAT) + */ + function f_LoopbackModeBorPing_GetDataTX(PDN_Index_Type p_PdnType, + DataPathCheck_BearerType_Type p_BearerType, + integer p_SequenceNumber, + boolean p_CheckPING := true) return octetstring + { /* @sic R5-193981, R5-193983: p_BearerType sic@ */ + var charstring v_IP_AddressUE := f_LoopbackModeB_IP_Address_UE(-, p_PdnType); + var PDN_Index_Type v_PdnIndex := p_PdnType; + var charstring v_SourceAddr; + var charstring v_DestAddr; + var octetstring v_IpPacket; + var boolean v_UsePING := p_CheckPING and pc_IP_Ping; // @sic R5s190554 only use PING if required by test case sic@ + + select (p_BearerType) { + case (dedicatedBearer) { /* Dedicated bearer */ + v_SourceAddr := f_LoopbackModeB_IP_Address_NW(-, v_PdnIndex); /* source address is the NW address of the PDN which the DRB belongs to */ + if (v_UsePING) { + v_DestAddr := v_IP_AddressUE; + } else { + v_DestAddr := v_SourceAddr; /* same IP address for source and destination to match UL and DL packet filters */ + } + } + case (defaultBearer) { /* Default bearer */ + v_DestAddr := v_IP_AddressUE; + if (v_UsePING) { + if (p_PdnType == PDN_1) { + v_PdnIndex := PDN_2; + } else { + v_PdnIndex := PDN_1; + } + v_SourceAddr := f_LoopbackModeB_IP_Address_NW(-, v_PdnIndex); /* different address than NW address of the PDN which the DRB belongs to + => IP packet does not match packet filter of dedicated bearer (if any) */ + } else { + v_SourceAddr := v_DestAddr; /* the UE's IP address as source and destination address as according to 36.523-3 clause 7.14.2 */ + } + } + } + if (v_UsePING) { + v_IpPacket := f_IPv4IPv6_IcmpEchoRequest(v_SourceAddr, v_DestAddr, p_SequenceNumber); + } else { + v_IpPacket := f_IPv4IPv6_IcmpEchoReply(v_SourceAddr, v_DestAddr, p_SequenceNumber); + } + return v_IpPacket; + } + +} diff --git a/ttcn/Lib3GPP/CommonIP/LoopbackIP_PacketFilterTest.ttcn b/ttcn/Lib3GPP/CommonIP/LoopbackIP_PacketFilterTest.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..3a90bc297c336adddadc82dde73d3598cde21a9b --- /dev/null +++ b/ttcn/Lib3GPP/CommonIP/LoopbackIP_PacketFilterTest.ttcn @@ -0,0 +1,269 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2019-11-16 12:44:38 +0100 (Sat, 16 Nov 2019) $ +// $Rev: 26175 $ +/******************************************************************************/ + +module LoopbackIP_PacketFilterTest { + + import from CommonDefs all; + import from CommonIP all; + import from LoopbackIP all; + + //---------------------------------------------------------------------------- + /* + * @desc Common function to create IPv4 or IPv6 datagram + * @param p_IpTypeIsIPv4 + * @param p_Protocol + * @param p_IPv4_SourceAddr + * @param p_IPv4_DestAddr + * @param p_IPv6_SourceAddr + * @param p_IPv6_DestAddr + * @param p_IPv6_FlowLabel + * @param p_SourcePort + * @param p_DestPort + * @param p_IPSecSPI + * @param p_TOS_TC + * @return octetstring + * @status APPROVED (LTE, NBIOT, NR5GC, UTRAN) + */ + function f_PacketFilterTest_CreateDatagram(boolean p_IpTypeIsIPv4, + UInt8_Type p_Protocol, + charstring p_IPv4_SourceAddr, + charstring p_IPv4_DestAddr, + charstring p_IPv6_SourceAddr, + charstring p_IPv6_DestAddr, + UInt20_Type p_IPv6_FlowLabel, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + O4_Type p_IPSecSPI, + O1_Type p_TOS_TC) return octetstring + { + var octetstring v_IpPacket; + var octetstring v_IPPayload; + + if (p_IpTypeIsIPv4) { + select (p_Protocol) { + case (tsc_IP_Protocol_UDP) { + v_IPPayload := f_IPv4UdpDatagram_Create(p_IPv4_SourceAddr, p_IPv4_DestAddr, p_SourcePort, p_DestPort, tsc_IP_AnyData); + } + case (tsc_IP_Protocol_TCP) { + v_IPPayload := f_IPv4TcpDatagram_Create(p_IPv4_SourceAddr, p_IPv4_DestAddr, p_SourcePort, p_DestPort, tsc_IP_AnyData); + } + case (tsc_IP_Protocol_IPSec) { + v_IPPayload := f_IPSecESPDatagram_Create(p_Protocol, + p_IPSecSPI, + f_IPv4UdpDatagram_Create(p_IPv4_SourceAddr, p_IPv4_DestAddr, p_SourcePort, p_DestPort, tsc_IP_AnyData)); + } + } + v_IpPacket := f_IPv4Packet_Create(-, p_TOS_TC, p_Protocol, p_IPv4_SourceAddr, p_IPv4_DestAddr, v_IPPayload); + } + else { + select (p_Protocol) { + case (tsc_IP_Protocol_UDP) { + v_IPPayload := f_IPv6UdpDatagram_Create(p_IPv6_SourceAddr, p_IPv6_DestAddr, p_SourcePort, p_DestPort, tsc_IP_AnyData); + } + case (tsc_IP_Protocol_TCP) { + v_IPPayload := f_IPv6TcpDatagram_Create(p_IPv6_SourceAddr, p_IPv6_DestAddr, p_SourcePort, p_DestPort, tsc_IP_AnyData); + } + case (tsc_IP_Protocol_IPSec) { + v_IPPayload := f_IPSecESPDatagram_Create(p_Protocol, + p_IPSecSPI, + f_IPv6UdpDatagram_Create(p_IPv6_SourceAddr, p_IPv6_DestAddr, p_SourcePort, p_DestPort, tsc_IP_AnyData)); + } + } + v_IpPacket := f_IPv6Packet_Create(p_TOS_TC, p_IPv6_FlowLabel, p_Protocol, -, p_IPv6_SourceAddr, p_IPv6_DestAddr, v_IPPayload); + + } + return v_IpPacket; + } + + //---------------------------------------------------------------------------- + /* + * @desc Establish IP packets used in test case 10.9.1 + * @param p_IpTypeIsIPv4 + * @param p_Index + * @return octetstring + * @status APPROVED (LTE, UTRAN) + */ + function f_PacketFilterTest_CreateDatagram_10_9_1(boolean p_IpTypeIsIPv4, + integer p_Index) return octetstring + { + var charstring v_IPv4_SourceAddr := "192.168.0.1"; + var charstring v_IPv4_DestAddr := "172.168.8.1"; + var charstring v_IPv6_SourceAddr := "fe80::1:1"; + var charstring v_IPv6_DestAddr := "2001:0ba0::0001:0001"; // @sic R5s110645 sic@ + var UInt20_Type v_IPv6_FlowLabel := 10; + var UInt16_Type v_SourcePort; + var UInt16_Type v_DestPort; + var O1_Type v_TOS_TC; + var UInt8_Type v_Protocol; + var O4_Type v_IPSecSPI := '0F80F000'O; // @sic R5s110645 sic@ + + select (p_Index) { // Index is packet number per prose + case (1) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60001; + v_DestPort := 60350; + v_TOS_TC := 'A9'O; + } + case (2) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60001; + v_DestPort := 60350; + v_TOS_TC := 'A9'O; + v_IPv4_DestAddr := "172.168.9.1"; // modified wrt base IP packet #1 + v_IPv6_DestAddr := "2001:0bb0::0001:0001"; // modified wrt base IP packet #1 @sic R5s110645 sic@ + } + case (3) { + v_Protocol := tsc_IP_Protocol_TCP; // modified wrt base IP packet #1 + v_SourcePort := 60001; + v_DestPort := 60350; + v_TOS_TC := 'A9'O; + } + case (4) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60002; // modified wrt base IP packet #1 + v_DestPort := 60350; + v_TOS_TC := 'A9'O; + } + case (5) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60101; // modified wrt base IP packet #1 + v_DestPort := 60350; + v_TOS_TC := 'A9'O; + } + case (6) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60001; + v_DestPort := 60351; // modified wrt base IP packet #1 + v_TOS_TC := 'A9'O; + } + case (7) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60001; + v_DestPort := 60451; // modified wrt base IP packet #1 + v_TOS_TC := 'A9'O; + } + case (8) { + v_Protocol := tsc_IP_Protocol_UDP; + v_SourcePort := 60001; + v_DestPort := 60350; + v_TOS_TC := 'E9'O; // modified wrt base IP packet #1 + } + case (9) { + v_Protocol := tsc_IP_Protocol_IPSec; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'A2'O; + } + case (10) { + v_Protocol := tsc_IP_Protocol_IPSec; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'A2'O; + v_IPv4_DestAddr := "172.168.9.1"; // modified wrt base IP packet #9 + v_IPv6_DestAddr := "2001:0bb0::0001:0001"; // modified wrt base IP packet #9 @sic R5s110645 sic@ + } + case (11) { + v_Protocol := tsc_IP_Protocol_TCP; // modified wrt base IP packet #9 + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'A2'O; + } + case (12) { + v_Protocol := tsc_IP_Protocol_IPSec; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'A2'O; + v_IPSecSPI := 'F90F0000'O; // modified wrt base IP packet #9 + } + case (13) { + v_Protocol := tsc_IP_Protocol_IPSec; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'E9'O; // modified wrt base IP packet #9 + } + case (14) { + v_Protocol := tsc_IP_Protocol_TCP; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'B3'O; + v_IPv6_FlowLabel := 5; + + if (p_IpTypeIsIPv4) { + FatalError(__FILE__, __LINE__, "packet id 14 is not for IPv4"); + } + } + case (15) { + v_Protocol := tsc_IP_Protocol_TCP; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'B3'O; + v_IPv6_FlowLabel := 5; + v_IPv6_DestAddr := "2001:0bb0::0001:0001"; // modified wrt base IP packet #14 @sic R5s110645 sic@ + + if (p_IpTypeIsIPv4) { + FatalError(__FILE__, __LINE__, "packet id 15 is not for IPv4"); + } + } + case (16) { + v_Protocol := tsc_IP_Protocol_TCP; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'E9'O; // modified wrt base IP packet #14 + v_IPv6_FlowLabel := 5; + + if (p_IpTypeIsIPv4) { + FatalError(__FILE__, __LINE__, "packet id 16 is not for IPv4"); + } + } + case (17) { + v_Protocol := tsc_IP_Protocol_TCP; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'B3'O; + v_IPv6_FlowLabel := 10; // modified wrt base IP packet #14 + + if (p_IpTypeIsIPv4) { + FatalError(__FILE__, __LINE__, "packet id 17 is not for IPv4"); + } + } + case (18) { + v_Protocol := tsc_IP_Protocol_TCP; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'AA'O; + } + case (19) { + v_Protocol := tsc_IP_Protocol_TCP; + v_SourcePort := 60101; + v_DestPort := 60451; + v_TOS_TC := 'AA'O; + v_IPv4_DestAddr := "172.168.9.1"; // modified wrt base IP packet #18 @sic R5s110604 sic@ + v_IPv6_DestAddr := "2001:0ba1::0001:0001"; // modified wrt base IP packet #18 @sic R5s110645 sic@ + } + case else { + // out of supported range + FatalError(__FILE__, __LINE__, "unsupported packet id"); + } + } + return f_PacketFilterTest_CreateDatagram(p_IpTypeIsIPv4, + v_Protocol, + v_IPv4_SourceAddr, + v_IPv4_DestAddr, + v_IPv6_SourceAddr, + v_IPv6_DestAddr, + v_IPv6_FlowLabel, + v_SourcePort, + v_DestPort, + v_IPSecSPI, + v_TOS_TC); + } + +} diff --git a/ttcn/Lib3GPP/CommonIP/module.mk b/ttcn/Lib3GPP/CommonIP/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..e368d13a9153174d8b091b6f1f75b896e4546f4b --- /dev/null +++ b/ttcn/Lib3GPP/CommonIP/module.mk @@ -0,0 +1,6 @@ +sources := \ + CommonIP.ttcn \ + LoopbackIP_PacketFilterTest.ttcn \ + LoopbackIP.ttcn + +modules :=\ diff --git a/ttcn/Lib3GPP/EPS_NAS/EPS_NAS_LoopBack_TypeDefs.ttcn b/ttcn/Lib3GPP/EPS_NAS/EPS_NAS_LoopBack_TypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..2a519a59ba459fc3d88c2985f2d4b90ace6bd415 --- /dev/null +++ b/ttcn/Lib3GPP/EPS_NAS/EPS_NAS_LoopBack_TypeDefs.ttcn @@ -0,0 +1,343 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2018-06-08 13:10:36 +0200 (Fri, 08 Jun 2018) $ +// $Rev: 21524 $ +/******************************************************************************/ +module EPS_NAS_LoopBack_TypeDefs { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //---------------------------------------------------------------------------- + // General Info Elements (36.509 ) + //---------------------------------------------------------------------------- + + type Octet_Type UE_TestLoopModeB_LB_Setup_Type; +/* type Octet_Type UE_PositioningTechnology_Type; + 36.509 cl 6.9, not needed: corresponding bitstring constants are defined in Positioning ATS @sic R5s170597 - Rel-14 Baseline move sic@ */ + type O4_Type MBMS_PacketCounterValue_Type; + type O4_Type SCPTM_PacketCounterValue_Type; + const integer tsc_MAX_ModeA_LB_Entities := 8; + const integer tsc_MAX_ModeD_Monitor_Entities := 400; // 36.509 cl 7.2 + const integer tsc_MAX_ModeE_Monitor_Entities := 16; // 36.509 cl 7.2 + + //**************************************************************************** + // Test Loop PROTOCOL DEFINITIONS: PDUs + //---------------------------------------------------------------------------- + // Special conformance testing functions for User Equipment messages (36.509 cl. 6) + //---------------------------------------------------------------------------- + + // ============================================================================= + // Close UE Test Loop + // 3G TS 36.509 cl. 6.1 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + + type record CLOSE_UE_TEST_LOOP { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + UE_TestLoopMode_Type ueTestLoopMode, /* M V 1 */ + UE_TestLoopModeA_LB_Setup_Type ueTestLoopModeA_LB_Setup optional, /* C LV 1-25 + present if ueTestLoopMode ='00'F */ + UE_TestLoopModeB_LB_Setup_Type ueTestLoopModeB_LB_Setup optional, /* C V 1 + present if ueTestLoopMode ='01'F/ + represents IP PDU delay time 0..255 seconds */ + UE_TestLoopModeC_LB_Setup_Type ueTestLoopModeC_LB_Setup optional, /* C V 3 + present if ueTestLoopMode ='02'H + @sic R5-155362 D2D sic@ */ + UE_TestLoopModeD_LB_Setup_Type ueTestLoopModeD_LB_Setup optional, /* C LV-E 3-803 + This IE is mandatory present if the IE "UE test loop mode" is set to UE test loop Mode D. Else it shall be absent. + @sic R5-155362 D2D sic@ */ + UE_TestLoopModeE_LB_Setup_Type ueTestLoopModeE_LB_Setup optional, /* C LV 2-18 + This IE is mandatory present if the IE "UE test loop mode" is set to UE test loop Mode E. Else it shall be absent. */ + UE_TestLoopModeF_LB_Setup_Type ueTestLoopModeF_LB_Setup optional, /* C V 2 + This IE is mandatory present if the IE "UE test loop mode" is set to UE test loop Mode F. Else it shall be absent. */ + UE_TestLoopModeGH_LB_Setup_Type ueTestLoopModeGH_LB_Setup optional /* C V 2 + This IE is mandatory present if the IE "UE test loop mode" is set to UE test loop Mode G or UE test loop mode H. Else it shall be absent. */ + }; + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode A LB Setup 36.509 cl. 6.1 + // *** additional Notes: + // The maximum number of LB entities in the LB setup list is less than or equal to 5. + // ----------------------------------------------------------------------------- + type record UE_TestLoopModeA_LB_Setup_Type { + O1_Type iel, + LB_SetupDRB_IE_List_Type lbSetupDrbList optional + }; + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode C LB Setup 36.509 cl. 6.1 + // ============================================================================= + type record UE_TestLoopModeC_LB_Setup_Type { + B8_Type mBSFN_AreaId, //MBSFN area Identity 0.. 255 Binary coded + B4_Type reservedB1, + B4_Type pMCHIdentity, // MCH identity 0.. 14 (binary coded, + B3_Type reservedB2, + B5_Type logChId //Logical channel identity 0..28 (binary coded, + }; + + // ============================================================================= + // LB Setup DRB IE + // UE Test Loop Mode A LB Setup 36.509 cl. 6.1 + // ----------------------------------------------------------------------------- + type record LB_SetupDRB_IE_Type { + B16_Type uplinkPdcpSduSize, + B3_Type reserved, + B5_Type drbIdentity + }; + + type record length (1..tsc_MAX_ModeA_LB_Entities)of LB_SetupDRB_IE_Type LB_SetupDRB_IE_List_Type; + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode D LB Setup 36.509 cl. 6.1 + // ============================================================================= + type record UE_TestLoopModeD_LB_Setup_Type { + B16_Type discMonitorListLength, // Length of UE test loop mode D monitor list in bytes + B7_Type reserved, + B1_Type discAnnounceOrMonitor, // D0 - Discovery Announce or Monitor + DiscMonitorList_Type discMonitorList optional + }; + + type record length (1..tsc_MAX_ModeD_Monitor_Entities) of DiscMonitor_Type DiscMonitorList_Type; // Monitor list + + type record DiscMonitor_Type { + //ProSe App Code (LSBs) #n to monitor + B1_Type proSeAppCodeLSB_A7, + B1_Type proSeAppCodeLSB_A6, + B1_Type proSeAppCodeLSB_A5, + B1_Type proSeAppCodeLSB_A4, + B1_Type proSeAppCodeLSB_A3, + B1_Type proSeAppCodeLSB_A2, + B1_Type proSeAppCodeLSB_A1, + B1_Type proSeAppCodeLSB_A0, + B7_Type reserved, + B1_Type proSeAppCodeLSB_A8 + } + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode E LB Setup 36.509 cl. 6.1 + // ============================================================================= + type record UE_TestLoopModeE_LB_Setup_Type { + B8_Type commMonitorListLength, // Length of UE test loop mode E Monitor setup contents in bytes + B6_Type reserved, + B1_Type commTransmitOrReceive, // Communication Transmit or Receive + CommMonitorList_Type commMonitorList optional, + B1_Type d2dOrV2x // @sic R5-175219: addition of V2x in mode E sic@ + }; + + type record length (1..tsc_MAX_ModeE_Monitor_Entities) of CommMonitor_Type CommMonitorList_Type; + type B8_Type CommMonitor_Type; + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode F LB Setup 36.509 cl. 6.1 + // ============================================================================= + type record UE_TestLoopModeF_LB_Setup_Type { + B16_Type sC_MTCH_ID //SC-MTCH ID + }; + + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode G/H LB Setup 36.509 cl. 6.1 + // ============================================================================= + type record UE_TestLoopModeGH_LB_Setup_Type { // @sic R5s170591 sic@ + B1_Type uplinkLoopbackMode, + B7_Type repetitions, + B8_Type uplinkDataDelay + }; + + // ============================================================================= + // Close UE Test Loop Complete + // 3G TS 36.509 cl. 6.2 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record CLOSE_UE_TEST_LOOP_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // OPEN UE Test Loop + // 3G TS 36.509 cl. 6.3 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record OPEN_UE_TEST_LOOP { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // OPEN UE Test Loop Complete + // 3G TS 36.509 cl. 6.4 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record OPEN_UE_TEST_LOOP_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Activate RB Test Mode + // 3G TS 36.509 cl. 6.5 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record ACTIVATE_TEST_MODE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + UE_TestLoopMode_Type ueTestLoopMode /* M V 1 */ + }; + + // ============================================================================= + // Activate RB Test Mode Complete + // 3G TS 36.509 cl. 6.6 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record ACTIVATE_TEST_MODE_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Deactivate RB Test Mode + // 3G TS 36.509 cl. 6.7 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record DEACTIVATE_TEST_MODE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Deactivate RB Test Mode Complete + // 3G TS 36.509 cl. 6.8 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record DEACTIVATE_TEST_MODE_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // UE TEST LOOP MODE C MBMS PACKET COUNTER REQUEST + // 3G TS 36.509 cl. 6.10 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UE_TESTLOOPMODEC_MBMS_PACKETCOUNTERREQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // UE TEST LOOP MODE C MBMS PACKET COUNTER RESPONSE + // 3G TS 36.509 cl. 6.11 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record UE_TESTLOOPMODEC_MBMS_PACKETCOUNTERRESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + MBMS_PacketCounterValue_Type MBMS_PacketCounterValue /* M V 4 */ + }; + + // ============================================================================= + // UE TEST LOOP PROSE PACKET COUNTER REQUEST + // 3G TS 36.509 cl. 6.13 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UE_TESTLOOP_PROSE_PACKETCOUNTERREQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // UE TEST LOOP PROSE PACKET COUNTER RESPONSE + // 3G TS 36.509 cl. 6.14 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record UE_TESTLOOP_PROSE_PACKETCOUNTERRESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + ProSeDirectDiscPacketCounterValue_Type proSeDirectDiscPacketCounterValue optional, /* CV-ModeD TLV-E 4 * (ND + 1) +3 */ + ProSeDirectCommPSCCH_PacketCounterValue_Type proSeDirectCommPSCCH_PacketCounterValue optional, /* CV-ModeE TLV 4 * (NC + 1) + 2 */ + ProSeDirectCommSTCH_PacketCounterValue_Type proSeDirectCommSTCH_PacketCounterValue optional, /* CV-ModeE TLV 4* (NC + 1) + 2 */ + ProSeDirectCommPSSCH_PacketCounterValue_Type proSeDirectCommPSSCH_PacketCounterValue optional /* CV-ModeE TLV 4 * (NC + 1) + 2 @sic R5-183787 sic@ */ + }; + + type record length(1..tsc_MAX_ModeD_Monitor_Entities) of O4_Type ProSeDirectDiscPacketCounterList_Type; + type record length(1..tsc_MAX_ModeE_Monitor_Entities) of O4_Type ProSeDirectCommPSCCH_PacketCounterList_Type; + type record length(1..tsc_MAX_ModeE_Monitor_Entities) of O4_Type ProSeDirectCommSTCH_PacketCounterList_Type; + type record length(1..tsc_MAX_ModeE_Monitor_Entities) of O4_Type ProSeDirectCommPSSCH_PacketCounterList_Type; // @sic R5-183787 sic@ + + type record ProSeDirectDiscPacketCounterValue_Type { + MessageType proSeDirectDiscPacketCounterValueType, /* shall be '0000 0000'B */ + B16_Type proSeDirectDiscPacketCounterListLength, /* Length of ProSe Direct Discovery Packet Counter(s) Value contents in bytes */ + ProSeDirectDiscPacketCounterList_Type proSeDirectDiscPacketCounterList /* ProSe Direct Discovery Packet Counter IE's */ + }; + + type record ProSeDirectCommPSCCH_PacketCounterValue_Type { + MessageType proSeDirectCommPSCCH_PacketCounterValueType, /* shall be '0000 0001'B */ + B8_Type proSeDirectCommPSCCH_PacketCounterListLength, /* Length of ProSe Direct Communication PSCCH Packet Counter(s) Value contents in bytes */ + ProSeDirectCommPSCCH_PacketCounterList_Type proSeDirectCommPSCCH_PacketCounterList /* ProSe Direct Communication PSCCH Packet Counter IE's */ + }; + + type record ProSeDirectCommSTCH_PacketCounterValue_Type { + MessageType proSeDirectCommSTCH_PacketCounterValueType, /* shall be '0000 0010'B */ + B8_Type proSeDirectCommSTCH_PacketCounterValueLength, /* Length of ProSe Direct Communication PSCCH Packet Counter(s) Value contents in bytes */ + ProSeDirectCommSTCH_PacketCounterList_Type proSeDirectCommSTCH_PacketCounterList /* ProSe Direct Communication PSCCH Packet Counter IE's */ + }; + + type record ProSeDirectCommPSSCH_PacketCounterValue_Type { // @sic R5-183787 sic@ + MessageType proSeDirectCommPSSCH_PacketCounterValueType, /* shall be '0000 0011'B */ + B8_Type proSeDirectCommPSSCH_PacketCounterListLength, /* Length of ProSe Direct Communication PSSCH Packet Counter(s) Value contents in bytes */ + ProSeDirectCommPSSCH_PacketCounterList_Type proSeDirectCommPSSCH_PacketCounterList /* ProSe Direct Communication PSSCH Packet Counter IE's */ + }; + + // ============================================================================= + // UE TEST LOOP MODE F SCPTM PACKET COUNTER REQUEST + // 3G TS 36.509 cl. 6.15 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UE_TESTLOOPMODEF_SCPTM_PACKETCOUNTERREQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // UE TEST LOOP MODE F SCPTM PACKET COUNTER RESPONSE + // 3G TS 36.509 cl. 6.16 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record UE_TESTLOOPMODEF_SCPTM_PACKETCOUNTERRESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + SCPTM_PacketCounterValue_Type sCPTM_PacketCounterValue /* M V 4 */ + }; +} with { encode "NAS Types"} diff --git a/ttcn/Lib3GPP/EPS_NAS/EPS_NAS_TypeDefs.ttcn b/ttcn/Lib3GPP/EPS_NAS/EPS_NAS_TypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..0b40c01e461a21ff33d0a6ac28d793d5be0afec0 --- /dev/null +++ b/ttcn/Lib3GPP/EPS_NAS/EPS_NAS_TypeDefs.ttcn @@ -0,0 +1,1455 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-10-26 11:05:35 +0200 (Wed, 26 Oct 2022) $ +// $Rev: 34526 $ +/******************************************************************************/ + +module EPS_NAS_TypeDefs { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: IEs + //---------------------------------------------------------------------------- + // General Info Elements (24.301 cl. 9) + //---------------------------------------------------------------------------- + + type HalfOctet_Type EPS_BearerIdentity; /* 24.301 cl. 9.3.2 */ + + + // Note: This IE is not needed when SECURITY PROTECTED NAS MESSAGE is + // handled by the NAS emulation An alternative approach would be to + // implement NAS_Message as a union of all NAS messages except + // SECURITY PROTECTED NAS MESSAGE and SERVICE REQUEST - but this would + // have impact on codec implementation and may reduce readability */ + type octetstring NAS_Message; /* 24.301 cl. 9.7 */ + + type O2_Type EPS_MmeGi; + type O1_Type EPS_Mmec; + type O4_Type EPS_M_Tmsi; + type O5_Type EPS_S_Tmsi; + + type B2_Type EPS_PartialTaiListType; + type B4_Type EPS_ServiceTypeValue; + type B3_Type EPS_UpdateTypeValue; + + type O2_Type NAS_Tac; + + //---------------------------------------------------------------------------- + // Common Info Elements (24.301 cl. 9.9.2) + //---------------------------------------------------------------------------- + + type record TrackingAreaId { /* 24.301 cl. 9.9.3.32 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_Tac tac /* TAC */ + }; + + type record length (1..16) of NAS_Tac NAS_TacList; + + type record PartialTai { + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_Tac tac + }; + + type record Type0Element { // @sic R5s100184 sic@ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_TacList tacList + }; + + type record Type1Element { // @sic R5s100184 sic@ + PartialTai partialTac + }; + + type record length (1..16) of PartialTai PlmnAndTacs; + + type record Type2Element { // @sic R5s100184 sic@ + PlmnAndTacs plmnAndTacs + }; + + type record length (1..16) of Type0Element Type0List; + type record length (1..16) of Type1Element Type1List; + type record length (1..16) of Type2Element Type2List; + + type union PartialTaiType { + Type0List type0List, + Type1List type1List, + Type2List type2List + }; + + type record ListOfPartialTaiList { + B1_Type spareBit, + EPS_PartialTaiListType typeOfList, + B5_Type numberOfElements, + PartialTaiType partialTaiList // @sic R5s100184 sic@ + }; + + type record TrackingAreaIdList { /* 24.301 cl. 9.9.3.33 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + record length (1..16) of ListOfPartialTaiList listOfPartialTais + }; + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: PDUs + //---------------------------------------------------------------------------- + // EPS mobility management messages (24.301 cl. 8.2) + //---------------------------------------------------------------------------- + + type record ATTACH_ACCEPT { /* 24.301 cl. 8.2.1 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + EPS_AttachResult epsAttachResult, /* cl. 9.9.3.10 M V 1/2 */ + GPRS_Timer t3412, /* cl. 9.9.3.16 M V 1 */ + TrackingAreaIdList taiList, /* cl. 9.9.3.33 M LV 7-97 */ + ESM_MessageContainer esmMessage, /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */ + MobileIdentity guti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + LocAreaId lai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + MobileIdentity msIdentity optional, /* cl. 9.9.2.3 O TLV 7-10 IEI=0x23 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer t3402 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x17 */ + GPRS_Timer t3423 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x59 */ + PLMN_List equivalentPlmns optional, /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */ + EmergNumList emergencyNumberList optional, /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */ + EPS_NetworkFeatureSupport epsNetworkFeatureSupport optional, /* cl.9.9.3.12A O TLV 3 IEI=0x64 @sic R5s100135 sic@ */ + AdditionalUpdateResult addUpdateResult optional, /* cl.9.9.3.0A O TV 1 IEI=0xF @sic R5s100135 sic@ */ + GPRS_Timer3 t3412ExtdValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ + GPRS_Timer2 t3324Value optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6A @sic R5s150329 Baseline Moving sic@ */ + ExtdDRXParams extendedDRXParams optional, /* 24.008 cl. 10.5.5.32 O TLV 3 IEI=0x6E @sic R5s160711 Baseline Moving sic@*/ + DCN_ID dcnId optional, /* cl. 9.9.3.48 O TLV 4 IEI=0x65 @sic R5s170597 Baseline Moving sic@ */ + SMSServicesStatus smsServicesStatus optional, /* cl. 9.9.3.4b O TLV 1 IEI=0xE @sic R5s170597 Baseline Moving sic@ */ + Non3GPP_NW_ProvidedPolicies non3GPP_NW_ProvidedPolicies optional, /* cl. 9.9.3.49 O TLV 1 IEI=0xD @sic R5s170597 Baseline Moving sic@ */ + GPRS_Timer2 t3448 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6B @sic R5s170597 Baseline Moving sic@ */ + NetworkPolicy networkPolicy optional, /* cl. 9.9.3.52O TV 1 IEI=0xC @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */ + GPRS_Timer3 t3447Value optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x6C @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */ + ExtdEmergNumList xtdEmergencyNumList optional, /* cl. 9.9.3.37A O TLV-E 6-65538 IEI=0x7A @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + CipheringKeyData cipheringKeyData optional, /* cl. 9.9.3.56 O TLV-E 35-2291 IEI=0x7C @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + UERadioCapId ueRadioCapId optional, /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */ + UERadioCapIdDeletion ueRadioCapIdDeleteInd optional, /* cl. 9.9.3.61 O TV 1 IEI=0xB @sic R5s201386 Baseline Moving sic@ */ + WUSAssistInfo negotiatedWUSAssistInfo optional, /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */ + NB_S1_DRXParam negotiatedDRXinNB_S1 optional, /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */ + IMSI_Offset negotiatedIMSI_Offset optional, /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record ATTACH_COMPLETE { /* 24.301 cl. 8.2.2 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_MessageContainer esmMessage /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */ + }; + + type record ATTACH_REJECT { /* 24.301 cl. 8.2.3 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + ESM_MessageContainer esmMessage optional, /* cl. 9.9.3.15 M TLV-E 6-n IEI=0x78 @sic R5s110176 Baseline Moving sic@ */ + GPRS_Timer2 t3346 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ + GPRS_Timer2 t3402 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x16 @sic R5s120178 Baseline Moving sic@*/ + Extd_EMM_Cause extdEMMCause optional, /* cl. 9.9.3.26A O TV 1 IEI=0xA @sic R5s150329 Baseline Moving sic@ */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record ATTACH_REQUEST { /* 24.301 cl. 8.2.4 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_AttachType epsAttachType, /* cl. 9.9.3.11 M V 1/2 */ + MobileIdentity epsMobileIdentity, /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */ + UE_NetworkCap ueNetworkCapability, /* cl. 9.9.3.34 M LV 3-14 */ + ESM_MessageContainer esmMessage, /* cl. 9.9.3.15 M LV-E 5-n */ + PTMSI_Signature oldPtmsiSignature optional, /* cl 10.5.5.8 of 24.008 O TV 4 IEI=Ox19*/ + MobileIdentity additionalGuti optional, /* cl 9.9.3.12 O TLV 13 IEI=Ox50*/ + TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */ + DRXparameter drxParameter optional, /* cl. 9.9.3.8 O TV 3 IEI=Ox5c */ + MS_NetworkCap msNetworkCapability optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=Ox31 */ + LocAreaId oldLai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + TMSI_Status tmsiStatus optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.9.2.4 O TLV 5 IEI=0x11 */ + MS_Clsmk3 msClassmark3 optional, /* cl. 9.9.2.5 O TLV 2-34 IEI=0x20 */ + CodecList supportedCodecList optional, /* cl. 9.9.2.10 O TLV 5-n IEI=0x40 */ + AdditionalUpdateType addUpdateType optional, /* cl.9.9.3.0B O TV 1 IEI=0xF @sic R5s100135 sic@ */ + VoiceDomainPref voiceDomainPref optional, /* cl.9.9.3.44 O TLV 3 IEI=0x5D @sic R5s110176 Baseline Moving sic@ */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + GUTI_Type oldGUTI_Type optional, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional, /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ + GPRS_Timer2 t3324Value optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6A @sic R5s150329 Baseline Moving sic@ */ + GPRS_Timer3 t3412ExtdValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s150329 Baseline Moving sic@*/ + ExtdDRXParams extendedDRXParams optional, /* 24.008 cl. 10.5.5.32 O TLV 3 IEI=0x6E @sic R5s160711 Baseline Moving sic@*/ + UE_AdditionalSecurityCapability ueAddSecurityCap optional, /* cl. 9.9.3.53 O TLV 6 IEI=0x6F @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */ + UE_Status ueStatus optional, /* cl. 9.9.3.54 O TLV 3 IEI=0x6D @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + AdditionalInfoReq addInfoReq optional, /* cl. 9.9.3.55 O TLV 2 IEI=0x17 @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + N1_UENetworkCap n1UENetworkCap optional, /* cl. 9.9.3.57 O TLV 3-15 IEI=0x32 @sic R5s201386 Baseline Moving sic@ */ + UERadioCapIdAvailability ueRadioCapIdAvailability optional, /* cl. 9.9.3.58 O TLV 3 IEI=0x34 @sic R5s201386 Baseline Moving sic@ */ + WUSAssistInfo requestedWUSAssistInfo optional, /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */ + NB_S1_DRXParam drxInNB_S1 optional, /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */ + IMSI_Offset requestedIMSI_Offset optional /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record AUTHENTICATION_FAILURE { /* 24.301 cl. 8.2.5 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + AuthenticationFailureParameter authenticationFailureParameter optional /* cl. 9.9.3.1 O TLV 16 IEI=0x30 */ + }; + + type record AUTHENTICATION_REJECT { /* 24.301 cl. 8.2.6 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + type record AUTHENTICATION_REQUEST { /* 24.301 cl. 8.2.7 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + RAND rand, /* cl. 9.9.3.3 M V 16 */ + AUTN autn /* cl. 9.9.3.2 M LV 17 */ + }; + + type record AUTHENTICATION_RESPONSE { /* 24.301 cl. 8.2.8 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + AuthenticationResponseParameter authenticationResponseParameter /* cl. 9.9.3.4 M LV 5-17 */ + }; + + type record CS_SERVICE_NOTIFICATION { /* 24.301 cl. 8.2.9 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + PagingIdentity pagingIdentity, /* cl. 9.9.3.25A M V 1 @sic R5s100135 sic@ */ + CLI cli optional, /* cl. 9.9.3.38 O TLV 3-14 IEI=0x60 */ + SsCode ssCode optional, /* cl. 9.9.3.39 O TV 2 IEI=0x61 */ + LcsIndicator lcsIndicator optional, /* cl. 9.9.3.40 O TV 2 IEI=0x62 */ + LcsClientIdentity lcsClientIdentity optional /* cl. 9.9.3.41 O TLV 3-257 IEI=0x63 */ + }; + + type record DETACH_ACCEPT { /* 24.301 cl. 8.2.10.1/2 (both directions) + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + type record DETACH_REQUEST_MO { /* 24.301 cl. 8.2.11.1 (UE originating detach) + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + DetachType detachType, /* cl. 9.9.3.7 M V 1/2 */ + MobileIdentity epsMobileIdentity /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */ + }; + + type record DETACH_REQUEST_MT { /* 24.301 cl. 8.2.11.2 (UE terminated detach) + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + DetachType detachType, /* cl. 9.9.3.7 M V 1/2 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record DL_NAS_TRANSPORT { /* 24.301 cl. 8.2.12 + Significance: local + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_MessageContainer nasMessage /* cl. 9.9.3.22 M LV 3-252 */ + }; + + type record EMM_INFORMATION { /* 24.301 cl. 8.2.13 + Significance: local + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NetworkName fullNetworkName optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x43 */ + NetworkName shortNetworkName optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x45 */ + TimeZone localTimeZone optional, /* cl. 9.9.3.29 O TV 2 IEI=0x46 */ + TimeZoneAndTime localTimeZoneAndTime optional, /* cl. 9.9.3.30 O TV 8 IEI=0x47 */ + DaylightSavingTime daylightSavingTime optional /* cl. 9.9.3.6 O TLV 3 IEI=0x49 */ + }; + + type record EMM_STATUS { /* 24.301 cl. 8.2.14 + Significance: local + Direction: both */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause /* cl. 9.9.3.9 M V 1 */ + }; + + type record EXT_SERVICE_REQUEST { /* 24.301 cl. 8.2.15 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_ServiceType serviceType, /* cl. 9.9.3.27 M V 1/2 */ + MobileIdentity mTMSI, /* cl. 9.9.2.3 M LV 6 */ + CSFBResponse csfbResponse optional, /* cl. 9.9.3.5 C TV 1 IEI=0xB- */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 @sic R5s110176 Baseline Moving sic@ */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + UE_RequestType ueRequestType optional, /* cl. 9.9.3.65 O TLV 3 IEI=0x29 Sep22 @sic R5s221178 Baseline Moving sic@ */ + PagingRestriction pagingRestriction optional /* cl. 9.9.3.66 O TLV 3-5 IEI=0x28 Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record GUTI_REALLOCATION_COMMAND { /* 24.301 cl. 8.2.16 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity guti, /* cl. 9.9.3.12 M LV 12 */ + TrackingAreaIdList taiList optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */ + DCN_ID dcnId optional, /* cl. 9.9.3.48 O TLV 4 IEI=0x65 @sic R5s170597 Baseline Moving sic@ */ + UERadioCapId ueRadioCapId optional, /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */ + UERadioCapIdDeletion ueRadioCapIdDeleteInd optional /* cl. 9.9.3.61 O TV 1 IEI=0xB @sic R5s201386 Baseline Moving sic@ */ + }; + + type record GUTI_REALLOCATION_COMPLETE { /* 24.301 cl. 8.2.17 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + type record IDENTITY_REQUEST { /* 24.301 cl. 8.2.18 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + IdentityType identityType2 /* cl. 9.9.3.17 M V 1/2 */ + }; + + type record IDENTITY_RESPONSE { /* 24.301 cl. 8.2.19 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity mobileIdentity /* cl. 9.9.2.3 M LV 4-10 */ + }; + + type record SECURITY_MODE_COMMAND { /* 24.301 cl. 8.2.20 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_SecurityAlgorithms nasSecurityAlgorithms, /* cl. 9.9.3.23 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + UE_SecurityCapability replayedSecurityCapability, /* cl. 9.9.3.36 M LV 3-6 */ + IMEISV_Request imeisvRequest optional, /* cl. 9.9.3.18 O TV 1 IEI=0xC- */ + Nonce replayedNonceUe optional, /* cl. 9.9.3.25 O TV 5 IEI=0x55 */ + Nonce nonceMme optional, /* cl. 9.9.3.25 O TV 5 IEI=0x56 */ + HashMME hashMME optional, /* cl. 9.9.3.50 O TLV 10 IEI=0x4F @sic R5s170597 Baseline Moving sic@ */ + UE_AdditionalSecurityCapability replayedUEAddSecurityCap optional, // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + UERadioCapIdRequest ueRadioCapIdRequest optional /* cl. 9.9.3.59 O TLV 3 IEI=0x37 @sic R5s201386 Baseline Moving sic@ */ + }; + + type record SECURITY_MODE_COMPLETE { /* 24.301 cl. 8.2.21 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity imeisv optional, /* cl. 9.9.2.3 O TLV 11 IEI=0x23 */ + ReplayedNASMessageContainer replayedNASMsg optional, /* cl. 9.9.3.51 O TLV-E 3-n IEI=0x79 @sic R5s170597 Baseline Moving sic@ */ + UERadioCapId ueRadioCapId optional /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */ + }; + + type record SECURITY_MODE_REJECT { /* 24.301 cl. 8.2.22 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause /* cl. 9.9.3.9 M V 1 */ + }; + + type record SECURITY_PROTECTED_NAS_MESSAGE { /* 24.301 cl. 8.2.23 + Significance: dual + Direction: both */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageAuthenticationCode messageAuthenticationCode, /* cl. 9.5 M V 4 */ + NAS_SequenceNumber sequenceNumber, /* cl. 9.6 M V 1 */ + NAS_Message nasMessage /* cl. 9.7 M V 1-n */ + }; + + type record SERVICE_REJECT { /* 24.301 cl. 8.2.24 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + GPRS_Timer t3442 optional, /* cl. 9.9.3.16 C TV 2 IEI=0x5b */ + GPRS_Timer2 t3346 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@ */ + GPRS_Timer2 t3448 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6B @sic R5s170597 Baseline Moving sic@ */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record SERVICE_REQUEST { /* 24.301 cl. 8.2.25 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + KSIandSN ksiAndSN, /* cl. 9.9.3.19 M V 1 */ + ShortMAC shortMAC /* cl. 9.9.3.28 M V 2 */ + }; + + type record TRACKING_AREA_UPDATE_ACCEPT { /* 24.301 cl. 8.2.26 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + EPS_UpdateResult epsUpdateResult, /* cl. 9.9.3.13 M V 1/2 */ + GPRS_Timer t3412 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x5a */ + MobileIdentity guti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + TrackingAreaIdList taiList optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + LocAreaId lai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + MobileIdentity msIdentity optional, /* cl. 9.9.2.3 O TLV 7-10 IEI=0x23 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer t3402 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x17 */ + GPRS_Timer t3423 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x59 */ + PLMN_List equivalentPlmns optional, /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */ + NAS_KeySetIdentifier asmeNasKeySetId optional, /* cl. 9.9.3.21 O TV 1 IEI=0x8-*/ + EmergNumList emergencyNumberList optional, /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */ + EPS_NetworkFeatureSupport epsNetworkFeatureSupport optional, /* cl.9.9.3.12A O TLV 3 IEI=0x64 @sic R5s100135 sic@ */ + AdditionalUpdateResult addUpdateResult optional, /* cl.9.9.3.0A O TV IEI=0xF @sic R5s100135 sic@ */ + GPRS_Timer3 t3412ExtdValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ + GPRS_Timer2 t3324Value optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6A @sic R5s150329 Baseline Moving sic@ */ + ExtdDRXParams extendedDRXParams optional, /* 24.008 cl. 10.5.5.32 O TLV 3 IEI=0x6E @sic R5s160711 Baseline Moving sic@*/ + HeaderCompressConfigStatus headerCompressionConfigStatus optional, /* cl. 9.9.4.27 O TLV 4 IEI=0x68 @sic R5s160711 Baseline Moving sic@ */ + DCN_ID dcnId optional, /* cl. 9.9.3.48 O TLV 4 IEI=0x65 @sic R5s170597 Baseline Moving sic@ */ + SMSServicesStatus smsServicesStatus optional, /* cl. 9.9.3.4b O TLV 1 IEI=0xE @sic R5s170597 Baseline Moving sic@ */ + Non3GPP_NW_ProvidedPolicies non3GPP_NW_ProvidedPolicies optional, /* cl. 9.9.3.49 O TLV 1 IEI=0xD @sic R5s170597 Baseline Moving sic@ */ + GPRS_Timer2 t3448 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6B @sic R5s170597 Baseline Moving sic@ */ + NetworkPolicy networkPolicy optional, // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + GPRS_Timer3 t3447Value optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6C @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */ + ExtdEmergNumList xtdEmergencyNumList optional, /* cl. 9.9.3.37A O TLV-E 6-65538 IEI=0x7A @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + CipheringKeyData cipheringKeyData optional, /* cl. 9.9.3.56 O TLV-E 35-2291 IEI=0x7C @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + UERadioCapId ueRadioCapId optional, /* cl. 9.9.3.60 O TLV 3-n IEI=0x66 @sic R5s201386 Baseline Moving sic@ */ + UERadioCapIdDeletion ueRadioCapIdDeleteInd optional, /* cl. 9.9.3.61 O TV 1 IEI=0xB @sic R5s201386 Baseline Moving sic@ */ + WUSAssistInfo negotiatedWUSAssistInfo optional, /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */ + NB_S1_DRXParam negotiatedDRXinNB_S1 optional, /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */ + IMSI_Offset negotiatedIMSI_Offset optional, /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */ + EPS_AddReqResult epsAddRequestResult optional, /* cl. 9.9.3.67 O TLV 3 IEI=0x37 Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record TRACKING_AREA_UPDATE_COMPLETE { /* 24.301 cl. 8.2.27 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + type record TRACKING_AREA_UPDATE_REJECT { /* 24.301 cl. 8.2.28 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + GPRS_Timer2 t3346 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ + Extd_EMM_Cause extdEMMCause optional, /* cl. 9.9.3.26A O TV 1 IEI=0xA @sic R5s150329 Baseline Moving sic@ */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x1C Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1D Sep22 @sic R5s221178 Baseline Moving sic@ */ + TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x1E Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record TRACKING_AREA_UPDATE_REQUEST { /* 24.301 cl. 8.2.29 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_UpdateType epsUpdateType, /* cl. 9.9.3.14 M V 1/2 */ + MobileIdentity oldGuti, /* cl. 9.9.3.12 M LV 12 */ + NAS_KeySetIdentifier nonCurrentNativeNasKeySetId optional, /* cl. 9.9.3.21 O TV 1 IEI=0xB- */ + CiphKeySeqNum gprsCipheringKeySeqNum optional, /* cl. 9.9.3.4a O TV 1 IEI=0x8- @sic R5s100135 sic@ */ + PTMSI_Signature oldPtmsiSignature optional, /* cl. 9.9.3.26 O TV 4 IEI=0x19 */ + MobileIdentity additionalGuti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + Nonce nonce optional, /* cl. 9.9.3.25 O TV 5 IEI=0x55 */ + UE_NetworkCap ueNetworkCapability optional, /* cl. 9.9.3.34 O TLV 4-10 IEI=0x58 */ + TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */ + DRXparameter drxParameter optional, /* cl. 9.9.3.8 O TV 3 IEI=Ox5c */ + UERadioCapInfoUpdateNeeded ueRadioCapNeeded optional, /* cl. 9.9.3.35 O TV 1 IEI=OxA- */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + MS_NetworkCap msNetworkCapability optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=0x31 */ + LocAreaId oldLai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + TMSI_Status tmsiStatus optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.9.2.4 O TLV 5 IEI=0x11 */ + MS_Clsmk3 msClassmark3 optional, /* cl. 9.9.2.5 O TLV 2-34 IEI=0x20 */ + CodecList supportedCodecList optional, /* cl. 9.9.2.10 O TLV 5-n IEI=0x40 */ + AdditionalUpdateType addUpdateType optional, /* cl.9.9.3.0B O TV IEI=0xF @sic R5s100135 sic@ */ + VoiceDomainPref voiceDomainPref optional, /* cl.9.9.3.44 O TLV 3 IEI=0x5D @sic R5s110176 Baseline Moving sic@ */ + GUTI_Type oldGUTI_Type optional, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional, /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ + GPRS_Timer2 t3324Value optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6A @sic R5s150329 Baseline Moving sic@ */ + GPRS_Timer3 t3412ExtdValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s150329 Baseline Moving sic@*/ + ExtdDRXParams extendedDRXParams optional, /* 24.008 cl. 10.5.5.32 O TLV 3 IEI=0x6E @sic R5s160711 Baseline Moving sic@*/ + UE_AdditionalSecurityCapability ueAddSecurityCap optional, /* cl. 9.9.3.53 O TLV 6 IEI=0x6F @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ */ + UE_Status ueStatus optional, /* cl. 9.9.3.54 O TLV 3 IEI=0x6D @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + AdditionalInfoReq addInfoReq optional, /* cl. 9.9.3.55 O TLV 2 IEI=0x17 @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + N1_UENetworkCap n1UENetworkCap optional, /* cl. 9.9.3.57 O TLV 3-15 IEI=0x32 @sic R5s201386 Baseline Moving sic@ */ + UERadioCapIdAvailability ueRadioCapIdAvailability optional, /* cl. 9.9.3.58 O TV 3 IEI=0x34 @sic R5s201386 Baseline Moving sic@ */ + WUSAssistInfo requestedWUSAssistInfo optional, /* cl. 9.9.3.62 O TLV 3-n IEI=0x35 @sic R5s201386 Baseline Moving sic@ */ + NB_S1_DRXParam drxInNB_S1 optional, /* cl. 9.9.3.63 O TLV 3 IEI=0x36 @sic R5s201386 Baseline Moving sic@ */ + IMSI_Offset requestedIMSI_Offset optional, /* cl. 9.9.3.64 O TLV 4 IEI=0x38 Sep22 @sic R5s221178 Baseline Moving sic@ */ + UE_RequestType ueRequestType optional, /* cl. 9.9.3.65 O TLV 3 IEI=0x29 Sep22 @sic R5s221178 Baseline Moving sic@ */ + PagingRestriction pagingRestriction optional /* cl. 9.9.3.66 O TLV 3-5 IEI=0x28 Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record UL_NAS_TRANSPORT { /* 24.301 cl. 8.2.30 + Significance: local + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_MessageContainer nasMessage /* cl. 9.9.3.22 M LV 3-252 */ + }; + + type record DL_GENERIC_NAS_TRANSPORT{ /* 24.301 cl. 8.2.31 + Significance: dual + Direction: network to UE @sic R5s110176 Baseline Moving sic@ */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + GenericMessageContainerType genericMessageContainerType, /* cl. 9.9.3.42 M V 1 */ + GenericMessageContainer genericMessageContainer, /* cl. 9.9.3.43 M LV-E 3-n */ + AdditionalInformation additionalInformation optional /* cl. 9.9.2.0 O TLV 3-n IEI=65 */ + }; + + type record UL_GENERIC_NAS_TRANSPORT{ /* 24.301 cl. 8.2.32 + Significance: dual + Direction: UE to network @sic R5s110176 Baseline Moving sic@ */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + GenericMessageContainerType genericMessageContainerType, /* cl. 9.9.3.42 M V 1 */ + GenericMessageContainer genericMessageContainer, /* cl. 9.9.3.43 M LV-E 3-n */ + AdditionalInformation additionalInformation optional /* cl. 9.9.2.0 O TLV 3-n IEI=65 */ + }; + + type record CONTROL_PLANE_SERVICE_REQUEST { /* 24.301 cl. 8.2.33 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + ControlPlaneServiceType controlPlaneServiceType, /* cl. 9.9.3.47 M V 1/2 @sic R5s170597 Baseline Moving sic@ */ + ESM_MessageContainer esmMessage optional, /* cl. 9.9.3.15 O TLV-E 3-n IEI = 78 */ + NAS_MessageContainer nasMessage optional, /* cl. 9.9.3.22 O TLV 4-253 IEI = 67 */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57*/ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- */ + UE_RequestType ueRequestType optional, /* cl. 9.9.3.65 O TLV 3 IEI=0x29 Sep22 @sic R5s221178 Baseline Moving sic@ */ + PagingRestriction pagingRestriction optional /* cl. 9.9.3.66 O TLV 3-5 IEI=0x28 Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record SERVICE_ACCEPT { /* 24.301 cl. 8.2.34 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + GPRS_Timer2 t3448 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x6B @sic R5s170597 Baseline Moving sic@ */ + EPS_AddReqResult epsAddRequestResult optional /* cl. 9.9.3.67 O TLV 3 IEI=0x37 Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + //---------------------------------------------------------------------------- + // EPS session management messages (24.301 cl. 8.3) + //---------------------------------------------------------------------------- + + type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.1 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.2 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.3 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + EPS_QualityOfService epsQos, /* cl. 9.9.4.3 M LV 2-14 */ + TrafficFlowTemplate tft, /* cl. 9.9.4.16 M LV 2-256 */ + TransactionIdentifier transactionIdentifier optional, /* cl. 9.9.4.17 O TLV 3-4 IEI=0x5d */ + QualityOfService negotiatedQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.8 O TLV 3 IEI=0x34 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + WLANOffloadAcceptability wlanOffloadInd optional, /* cl. 9.9.4.18 O TLV 1 IEI=0xC @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + Extd_EPS_QOS extd_EPS_QOS optional // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + }; + + type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.4 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.5 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.6 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_QualityOfService epsQos, /* cl. 9.9.4.3 M LV 2-14 */ + AccessPointName accessPointName, /* cl. 9.9.4.1 M LV 2-101 */ + PDN_Address pdnAdress, /* cl. 9.9.4.9 M LV 6-14 */ + TransactionIdentifier transactionIdentifier optional, /* cl. 9.9.4.17 O TLV 3-4 IEI=0x5d */ + QualityOfService negotiatedQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.8 O TLV 3 IEI=0x34 */ + APN_AMBR apnAggMaxBitRate optional, /* cl. 9.9.4.2 O TLV 4-8 IEI=0x5e */ + ESM_Cause esmCause optional, /* cl. 9.9.4.4 O TV 2 IEI=0x58 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ConnectivityType connectivityType optional, /* cl. 9.9.2.0A O TV 1 IEI=0xB- @sic R5s120178 Baseline Moving sic@*/ + WLANOffloadAcceptability wlanOffloadInd optional, /* cl. 9.9.4.18 O TV 1 IEI=0xC @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + HeaderCompressConfig headerCompressionConfig optional, /* cl. 9.9.4.22 O TLV 6-257 IEI=0x66 @sic R5s160711 Baseline Moving sic@*/ + ControlPlaneInd controlPlaneOnlyIndication optional, /* cl. 9.9.4.23 O TV 1 IEI=0x9- @sic R5s160711 Baseline Moving sic@ */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + ServingPLMNRateControl servingPLMNRateControl optional, /* cl. 9.9.4.28 O TLV 4 IEI=0x6E @sic R5s160711 Baseline Moving sic@ */ + Extd_APN_AMBR extd_APN_AMBR optional // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + }; + + type record BEARER_RESOURCE_ALLOCATION_REJECT { /* 24.301 cl. 8.3.7 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178, R5s150329 Baseline Moving sic@ Was T3396 Value*/ + ReAttemptIndicator reattemptInd optional, /* cl. 9.9.4.13A O TLV 3 IEI=0x6B @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record BEARER_RESOURCE_ALLOCATION_REQUEST { /* 24.301 cl. 8.3.8 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + TrafficFlowTemplate trafficFlowAgg, /* cl. 9.9.4.15 M LV 2-256 */ + EPS_QualityOfService requiredTrafficFlowQoS, /* cl. 9.9.4.3 M LV 2-14 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + Extd_EPS_QOS extd_EPS_QOS optional // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + }; + + type record BEARER_RESOURCE_MODIFICATION_REJECT { /* 24.301 cl. 8.3.9 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178, R5s150329 Baseline Moving sic@ Was T3396 Value*/ + ReAttemptIndicator reattemptInd optional, /* cl. 9.9.4.13A O TLV 3 IEI=0x6B @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record BEARER_RESOURCE_MODIFICATION_REQUEST { /* 24.301 cl. 8.3.10 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity epsBearerIdentityforPacketFilter, /* cl. 9.9.4.6 M V 1/2 */ + TrafficFlowTemplate trafficFlowAgg, /* cl. 9.9.4.15 M LV 2-256 */ + EPS_QualityOfService requiredTrafficFlowQoS optional, /* cl. 9.9.4.3 O TLV 3-15 IEI=0x5b @sic R5s100692 sic@ */ + ESM_Cause esmCause optional, /* cl. 9.9.4.4 O TV 2 IEI=0x58 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + HeaderCompressConfig headerCompressionConfig optional, /* cl. 9.9.4.22 O TLV 3-TBD IEI=0x66 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + Extd_EPS_QOS extd_EPS_QOS optional // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + }; + + type record DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.11 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record DEACTIVATE_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.12 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.8 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396Value optional, /* cl. 10.5.7.4a O TLV 3 IEI=0x37 @sic R5s130195 Baseline Moving sic@*/ + WLANOffloadAcceptability wlanOffloadInd optional, /* cl. 9.9.4.18 O TV 1 IEI=0xC @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record ESM_DUMMY_MESSAGE { /* 24.301 cl. 8.3.12A + Significance: dual + Direction: both */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + + + type record ESM_INFORMATION_REQUEST { /* 24.301 cl. 8.3.13 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + type record ESM_INFORMATION_RESPONSE { /* 24.301 cl. 8.3.14 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + AccessPointName accessPointName optional, /* cl. 9.9.4.1 O TLV 3-102 IEI=0x28 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record ESM_STATUS { /* 24.301 cl. 8.3.15 + Significance: dual + Direction: both */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause /* cl. 9.9.4.4 M V 1 */ + }; + + type record MODIFY_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.16 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record MODIFY_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.17 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record MODIFY_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.18 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_QualityOfService newEPSQos optional, /* cl. 9.9.4.3 O TLV 3-15 IEI=0x5b */ + TrafficFlowTemplate tft optional, /* cl. 9.9.4.16 O TLV 3-257 IEI=0x36 */ + QualityOfService newQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.5 O TLV 3 IEI=0x34 */ + APN_AMBR apnAggMaxBitRate optional, /* cl. 9.9.4.2 O TLV 4-8 IEI=0x5e */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + WLANOffloadAcceptability wlanOffloadInd optional, /* cl. 9.9.4.18 O TV 1 IEI=0xC @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + HeaderCompressConfig headerCompressionConfig optional, /* cl. 9.9.4.22 O TLV 3-257 IEI=0x66 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + Extd_APN_AMBR extd_APN_AMBR optional, // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + Extd_EPS_QOS extd_EPS_QOS optional // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + }; + + + type record NOTIFICATION { /* 24.301 cl. 8.3.18A + Significance: local + Direction: network to UE @sic R5s110176 Baseline Moving sic@ */ + + + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NotificationIndicator notificationIndicator /* cl. 9.9.4.7A M LV 2 */ + }; + + + type record PDN_CONNECTIVITY_REJECT { /* 24.301 cl. 8.3.19 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178, R5s150329 Baseline Moving sic@ Was T3396 Value*/ + ReAttemptIndicator reattemptInd optional, /* cl. 9.9.4.13A O TLV 3 IEI=0x6B @sic R5s150329 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record PDN_CONNECTIVITY_REQUEST { /* 24.301 cl. 8.3.20 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + PDN_Type pdnType, /* cl. 9.9.4.10 M V 1/2 */ + Request_Type requestType, /* cl. 9.9.4.14 M V 1/2 */ + ESM_InfoTransferFlag esmInfoTransferFlag optional, /* cl. 9.9.4.5 O TV 1 IEI=0xD- */ + AccessPointName accessPointName optional, /* cl. 9.9.4.1 O TLV 3-102 IEI=0x28 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NBIFOMContainer nbifomContainer optional, /* 24.008 cl. 10.5.6.21 O TLV 3-257 octets IEI=0x33 @sic R5s160711 Baseline Moving sic@*/ + HeaderCompressConfig headerCompressionConfig optional, /* cl. 9.9.4.22 O TLV 3-257 IEI=0x66 @sic R5s160711 Baseline Moving sic@*/ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record PDN_DISCONNECT_REJECT { /* 24.301 cl. 8.3.21 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.2 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record PDN_DISCONNECT_REQUEST { /* 24.301 cl. 8.3.22 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.9.4.26 O TLV-E 4-65538 IEI=0x7B @sic R5s160711 Baseline Moving sic@ */ + }; + + type record REMOTE_UE_REPORT { /* 24.301 cl. 8.3.23 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + RemoteUEContextList remoteUEContextConnected optional, /* cl. 9.9.4.20 O TLV-E 3-65538 IEI = 79 */ + RemoteUEContextList remoteUEContextDisconnected optional, /* cl. 9.9.4.20 O TLV-E 3-65538 IEI = 7A */ + PKMF_Address ProSeKeyManageFunctionAddress optional /* cl. 9.9.4.21 O TLV 3-19 octets IEI = 6F */ + }; + + type record REMOTE_UE_REPORT_RESPONSE { /* 24.301 cl. 8.3.24 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType /* cl. 9.8 M V 1 */ + }; + + type record ESM_DATA_TRANSPORT { /* 24.301 cl. 8.3.25 + Significance: dual + Direction: both */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + UserDataContainer userDatacontainer, /* cl. 9.9.4.24 M LV-E 2-n octets */ + ReleaseAssistanceInd releaseAssistanceInd optional /* cl. 9.9.4.25 O TV 1 IEI=0xF- */ + }; + + //---------------------------------------------------------------------------- + // Common Info Elements (24.301 cl. 9.9.2) + //---------------------------------------------------------------------------- + + type record NAS_SecurityParametersfromEUTRA { /* 24.301 cl. 9.9.2.6 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, /* 8-5 are spare and shall be coded as zero */ + B4_Type dl_nasCountValue /* contains the 4 least significant bits of the binary representation of the downlink NAS COUNT value applicable when + this information element is sent*/ + }; + + type record NAS_SecurityParameterstoEUTRA { /* 24.301 cl. 9.9.2.7 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type noncevalue, /*NonceMME value */ + B1_Type spare1, /* are spare and shall be coded as zero */ + B3_Type cipherAlgorithmType, /* type of ciphering algorithm in the NAS security algorithms information element */ + B1_Type spare2, /* are spare and shall be coded as zero */ + B3_Type integrityAlgorithmType, /* as the type of integrity protection algorithm */ + B4_Type spare3, /* are spare and shall be coded as zero*/ + B1_Type tsc, /* type of security context flag (TSC) */ + B3_Type naskeysetid /* Nas key set identifier*/ + }; + + + //---------------------------------------------------------------------------- + // EPS Mobility Management (EMM) information elements (24.301 cl. 9.9.3) + //---------------------------------------------------------------------------- + + type record SMSServicesStatus { // 24.301 cl. 9.9.3.4b + IEI4_Type iei, // currently only used as TV + B1_Type spare, + B3_Type smsServicesStatusValue //0 = CS fallback rejected, 1 = accepted by UE + }; + + type record CSFBResponse { // 24.301 cl. 9.9.3.5 + IEI4_Type iei, // currently only used as TV + B1_Type spare, + B3_Type csfbValue //0 = CS fallback rejected, 1 = accepted by UE + }; + + type record EMM_Cause { /* 24.301 cl. 9.9.3.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_CauseValue_Type causeValue + }; + + type record Extd_EMM_Cause { /* 24.301 cl. 9.9.3.26A */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V @sic R5s170597 Baseline Moving sic@ */ + B1_Type spare, + B1_Type nbIoTAllowed, /* @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + B1_Type epsOptimizationInfo, // @sic R5s170597 Baseline Moving sic@ + B1_Type eutranAllowed + }; + + type record EPS_AttachResult { /* 24.301 cl. 9.9.3.10 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type resultValue + }; + + type record EPS_AttachType { /* 24.301 cl. 9.9.3.11 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type typeValue + }; + + type record EPS_NetworkFeatureSupport { /* 24.301 cl 9.9.3.12A @sic R5s100135 sic@ */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B1_Type cp_CIOT, // @sic R5s160711 Baseline Moving sic@ + B1_Type emmRegistered_withoutPDN, // @sic R5s160711 Baseline Moving sic@ + B1_Type esrps, /* @sic R5s120178 Baseline Moving sic@ */ + B2_Type csLCS, /* @sic R5s110176, R5s120178 Baseline Moving sic@ */ + B1_Type epcLCS, /* @sic R5s110176 Baseline Moving sic@ */ + B1_Type emcBS, /* @sic R5s110176, R5s120178 Baseline Moving sic@ */ + B1_Type imsVoPS, + B1_Type bearers15 optional, // @sic R5s160711 Baseline Moving, R5s170597 Baseline Moving, R5s180271 Baseline Moving 2018 Phase 1, R5s180552 Baseline Moving 2018 Phase 2 sic@ + B1_Type iwkN26 optional, // @sic R5s180271 Baseline Moving 2018 Phase 1, R5s180552 Baseline Moving 2018 Phase 2 sic@ + B1_Type restrictDCNR optional, // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + B1_Type restrictEC optional, // @sic R5s170597 Baseline Moving sic@ + B1_Type extdPCO optional, // @sic R5s160711 Baseline Moving sic@ + B1_Type headerComp_CP_CIOT optional, // @sic R5s160711 Baseline Moving sic@ + B1_Type s1_U_data optional, // @sic R5s160711 Baseline Moving sic@ + B1_Type up_CIOT optional, // @sic R5s160711 Baseline Moving sic@ + B3_Type spare optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */ + B1_Type ptcc optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */ + B1_Type pr optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */ + B1_Type rpr optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */ + B1_Type piv optional, /* Sep22 @sic R5s221178 Baseline Moving sic@ */ + B1_Type ncr optional /* Sep22 @sic R5s221178 Baseline Moving sic@ */ + }; + + type record PagingIdentity { /* 24.301 cl. 9.9.93.25A @sic R5s100135 sic@ */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B7_Type spareBits, + B1_Type pagingId + }; + + type record AdditionalUpdateResult { /* 24.301 cl. 9.9.3.0A @sic R5s100135 sic@ */ + IEI4_Type iei, // currently only used as TV + B2_Type spareBits, // @sic R5s170597 Baseline Moving sic@ + B2_Type addUpdateResultValue + }; + + type record EPS_UpdateResult { /* 24.301 cl. 9.9.3.13 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type resultValue + }; + + type record EPS_UpdateType { /* 24.301 cl. 9.9.3.14 */ + // IEI is always skipped + B1_Type activeFlag, + NAS_AttDetValue_Type typeValue + }; + + type record ESM_MessageContainer { /* 24.301 cl. 9.9.3.15 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + octetstring esmPdu /* ESM PDU without NAS security header*/ + }; + + type record KSIandSN { /* 24.301 cl. 9.9.3.19 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type ksi, + B5_Type sn + }; + + type record NAS_MessageContainer { // 24.301 cl. 9.9.3.22 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring smsmessage length(2..251) /* can contain an SMS message (i.e. CP-DATA, CP-ACK or CP-ERROR) + as defined in subclause 7.2 in 3GPP TS 24.011 */ + }; + + type record NetworkPolicy { // 24.301 cl. 9.9.3.52 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type spare, + B1_Type redirPolicy + }; + + type record Nonce { /* 24.301 cl. 9.9.3.25 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type nonceValue + }; + + type record EPS_ServiceType { // 24.301 cl. 9.9.3.27 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + EPS_ServiceTypeValue serviceValue + }; + + type record ShortMAC { /* 24.301 cl. 9.9.3.28 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B16_Type macValue + }; + + type record UERadioCapInfoUpdateNeeded { // 24.301 cl. 9.9.3.35 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type spare, + B1_Type urcUpdate + }; + + type record UE_AdditionalSecurityCapability { /* 24.301 cl. 9.9.3.53 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel, + O1_Type eaCap5G_0_7, + O1_Type eaCap5G_8_15, + O1_Type iaCap5G_0_7, + O1_Type iaCap5G_8_15 + }; + + type record AdditionalInfoReq { /* 24.301 cl. 9.9.3.55 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B7_Type spare, + B1_Type cipherKey + }; + + type record CipheringKey { + O2_Type id, + O16_Type key, + B3_Type spare, + B5_Type c0Length, + octetstring c0 length (1..16), + B8_Type posSIBType1_1to2_1, + B8_Type posSIBType2_2to9, + B8_Type posSIBType2_10to17, + B8_Type posSIBType2_18to3_1, + O5_Type validityStartTime, + O2_Type validityDuration, + TrackingAreaIdList taiList + }; + + type record CipheringKeyData { /* 24.301 cl. 9.9.3.56 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type6Length_Type iel, + record of CipheringKey cipherKey + }; + + type record CLI { /* 24.301 cl. 9.9.3.38 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring cliValue length(1..12) /* The coding of the CLI value part is the same as for octets 3 to + 14 of the Calling party BCD number information element defined + in subclause 10.5.4.9 of 3GPP TS 24.008 */ + }; + + type record SsCode { /* 24.301 cl. 9.9.3.39 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type ssCodeValue /*The coding of the SS Code value is given in subclause 17.7.5 of 3GPP TS 29.002 */ + }; + + type record LcsIndicator { /* 24.301 cl. 9.9.3.40 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type lcsIndicator + }; + + type record LcsClientIdentity { /* 24.301 cl. 9.9.3.41 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring lcsClientIdentityValue length(1..255) /* The coding of the value part of the LCS client + identity is given in subclause 17.7.13 of 3GPP TS 29.002 */ + }; + + type B8_Type GenericMessageContainerType; /* 24.301 cl. 9.9.3.42 M V 1 @sic R5s110176 Baseline Moving sic@ */ + + type record GenericMessageContainer{ /* 24.301 cl. 9.9.3.43 M LV-E 3-n @sic R5s110176 Baseline Moving sic@*/ + IEI8_Type iei optional, + Type6Length_Type iel, + octetstring genericMsgContainerValue + }; + + type record GUTI_Type{ /* 24.301 cl. 9.9.3.45 @sic R5s110178 Baseline Moving sic@*/ + IEI4_Type iei, + B3_Type spare, + B1_Type gutiType + }; + + type record ControlPlaneServiceType{ /* 24.301 cl. 9.9.3.47 @sic R5s160711 Baseline Moving sic@*/ + IEI4_Type iei optional, // @sic R5s160758 sic@ + B1_Type activeFlag, + B3_Type controlPlaneServiceType // @sic R5s170597 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + // EPS Session Management (ESM) information elements (24.301 cl. 9.9.4) + //---------------------------------------------------------------------------- + + type record APN_AMBR { // 24.301 cl. 9.9.4.2 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B8_Type downlink, + B8_Type uplink, + B8_Type downlinkExt optional, + B8_Type uplinkExt optional, + B8_Type downlinkExt2 optional, + B8_Type uplinkExt2 optional + }; + + type record Extd_APN_AMBR { // 24.301 cl. 9.9.4.29 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B8_Type unitDL, + B8_Type downlink_1, + B8_Type downlink_2, + B8_Type unitUL, + B8_Type uplink_1, + B8_Type uplink_2 + }; + + type record ESM_Cause { /* 24.301 cl. 9.9.4.4 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + NAS_CauseValue_Type causeValue + }; + + type record ESM_InfoTransferFlag { /* 24.301 cl. 9.9.4.5 */ + IEI4_Type iei optional, + B3_Type spare, + B1_Type eitValue + }; + + type record LinkedEpsBearerIdentity { /* 24.301 cl. 9.9.4.6 */ + // IEI is always skipped + B4_Type idValue + }; + + type record NotificationIndicator{ /* 24.301 cl. 9.9.4.7A @sic R5s110176 Baseline Moving sic@ */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type notificationInd + }; + + type record PDN_Type { /* 24.301 cl. 9.9.4.10 */ + // IEI is always skipped + B1_Type spare, + PdnTypeValue typeValue + }; + + type record TransactionIdentifier { /* 24.301 cl. 9.9.4.17 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B1_Type tiFlag, + B3_Type tiValue, + B4_Type spare, + B1_Type ext optional, // @sic R5s110176 sic@ + B7_Type tiValue_2 optional // @sic R5s110176 sic@ + }; + + type O8_Type EllipsoidPointWithAltitude_Type; + type O3_Type HorizontalVelocity_Type; + type O3_Type Gnss_TOD_msec_Type; + + type record RemoteUEContextList { /* 24.301 cl. 9.9.4.20 */ + IEI8_Type iei optional, + Type6Length_Type iel, + O1_Type numberOfContexts, + ListOfRemoteUEContext remoteUEContexts + }; + + type record of RemoteUEContext ListOfRemoteUEContext; + + type record RemoteUEContext { + O1_Type lengthOfContext, + O1_Type numberOfUserIds, + UserIdentityList userIdentities, + B5_Type spare, + B3_Type addressType, + octetstring addressInfo optional + }; + + type record of UserIdentity UserIdentityList; + + type record UserIdentity { + O1_Type lengthOfUserId, + B4_Type firstDigit, + B1_Type odd_even, + B3_Type typeOfUserId, + record of B4_Type digits + }; + + type record PKMF_Address { /* 24.301 cl. 9.9.4.21 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B5_Type spare, + B3_Type addressType, + octetstring addressInfo + }; + + type record HeaderCompressConfig { /* 24.301 cl. 9.9.4.22 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B1_Type spare, + B1_Type profileP0x0104, + B1_Type profileP0x0103, + B1_Type profileP0x0102, + B1_Type profileP0x0006, + B1_Type profileP0x0004, + B1_Type profileP0x0003, + B1_Type profileP0x0002, + O2_Type maxCID, + O1_Type addHeaderCompressContextSetupParamsType optional, // @sic R5s170597 Baseline Moving sic@ + octetstring addHeaderCompressContextSetupParams optional // @sic R5s170597 Baseline Moving sic@ + }; + + type record UserDataContainer { /* 24.301 cl. 9.9.4.24 */ + IEI8_Type iei optional, + Type6Length_Type iel, // @sic R5s160758 sic@ + octetstring dataContainer + }; + + type record HeaderCompressConfigStatus { /* 24.301 cl. 9.9.4.27 */ + IEI8_Type iei optional, + Type4Length_Type iel, + O1_Type epsBearerInd_0_7, + O1_Type epsBearerInd_8_15 + }; + + type record N1_UENetworkCap { /* 24.301 cl. 9.9.3.57 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B1_Type spare, // Sep22 @sic R5s221178 Baseline Moving sic@ + B1_Type ehc_CP_CIoT, // Sep22 @sic R5s221178 Baseline Moving sic@ + B2_Type ngPNB_CIoT, + B1_Type ngUP_CIoT, + B1_Type ngHC_CP_CIoT, + B1_Type n3Data, + B1_Type ngCP_CIoT + }; + + type record UERadioCapIdAvailability { /* 24.301 cl. 9.9.3.58 */ + IEI8_Type iei optional, + Type4Length_Type iel optional, + B5_Type spare, + B3_Type availability + }; + + type record UERadioCapIdRequest { /* 24.301 cl. 9.9.3.59 */ + IEI8_Type iei optional, + Type4Length_Type iel optional, + B7_Type spare, + B1_Type radioCapIdReq + }; + + type DRXParamCommon NB_S1_DRXParam; /* 24.301 cl. 9.9.3.63 */ + + type record IMSI_Offset { /* 24.301 cl. 9.9.3.64 */ + IEI8_Type iei optional, + Type4Length_Type iel optional, + O2_Type offsetValue + }; + + type record PagingRestriction { /* 24.301 cl. 9.9.3.66 */ + IEI8_Type iei optional, + Type4Length_Type iel optional, + B4_Type spare, + B4_Type prType, + O1_Type ebi7_0 optional, + O1_Type ebi15_8 optional + }; + + type record EPS_AddReqResult { /* 24.301 cl. 9.9.3.67 */ + IEI8_Type iei optional, + Type4Length_Type iel optional, + B7_Type spare, + B1_Type prd + }; + + // ============================================================================= + // Update UE Location Information + // 3G TS 36.509 cl. 6.12 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UPDATE_UE_LOCATION_INFORMATION { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + EllipsoidPointWithAltitude_Type ellipsoidPointWithAltitude, /* M V 8 */ + HorizontalVelocity_Type horizontalVelocity, /* M V 3 */ + Gnss_TOD_msec_Type gnss_TOD_msec /* M V 3 */ + }; + +} with { encode "NAS Types"} diff --git a/ttcn/Lib3GPP/EPS_NAS/module.mk b/ttcn/Lib3GPP/EPS_NAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..a9645c87edc23fa4bd254df98fa12161f3962cc8 --- /dev/null +++ b/ttcn/Lib3GPP/EPS_NAS/module.mk @@ -0,0 +1,3 @@ +sources := \ + EPS_NAS_TypeDefs.ttcn \ + EPS_NAS_LoopBack_TypeDefs.ttcn \ No newline at end of file diff --git a/ttcn/Lib3GPP/NAS/NAS_AuthenticationCommon.ttcn b/ttcn/Lib3GPP/NAS/NAS_AuthenticationCommon.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..dec7fcc27bb0d05b12245190ebeeba0a72d491d5 --- /dev/null +++ b/ttcn/Lib3GPP/NAS/NAS_AuthenticationCommon.ttcn @@ -0,0 +1,129 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-08-29 15:57:07 +0200 (Mon, 29 Aug 2022) $ +// $Rev: 33841 $ +/******************************************************************************/ + +module NAS_AuthenticationCommon { + import from CommonDefs all; + import from Parameters all; + + type record Common_AuthenticationParams_Type { /* parameters related/used to/by EUTRA/UTRAN/GERAN authentication + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + B128_Type RandValue, + B128_Type AUTN, + B32_128_Type XRES, + B64_Type KcGSM, + B128_Type Kc128, // @sic R5s150121 sic@ + B3_Type KeySeq, + B128_Type CK, + B128_Type IK, + integer XRESLength optional // @sic R5s120907 sic@ + }; + + type enumerated AuthenticationError_Type {noError, macError, sqnFailure, macErrorPlusSepBit, sepBit0 }; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + + const B32_Type tsc_AuthUndefinedB32 := oct2bit ('FFFFFFFF'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const B128_Type tsc_AuthUndefinedB128 := tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const B256_Type tsc_AuthUndefinedB256 := tsc_AuthUndefinedB128 & tsc_AuthUndefinedB128; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + + template (value) Common_AuthenticationParams_Type cs_CommonAuthParams_Init (template (value) B128_Type p_Rand) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + RandValue := p_Rand, + AUTN := tsc_AuthUndefinedB128, + XRES := tsc_AuthUndefinedB128, + KcGSM := tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32, + Kc128 := tsc_AuthUndefinedB128, // @sic R5s150121 sic@ + KeySeq := '111'B, + CK := tsc_AuthUndefinedB128, + IK := tsc_AuthUndefinedB128, + XRESLength := omit // @sic R5s120907 sic@ + }; + + //---------------------------------------------------------------------------- + /* + * @desc auxiliary function to increment KeySeq and deal with wrap around + * @param p_KeySeq + * @return B3_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) + */ + function f_Authentication_IncrementKeySeq(B3_Type p_KeySeq) return B3_Type + { + var B3_Type v_KeySeq := int2bit(((bit2int(p_KeySeq)+1) mod 8), 3); //@sic R5s140298 R5s140503 sic@ + // The mod 8 is used as initial value is 7, hence results in first value of 0. + // But if in a test case authentication is performed 7th time, it becomes 7 which is an undefined value, hence the check below added to avoid it. + if (v_KeySeq == '111'B) { + v_KeySeq := '000'B; + } + return v_KeySeq; + } + + //---------------------------------------------------------------------------- + /* + * @desc Calculation is done according to 34.108, clause 8.1.2 and 33.102, clause 6.8.1.2 + * Generation of Ck, Ik, AUTN and XRES + * @param p_Auth_Params + * @param p_AuthenticationError (default value: noError) + * @return Common_AuthenticationParams_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) + */ + function f_AuthenticationInit(Common_AuthenticationParams_Type p_Auth_Params, + AuthenticationError_Type p_AuthenticationError := noError) return Common_AuthenticationParams_Type + { /* @sic R5-123085 harmonisation of IMS (AuthenticationInit and the two error variants are needed for IMS too) sic@ */ + var Common_AuthenticationParams_Type v_Auth_Params := p_Auth_Params; + var B128_Type v_XDOut; + var B80_Type v_AUTN_2; + var B64_Type v_CDOut; + var B64_Type v_XDOut_Half; + var B64_Type v_MAC; + var B48_Type v_AK; + var B48_Type v_AUTN_1; + var B48_Type v_AuthSQN := '000000000000000000000000000000000000000000000000'B; + var B16_Type v_AuthAMF := px_AuthAMF; + + if (p_AuthenticationError == sqnFailure) { + v_AuthAMF := '1111111111111111'B; //AMF_resynch value + } + + if (p_AuthenticationError == sepBit0) { + v_AuthAMF := v_AuthAMF and4b '0111111111111111'B; // separation bit forced to 0 (TC 9.1.2.7), the rest unchanged from PIXIT + } + + if (p_AuthenticationError == macErrorPlusSepBit) { // @sic R5s130201 sic@ + v_AuthAMF := v_AuthAMF or4b '1000000000000000'B; // force the separation to 1, leave the rest unchanged + v_AuthSQN := '111111111111111111111111111111111111111111111111'B; // force SQN out of range + } + + v_XDOut := v_Auth_Params.RandValue xor4b px_AuthK; + v_CDOut := v_AuthSQN & v_AuthAMF; + v_XDOut_Half := substr( v_XDOut, 0, 64); + v_AK := substr( v_XDOut, 24, 48); + v_AUTN_1 := v_AuthSQN xor4b v_AK; + v_MAC := v_XDOut_Half xor4b v_CDOut; + + if ((p_AuthenticationError == macError) or (p_AuthenticationError == macErrorPlusSepBit)) { // @sic R5s130201 sic@ + v_MAC := not4b(v_MAC); // @sic R5s110313 sic@ + } + + v_AUTN_2 := v_AuthAMF & v_MAC; + v_Auth_Params.AUTN := v_AUTN_1 & v_AUTN_2; + // v_IKey := 128 bits of v_XDOut, wrapped, starting from offset 16 + v_Auth_Params.IK := substr( v_XDOut, 16, (128 - 16)) & substr( v_XDOut, 0, 16); + // v_CKey := 128 bits of v_XDOut, wrapped, starting from offset 8 + v_Auth_Params.CK := substr( v_XDOut, 8, (128 - 8)) & substr( v_XDOut, 0, 8); + v_Auth_Params.XRES := v_XDOut; + + if (p_AuthenticationError == noError) { + // ((CK1 XOR CK2) XOR (IK1 XOR IK2)) + v_Auth_Params.KcGSM := (substr( v_Auth_Params.CK, 0, 64) xor4b substr( v_Auth_Params.CK, 64, 64)) xor4b (substr( v_Auth_Params.IK, 0, 64) xor4b substr( v_Auth_Params.IK, 64, 64)); + v_Auth_Params.KeySeq := f_Authentication_IncrementKeySeq(v_Auth_Params.KeySeq); // @sic R5s140894 sic@ + v_Auth_Params.Kc128 := substr (fx_KeyDerivationFunction ( tsc_KDF_HMAC_SHA_256, (v_Auth_Params.CK & v_Auth_Params.IK), '32'O ), 0, 128); // @sic R5s150121, R5s150796 sic@ + } + return v_Auth_Params; + } +} diff --git a/ttcn/Lib3GPP/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn b/ttcn/Lib3GPP/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c58fe4d40b8a72702200b2a1390ec810d57acb7c --- /dev/null +++ b/ttcn/Lib3GPP/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn @@ -0,0 +1,1041 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-11-29 17:53:31 +0100 (Tue, 29 Nov 2022) $ +// $Rev: 34751 $ +/******************************************************************************/ + +module NAS_AuxiliaryDefsAndFunctions { + + import from CommonDefs all; + import from Parameters all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from CommonIP all; + + template (value) ExtdEmergNum cs_ExtdEmergNum (octetstring p_Digits, + octetstring p_SubServices := ''O) := + { /* @status APPROVED (NR5GC) */ + len := int2oct(lengthof(p_Digits), 1), + digits := p_Digits, // BCD numbers + lengthOfSubService := int2oct(lengthof(p_SubServices), 1), + subServices := p_SubServices + }; + + //============================================================================ + // Protocol Configuration Options (PCO) + //---------------------------------------------------------------------------- + /* + * @desc Function used to check whether the UE requests in its PCO an address allocation via NAS signalling + * If the UE does not send PCO, then address assignment shall be via DHCP. TS 36.508 table 4.7.3-6. + * @param p_Pco + * @return boolean + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_CheckPCOforIPallocationViaNas(template (omit) ProtocolConfigOptions p_Pco) return boolean + { + var NAS_ProtocolConfigOptions_Type v_ProtocolContainerList; + var integer i; + + if (isvalue(p_Pco.pco)) { /* @sic R5s170030 change 8 sic@ */ + v_ProtocolContainerList := valueof (p_Pco.pco); + for (i := 0; i < lengthof(v_ProtocolContainerList); i := i + 1) { + if (v_ProtocolContainerList[i].protocolID == '000B'O) { // TS 24.008 clause 10.5.6.3 // @sic R5s090322 sic@ + return false; // @sic R5s090322 sic@ + } + } + } + return true; // @sic R5s090322 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used to check whether the UE requests in its PCO an address allocation via NAS signalling + * If the UE does not send PCO, then address assignment shall be via DHCP. TS 36.508 table 4.7.3-6. + * @param p_Pco + * @return boolean + * @status APPROVED (ENDC, IMS, NBIOT, NR5GC, NR5GC_IRAT, POS) + */ + function f_CheckExtdPCOforIPallocationViaNas(template (omit) ExtdProtocolConfigOptions p_Pco) return boolean + { + var ExtdProtocolConfigOptions v_Pco; + var integer i; + + if (isvalue(p_Pco)) { + v_Pco := valueof (p_Pco); + if (ispresent(v_Pco.pco)) { // @sic R5s170233 sic@ + for (i := 0; i < lengthof(v_Pco.pco); i := i + 1 ) { + if(v_Pco.pco[i].protocolID == '000B'O) { // TS 24.008 clause 10.5.6.3 + return false; + } + } + } + } + return true; + } + + //------------------------------------ + /* + * @desc return + * omit when there is no protocol config option with the given id in the given list + * content of the protocol config option (which can be empty or omit) otherwise + * @param p_Pco + * @param p_ProtocolID + * @return template (omit) octetstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_ProtocolConfigOptions_Get(template (omit) ProtocolConfigOptions p_Pco, + O2_Type p_ProtocolID) return template (omit) octetstring + { + var NAS_ProtocolConfigOptions_Type v_ProtocolConfigOptions; + var integer i; + + if (isvalue(p_Pco.pco)) { + v_ProtocolConfigOptions := valueof(p_Pco.pco); + for (i := 0; i < lengthof(v_ProtocolConfigOptions); i := i + 1) { + if (v_ProtocolConfigOptions[i].protocolID == p_ProtocolID) { // TS 24.008 clause 10.5.6.3 + return v_ProtocolConfigOptions[i].content; + } + } + } + return omit; + } + + /* + * @desc return + * omit when there is no protocol config option with the given id in the given list + * content of the protocol config option (which can be empty or omit) otherwise + * @param p_Pco + * @param p_ProtocolID + * @return template (omit) octetstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) + */ + function f_ExtdProtocolConfigOptions_Get(template (omit) ExtdProtocolConfigOptions p_Pco, + O2_Type p_ProtocolID) return template (omit) octetstring + { + var NAS_ProtocolConfigOptions_Type v_ProtocolConfigOptions; + var integer i; + + if (isvalue(p_Pco.pco)) { + v_ProtocolConfigOptions := valueof(p_Pco.pco); + for (i := 0; i < lengthof(v_ProtocolConfigOptions); i := i + 1) { + if (v_ProtocolConfigOptions[i].protocolID == p_ProtocolID) { // TS 24.008 clause 10.5.6.3 + return v_ProtocolConfigOptions[i].content; + } + } + } + return omit; + } + + /* + * @desc return SessionId if included in the given list or omit otherwise + * @param p_Pco + * @return template (omit) integer + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_ProtocolConfigOptions_GetSessionId(template (omit) ProtocolConfigOptions p_Pco) return template (omit) integer + { + var template (omit) octetstring v_Content := f_ProtocolConfigOptions_Get(p_Pco, '001A'O); + var octetstring v_Octetstring; + if (isvalue(v_Content)) { + v_Octetstring := valueof(v_Content); + if (lengthof(v_Octetstring) > 0) { + return oct2int(v_Octetstring); + } + } + return omit; + } + + /* + * @desc return QosFlowId if included in the given list or omit otherwise + * @param p_Pco + * @return template (omit) integer + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_ProtocolConfigOptions_GetQosFlowId(template (omit) ProtocolConfigOptions p_Pco) return template (omit) integer + { + var template (omit) octetstring v_Content := f_ProtocolConfigOptions_Get(p_Pco, '001F'O); + var octetstring v_Octetstring; + if (isvalue(v_Content)) { + v_Octetstring := valueof(v_Content); + if (lengthof(v_Octetstring) > 0) { + return (oct2int(v_Octetstring[0]) mod 64); // QFI of the 1st QoS flow is in the lower 6 bits of the 1st octet + } + } + return omit; + } + + /* + * @desc return SessionId if included in the given list or omit otherwise + * @param p_Pco + * @return template (omit) integer + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_ExtdProtocolConfigOptions_GetSessionId(template (omit) ExtdProtocolConfigOptions p_Pco) return template (omit) integer + { + var template (omit) octetstring v_Content := f_ExtdProtocolConfigOptions_Get(p_Pco, '001A'O); + var octetstring v_Octetstring; + if (isvalue(v_Content)) { + v_Octetstring := valueof(v_Content); + if (lengthof(v_Octetstring) > 0) { + return oct2int(v_Octetstring); + } + } + return omit; + } + + /* + * @desc return QosFlowId if included in the given list or omit otherwise + * @param p_Pco + * @return template (omit) integer + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_ExtdProtocolConfigOptions_GetQosFlowId(template (omit) ExtdProtocolConfigOptions p_Pco) return template (omit) integer + { + var template (omit) octetstring v_Content := f_ExtdProtocolConfigOptions_Get(p_Pco, '001F'O); + var octetstring v_Octetstring; + if (isvalue(v_Content)) { + v_Octetstring := valueof(v_Content); + if (lengthof(v_Octetstring) > 0) { + return (oct2int(v_Octetstring[0]) mod 64); // QFI of the 1st QoS flow is in the lower 6 bits of the 1st octet + } + } + return omit; + } + //------------------------------------ + /* + * @desc Function used to check whether the UE requests in its PCO a specific protocol + * (SIP signalling) + * @param p_Pco + * @param p_ProtocolID + * @return boolean + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, POS) + */ + function f_CheckPCOforProtocolID(template (omit) ProtocolConfigOptions p_Pco, + O2_Type p_ProtocolID) return boolean + { + var ProtocolConfigOptions v_Pco; + var integer i; + + if (isvalue(p_Pco)) { + v_Pco := valueof (p_Pco); + for (i := 0; i < lengthof(v_Pco.pco); i := i + 1) { + if(v_Pco.pco[i].protocolID == p_ProtocolID) { // TS 24.008 clause 10.5.6.3 + return true; + } + } + } + return false; + } + + /* + * @desc Function used to check whether the UE requests in its PCO a specific protocol + * (SIP signalling) + * @param p_Pco + * @param p_ProtocolID + * @return boolean + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, POS) + */ + function f_CheckExtdPCOforProtocolID(template ExtdProtocolConfigOptions p_Pco, + O2_Type p_ProtocolID) return boolean + { + var ExtdProtocolConfigOptions v_Pco; + var integer i; + + if (isvalue(p_Pco)) { + v_Pco := valueof (p_Pco); + for (i := 0; i < lengthof(v_Pco.pco); i := i + 1) { + if(v_Pco.pco[i].protocolID == p_ProtocolID) { // TS 24.008 clause 10.5.6.3 + return true; + } + } + } + return false; + } + + //------------------------------------ + /* + * @desc Function used to check whether the UE requests a P-CSCF address or DNS server address in its PCO + * If the UE does not support IMS, or doesn't request a P-CSCF address, the function returns the default PCO, PPP + * @param p_ConfigOptionsRX + * @param p_PdnIndex (default value: PDN_1) + * @param p_AdditionalProtocolConfigOptions (default value: {}) + * @param p_IgnoreIM_CN_SubsystemSignalingFlag (default value: true) + * @return template (value) NAS_ProtocolConfigOptions_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_NAS_GetProtocolConfigOptionList(NAS_ProtocolConfigOptions_Type p_ConfigOptionsRX, + PDN_Index_Type p_PdnIndex := PDN_1, + template (value) NAS_ProtocolConfigOptions_Type p_AdditionalProtocolConfigOptions := {}, + boolean p_IgnoreIM_CN_SubsystemSignalingFlag := true) return template (value) NAS_ProtocolConfigOptions_Type + { /* @sic R5-198996: p_AdditionalProtocolConfigOptions for 5GC options sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + var template (value) NAS_ProtocolConfigOptions_Type v_ProtocolContainerList := {}; + var integer v_PcoCnt := 0; + var O2_Type v_ProtocolId; + var octetstring v_Contents; + var integer i; + + for (i := 0; i < lengthof(p_ConfigOptionsRX); i := i + 1) { + + v_ProtocolId := p_ConfigOptionsRX[i].protocolID; + v_Contents := ''O; + + select (v_ProtocolId) { // See 24.008 Table 10.5.154 + case ('0001'O) { // P-CSCF IPv6 address + if (pc_IMS) { + v_Contents := f_Convert_IPv6Addr2OctString(v_PDN_AddressInfo.PCSCF_IPAddressIPv6); + } + } + case ('0002'O) { // IM CN Subsystem Signalling Flag, reply with an empty container + if (not p_IgnoreIM_CN_SubsystemSignalingFlag) { + v_ProtocolContainerList[v_PcoCnt] := cs_ProtocolContainer_Common(v_ProtocolId); + v_PcoCnt := v_PcoCnt + 1; + continue; + } + } + case ('0003'O) { // DNS Server IPv6 address + v_Contents := f_Convert_IPv6Addr2OctString(v_PDN_AddressInfo.DNS_ServerAddressIPv6); + } + case ('000C'O) { // P-CSCF IPv4 address + if (pc_IMS) { + v_Contents := f_Convert_IPv4Addr2OctString(v_PDN_AddressInfo.PCSCF_IPAddressIPv4); + } + } + case ('000D'O) { // DNS Server IPv4 address + v_Contents := f_Convert_IPv4Addr2OctString(v_PDN_AddressInfo.DNS_ServerAddressIPv4); + } + } + + if (lengthof(v_Contents) > 0) { + v_ProtocolContainerList[v_PcoCnt] := cs_ProtocolContainer(v_ProtocolId, v_Contents); + v_PcoCnt := v_PcoCnt + 1; + } + } + return v_ProtocolContainerList & p_AdditionalProtocolConfigOptions; + } + + /* + * @desc wrapper for f_GetDefaultProtocolConfigOptionList + * @param p_Pco + * @param p_PdnIndex (default value: PDN_1) + * @param p_AdditionalProtocolConfigOptions (default value: {}) + * @return template (value) ProtocolConfigOptions + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_GetDefaultProtocolConfigOptions(template (omit) ProtocolConfigOptions p_Pco, + PDN_Index_Type p_PdnIndex := PDN_1, + template (value) NAS_ProtocolConfigOptions_Type p_AdditionalProtocolConfigOptions := {}) return template (value) ProtocolConfigOptions + { /* @sic R5s130362 - MCC160 Implementation sic@ */ + /* @sic R5s141127 change 4 - MCC160 Comments: split into f_GetDefaultProtocolConfigOptions and f_GetDefaultProtocolConfigOptionList sic@ */ + /* @sic R5-198996: p_AdditionalProtocolConfigOptions for 5GC options sic@ */ + var template (value) NAS_ProtocolConfigOptions_Type v_ProtocolContainerListTX := {}; + var NAS_ProtocolConfigOptions_Type v_ProtocolContainerListRX; + + if (isvalue(p_Pco.pco)) { /* @sic R5s170030 change 8 sic@ */ + v_ProtocolContainerListRX := valueof(p_Pco.pco); + v_ProtocolContainerListTX := f_NAS_GetProtocolConfigOptionList(v_ProtocolContainerListRX, p_PdnIndex, p_AdditionalProtocolConfigOptions); + } + + return f_NAS_ProtocolConfigOptionsTX(v_ProtocolContainerListTX); + } + + //---------------------------------------------------------------------------- + /* + * @desc Common function to build up ProtocolConfigOptions + * @param p_ProtocolContainers + * @return template (value) ExtdProtocolConfigOptions + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) + */ + function f_NAS_ExtdProtocolConfigOptionsTX(template (omit) NAS_ExtdProtocolConfigOptions_Type p_ProtocolContainers) return template (value) ExtdProtocolConfigOptions + { + var integer v_Length := 1; // there are at least ext, spare, configProtocol + var integer i; + + if (isvalue(p_ProtocolContainers)) { // @sic R5s170233 sic@ + for (i:=0; i < lengthof(p_ProtocolContainers); i:=i+1) { + v_Length := v_Length + oct2int(valueof(p_ProtocolContainers[i].protocolLength)) + 3; // 2 octets for protocolID and 1 octet for protocolLength + } + } + return cs_ExtdPCO(int2oct(v_Length, 2), p_ProtocolContainers); + } + + /* + * @desc wrapper for f_GetDefaultExtdProtocolConfigOptionList + * @param p_Pco + * @param p_PdnIndex (default value: PDN_1) + * @return template (value) ExtdProtocolConfigOptions + * @status APPROVED (NBIOT) + */ + function f_GetDefaultExtdProtocolConfigOptions(template (omit) ExtdProtocolConfigOptions p_Pco, + PDN_Index_Type p_PdnIndex := PDN_1) return template (value) ExtdProtocolConfigOptions + { + var template (omit) NAS_ExtdProtocolConfigOptions_Type v_ProtocolContainerList := omit; // @sic R5s170233 sic@ + var ExtdProtocolConfigOptions v_ProtocolConfigOptionsRX; + + if (isvalue(p_Pco)) { + v_ProtocolConfigOptionsRX := valueof(p_Pco); + if (ispresent(p_Pco.pco)) { // @sic R5s170233 sic@ + v_ProtocolContainerList := f_NAS_GetExtdProtocolConfigOptionList(v_ProtocolConfigOptionsRX.pco, -, p_PdnIndex); // @sic R5-200649, R5s200643 sic@ + } + } + + return f_NAS_ExtdProtocolConfigOptionsTX(v_ProtocolContainerList); + } + + /* + * @desc Function used to check whether the UE requests a P-CSCF address or DNS server address in its PCO + * If the UE does not support IMS, or doesn't request a P-CSCF address, the function returns the default PCO, PPP + * @param p_ConfigOptionsRX + * @param p_IgnoreIM_CN_SubsystemSignalingFlag (default value: true) + * @param p_PdnIndex (default value: PDN_1) + * @return template (omit) NAS_ExtdProtocolConfigOptions_Type + * @status APPROVED (NBIOT) + */ + function f_NAS_GetExtdProtocolConfigOptionList(NAS_ExtdProtocolConfigOptions_Type p_ConfigOptionsRX, + boolean p_IgnoreIM_CN_SubsystemSignalingFlag := true, + PDN_Index_Type p_PdnIndex := PDN_1) + return template (omit) NAS_ExtdProtocolConfigOptions_Type + { /* @sic R5s170515 change 1: "template (omit)" for return type sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); // @sic R5-200649 sic@ + var template (omit) NAS_ExtdProtocolConfigOptions_Type v_ProtocolContainerList := omit; + var integer v_PcoCnt := 0; + var O2_Type v_ProtocolId; + var octetstring v_Contents; + var integer i; + + for (i := 0; i < lengthof(p_ConfigOptionsRX); i := i + 1) { + + v_ProtocolId := p_ConfigOptionsRX[i].protocolID; + v_Contents := ''O; + + select (v_ProtocolId) { // See 24.008 Table 10.5.154 + case ('0002'O) { // IM CN Subsystem Signalling Flag, reply with an empty container + if (not p_IgnoreIM_CN_SubsystemSignalingFlag) { + v_ProtocolContainerList[v_PcoCnt] := cs_ProtocolContainer_Common(v_ProtocolId); + v_PcoCnt := v_PcoCnt + 1; + continue; + } + } + case ('0003'O) { // DNS Server IPv6 address + v_Contents := f_Convert_IPv6Addr2OctString(v_PDN_AddressInfo.DNS_ServerAddressIPv6); + } + case ('000D'O) { // DNS Server IPv4 address + v_Contents := f_Convert_IPv4Addr2OctString(v_PDN_AddressInfo.DNS_ServerAddressIPv4); + } + } + + if (lengthof(v_Contents) > 0) { + v_ProtocolContainerList[v_PcoCnt] := cs_ProtocolContainer(v_ProtocolId, v_Contents); + v_PcoCnt := v_PcoCnt + 1; + } + } + return v_ProtocolContainerList; // @sic R5-200649, R5s200643 sic@ + } + //---------------------------------------------------------------------------- + /* + * @desc Get Pdn Index to be used in Multi PDN/PDU ATS + * @param p_DNNType + * @return PDN_Index_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_GetMultiPdnIndex(PDU_PDN_DNN_Type p_DNNType) return PDN_Index_Type + { // @sic R5-221467 sic@ + var PDN_Index_Type v_PDN := PDN_3; + select (p_DNNType) { + case (IMS_DNN){ + v_PDN := PDN_1; + } + case (Emergency_PDN){ + v_PDN := PDN_2; + } + case (URLLC_DNN){ + v_PDN := PDN_4; + } + case (MIOT_DNN){ + v_PDN := PDN_5; + } + case (V2X_DNN){ + v_PDN := PDN_6; + } + } + return v_PDN; + } + + /* + * @desc Get Pdn Type from the Index to be used in Multi PDN/PDU ATS + * @param p_PDN_Index + * @return PDU_PDN_DNN_Type + * @status APPROVED (NR5GC_IRAT) + */ + function f_GetMultiPdnTypeFromIndex(PDN_Index_Type p_PDN_Index) return PDU_PDN_DNN_Type + { // @sic R5-221467 sic@ + var PDU_PDN_DNN_Type v_DNNType := Internet_DNN; + select (p_PDN_Index) { + case (PDN_1){ + v_DNNType := IMS_DNN; + } + case (PDN_2){ + v_DNNType := Emergency_PDN; + } + case (PDN_4){ + v_DNNType := URLLC_DNN; + } + case (PDN_5){ + v_DNNType := MIOT_DNN; + } + case (PDN_6){ + v_DNNType := V2X_DNN; + } + } + return v_DNNType; + } + + /* + * @desc Get PDN DNN Type to be used in Multi PDN/PDU ATS from APN + * @param p_APN + * @return PDU_PDN_DNN_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_GetPDN_DNNTypeFromAPN(octetstring p_APN) return PDU_PDN_DNN_Type + { // @sic R5-221467 sic@ + var PDU_PDN_DNN_Type v_PDNType := None; + + if (match (p_APN, f_DomainName_Encode(pc_APN_ID_Internet))) { // @sic R5s210014 sic@ + v_PDNType := Internet_DNN; + } else if (match (p_APN, f_DomainName_Encode(pc_APN_ID_IMS))) { // @sic R5s210014 sic@ + v_PDNType := IMS_DNN; + } else if (match (p_APN, f_DomainName_Encode(pc_APN_ID_URLLC))) { + v_PDNType := URLLC_DNN; + } else if (match (p_APN, f_DomainName_Encode(pc_APN_ID_MIOT))) { + v_PDNType := MIOT_DNN; + } else if (match (p_APN, f_DomainName_Encode(pc_APN_ID_V2X))) { + v_PDNType := V2X_DNN; + } else if (f_IsDNNForEmergency(p_APN)) { // this isn't specified in table 4.8.4-1, but is a valid PDU type + v_PDNType := Emergency_PDN; + } + + return v_PDNType; + } + + /* + * @desc function to get/initialise p_DNN as per PICS + * @param p_PDUType + * @return charstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_GetDNNStringFromPICS(PDU_PDN_DNN_Type p_PDUType) return charstring + { + var charstring v_DNN; + + select (p_PDUType) { + case (Internet_DNN) { + v_DNN := pc_APN_ID_Internet; + } + case (IMS_DNN) { + v_DNN := pc_APN_ID_IMS; + } + case (URLLC_DNN) { + v_DNN := pc_APN_ID_URLLC; + } + case (MIOT_DNN) { + v_DNN := pc_APN_ID_MIOT; + } + case (V2X_DNN) { + v_DNN := pc_APN_ID_V2X; + } + case (Ethernet_DNN) { // @sic R5-227472 sic@ + v_DNN := pc_APN_ID_Ethernet; + } + // @sic R5s220670 sic@ + case else { FatalError(__FILE__, __LINE__, "Unexpected PICS setting in f_GetDNNStringFromPICS"); } + } + return v_DNN; + } + + /* + * @desc Get Default PDN DNN Type to be used in Multi PDN/PDU ATS from PICS + * @return PDU_PDN_DNN_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_GetDefaultAPN_DNNType_FromPICS() return PDU_PDN_DNN_Type + { // @sic R5-221467 sic@ + var PDU_PDN_DNN_Type v_PDNType := None; + + select (pc_APN_Default_Configuration) { + case (internet) { + v_PDNType := Internet_DNN; + } + case (ims) { + v_PDNType := IMS_DNN; + } + case (urllc) { + v_PDNType := URLLC_DNN; + } + case (miot) { + v_PDNType := MIOT_DNN; + } + case (v2x) { + v_PDNType := V2X_DNN; + } + case (ethernet) { // @sic R5-227472 sic@ + v_PDNType := Ethernet_DNN; + } + } + return v_PDNType; + } + + /* + * @desc Checks DNN to see if it requests emergency PDN, based on f_EUTRA_GetAPNForIMS + * @param p_DNNFromReq + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_IsDNNForEmergency(octetstring p_DNNFromReq) return boolean + { + return match(p_DNNFromReq, f_DomainName_EncodeLabels({"sos"})); + } + + /* + * @desc return label for MCC or MNC to be used in APN + * @param p_MncMcc + * @param p_Digits + * @return charstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) + */ + function f_APN_MccMncLabel(charstring p_MncMcc, + charstring p_Digits) return charstring + { /* in case of the MCC there are 3 digits; for MNC it may be 2 or 3 digits */ + var integer v_DigitCnt := lengthof(p_Digits); + var charstring v_Label := ""; + + select (v_DigitCnt) { + case (2) { v_Label := p_MncMcc & "0" & p_Digits; } + case (3) { v_Label := p_MncMcc & p_Digits; } + case else { FatalError(__FILE__, __LINE__, ""); } + } + return v_Label; + } + /* + * @desc Encode APN acc. to TS 23.003 cl. 9.1 and RFC 1035 cl. 4.1.2 + * @param p_LabelList + * @return octetstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) + */ + function f_DomainName_EncodeLabels(CharStringList_Type p_LabelList) return octetstring + { + var octetstring v_EncodedAPN := ''O; + var octetstring v_LabelOctets; + var integer v_Length; + var integer i; + + for (i := 0; i < lengthof(p_LabelList); i := i + 1) { + v_LabelOctets := char2oct(p_LabelList[i]); + v_Length := lengthof(v_LabelOctets); + v_EncodedAPN := v_EncodedAPN & int2oct(v_Length, 1) & v_LabelOctets; + } + return v_EncodedAPN; + } + + /* + * @desc Encode APN acc. to TS 23.003 cl. 9.1 and RFC 1035 cl. 4.1.2 + * @param p_DomainName + * @return octetstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) + */ + function f_DomainName_Encode(charstring p_DomainName) return octetstring + { + var CharStringList_Type v_LabelList := f_StringSplit(p_DomainName, {"."}); + return f_DomainName_EncodeLabels(v_LabelList); + } + + //============================================================================ + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMSI, IMEI or IMEISV of type hexstring to octetstring (to be used in f_Imsi2MobileIdentity, f_Imei2MobileIdentity and f_Imeisv2MobileIdentity) + * @param p_MobileId + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) + */ + function f_ImsiImei2Octetstring(hexstring p_MobileId) return octetstring + { + var integer v_Length := lengthof(p_MobileId); + var integer v_Odd := (v_Length rem 2); + var octetstring v_Other := '00'O; + var integer I; + var integer K; + + if (v_Odd == 0) { // If length is even + v_Length := v_Length + 1; + p_MobileId := p_MobileId & 'F'H; // add '1111' on to the end of the IMSI + } + + // Reverse each pair of digits + // First digit is not included as it is treated differently + K:=0; + for (I:=1; I < v_Length - 1; I:=I+2) { + v_Other[K] := hex2oct(p_MobileId[I+1] & p_MobileId[I]); + K := K + 1; + } + + return v_Other; + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMSI of type hexstring to NAS MobileIdentity + * @param p_IMSI + * @return template (value) MobileIdentity + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) + */ + function f_Imsi2MobileIdentity(hexstring p_IMSI) return template (value) MobileIdentity + { + var integer v_ImsiLength := lengthof(p_IMSI); + var integer v_Odd := (v_ImsiLength rem 2); + var octetstring v_Other := f_ImsiImei2Octetstring (p_IMSI); // @sic R5s100092 sic@ + var B4_Type v_FirstDigit := hex2bit(p_IMSI[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cds_MobileIdentityImsi_lv(v_FirstDigit, v_OddEvenInd, v_Other); + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMEI of type hexstring to NAS MobileIdentity + * When transmitted by the MS the CD/SD bit is set to 0. + * @param p_IMEI + * @param p_NAS_IdType (default value: tsc_IdType_IMEI) + * @return template (present) MobileIdentity + * @status APPROVED (LTE, LTE_A_R10_R11, NBIOT) + */ + function f_Imei2MobileIdentity(hexstring p_IMEI, + NAS_IdType p_NAS_IdType := tsc_IdType_IMEI) return template (present) MobileIdentity // @sic R5s130758 sic@ + { + var integer v_ImeiLength := lengthof(p_IMEI); + var integer v_Odd := (v_ImeiLength rem 2); + var octetstring v_Other := f_ImsiImei2Octetstring (substr(p_IMEI, 0, (v_ImeiLength - 1)) & '0'H); // @sic R5s160006 sic@ + var B4_Type v_FirstDigit := hex2bit(p_IMEI[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cr_MobileIdentityImei(v_FirstDigit, v_OddEvenInd, v_Other, p_NAS_IdType); // @sic R5s130758 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMEISV of type hexstring to NAS MobileIdentity + * @param p_IMEISV + * @return template (present) MobileIdentity + * @status APPROVED (LTE, NBIOT) + */ + function f_Imeisv2MobileIdentity(hexstring p_IMEISV) return template (present) MobileIdentity + { // @sic R5-131832 sic@ + var integer v_ImeiLength := lengthof(p_IMEISV); + var integer v_Odd := (v_ImeiLength rem 2); + var octetstring v_Other := f_ImsiImei2Octetstring (p_IMEISV); + var B4_Type v_FirstDigit := hex2bit(p_IMEISV[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cr_MobileIdentityImeisv(v_FirstDigit, v_OddEvenInd, v_Other); + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from Emergency Number of type hexstring to octetstring (to be used in Emergency Number List in e.g. Attach Accept) + * @param p_EmgNum + * @return octetstring + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) + */ + function fl_EmgNum2Octetstring(hexstring p_EmgNum) return octetstring + { + var integer v_Length := lengthof(p_EmgNum); + var integer v_Odd := (v_Length rem 2); + var octetstring v_Result := '00'O; + var integer I; + var integer K; + + if (v_Odd == 1) { // If length is odd + v_Length := v_Length + 1; + p_EmgNum := p_EmgNum & 'F'H; // add '1111' on to the end of the Emergency Number + } + + // Reverse each pair of digits, note that v_Length is even + K:=0; + for (I:=0; I < v_Length - 1; I:=I+2) { + v_Result[K] := hex2oct(p_EmgNum[I+1] & p_EmgNum[I]); + K := K + 1; + } + + return v_Result; + } + + /* + * @desc To generate an local emergency number list + * @param p_NoOfNums - To specify how many numbers to be included in the list (max = 10) + * @param p_NumList + * @return template (value) EmergNumList + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) + */ + function f_Build_EmergNumList(integer p_NoOfNums, + EmergencyNumList p_NumList) return template (value) EmergNumList + { + var integer i; + var template (value) EmergNumList v_EmergNum; + var octetstring v_LocalNum; + var integer v_LocalLength := 0; + var integer v_TotalLength := 0; + var B7_Type v_ServCat; + + v_EmergNum.iei := '34'O; + for (i := 0; i < p_NoOfNums; i:=i+1) { + v_LocalNum := fl_EmgNum2Octetstring (p_NumList[i]); + v_LocalLength := lengthof(v_LocalNum); + if (i/2 > 0) { + v_ServCat := ('00'B & ('00001'B << i)); + } else { + v_ServCat := ('00'B & ('00001'B << i)); + } + v_EmergNum.emergNum[i]:= cs_EmergencyLocalNumber(int2oct(v_LocalLength + 1, 1), + cs_EmergServCat(v_ServCat), + v_LocalNum); + v_TotalLength := v_TotalLength + 2 + v_LocalLength; // 1 octet for v_LocalLength + 1 for SCValue + length of number + } + v_EmergNum.iel := int2oct (v_TotalLength, 1); + return v_EmergNum; + } + + /* + * @desc To generate an extended emergency number list + * @param p_NoOfNums + * @param p_NumList + * @param p_EENLV (default value: '0'B) + * @param p_SubServices (default value: ''O) + * @return template (value) ExtdEmergNumList + * @status APPROVED (NR5GC) + */ + function f_Build_ExtdEmergNumList(integer p_NoOfNums, + EmergencyNumList p_NumList, + B1_Type p_EENLV := '0'B, + octetstring p_SubServices := ''O) return template (value) ExtdEmergNumList + { + var integer i; + var template (value) ExtdEmergNumList v_EmergNum; + var octetstring v_LocalNum; + var integer v_LocalLength := 0; + var integer v_TotalLength := 0; + + v_EmergNum.iei := '7A'O; + for (i := 0; i < p_NoOfNums; i:=i+1) { + v_LocalNum := fl_EmgNum2Octetstring (p_NumList[i]); + v_EmergNum.emergNum[i]:= cs_ExtdEmergNum(v_LocalNum, p_SubServices); + v_LocalLength := (lengthof(v_LocalNum)+ 2 + lengthof (p_SubServices)); + v_TotalLength := v_TotalLength + v_LocalLength; + } + v_EmergNum.spareBits := tsc_Spare7; + v_EmergNum.extdEmergNumListValidity := p_EENLV; + v_EmergNum.iel := int2oct (v_TotalLength + 1, 2); // 1 octet for EENLV + return v_EmergNum; + } + + /* + * @desc Generation of a new list of local emergency numbers different from existing ones + * @param p_NoOfNums .. maximum 20 + * @param p_ExistingNums + * @return EmergencyNumList .. numbers of 3 decimal digits each + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS) + */ + function f_Get_EmergencyNumList(integer p_NoOfNums, + EmergencyNumList p_ExistingNums) return EmergencyNumList + { /* @sic R5s210369 sic@ */ + var EmergencyNumList v_NewNumbers; + var integer v_Number := 115; // start as implied by LTE test case 11.2.6 @sic R5s141315 sic@ + var boolean v_NumberExists; + var hexstring v_NumberDigits; + var integer i; + + if ( p_NoOfNums > 20 ) { FatalError(__FILE__, __LINE__, "unsupported number of emg nums") }; // max 20 emg nums may be generated + + for (i:=0; i the text between the most inner quotes is returned */ + var charstring v_Expression := p_Expression; + var charstring v_Result; + var template charstring v_ExpectedString := pattern p_ExpectedString; + var boolean v_MatchResult; + var charstring v_CRLF := oct2char('0D'O) & oct2char('0A'O); + + v_Result := regexp(p_AT_Response, v_Expression, p_Group); + + v_MatchResult := match(v_Result, v_ExpectedString); + + if (v_MatchResult == true) { + f_SetVerdict(pass,__FILE__, __LINE__, p_Text); + } else { + f_ErrorLog(__FILE__, __LINE__, v_CRLF & "Value expected: " & p_ExpectedString & v_CRLF & "Value received: " & v_Result); // if anything went wrong, show it + f_SetVerdict(fail,__FILE__, __LINE__, p_Text); + } + } + + /*---------------------------------------------------------------------------- + * @desc Extract UE security capabilities from IEs and store for use later + * @param p_UeNetworkCapability + * @param p_MsNetworkCapability + * @return UE_SecurityCapability + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) + */ + function f_EPS_FillNAS_SecurityCapability_Common(UE_NetworkCap p_UeNetworkCapability, + template (omit) MS_NetworkCap p_MsNetworkCapability) return UE_SecurityCapability + { /* @sic R5s110014, R5-190717 Renamed to be re-used by NR sic@ */ + var UE_SecurityCapability v_SecurityCapability; + var MS_NetworkCap v_MS_NetworkCap; + var B8_Type v_GEA := '00000000'B; + var integer v_Length := 2; + + v_SecurityCapability.eeaCap := bit2oct(p_UeNetworkCapability.eeaCap); // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + v_SecurityCapability.eiaCap := bit2oct(p_UeNetworkCapability.eiaCap); // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + + if (ispresent(p_UeNetworkCapability.ueaCap)) { + v_SecurityCapability.ueaCap := bit2oct(p_UeNetworkCapability.ueaCap); // @sic R5s180271 Baseline Moving 2018 Phase 1 sic@ + v_Length := v_Length + 2; // if octet 5 is present, 6 will be too @sic R5s100485 sic@ + if (ispresent(p_UeNetworkCapability.uiaCap)) { + v_SecurityCapability.uiaCap := bit2oct(p_UeNetworkCapability.uiaCap) and4b '7F'O; // @sic R5s100520, R5s180271 Baseline Moving 2018 Phase 1 sic@ + } else { + v_SecurityCapability.uiaCap := '00'O; // @sic R5s100485 sic@ + } + } else { + v_SecurityCapability.ueaCap := omit; + v_SecurityCapability.uiaCap := omit; // @sic R5s100184 sic@ + } + + if (isvalue (p_MsNetworkCapability)) { + v_MS_NetworkCap := valueof(p_MsNetworkCapability); + if (v_MS_NetworkCap.gea1 == '1'B) { + v_GEA := v_GEA or4b '01000000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea2 == '1'B) { + v_GEA := v_GEA or4b '00100000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea3 == '1'B) { + v_GEA := v_GEA or4b '00010000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea4 == '1'B) { + v_GEA := v_GEA or4b '00001000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea5 == '1'B) { + v_GEA := v_GEA or4b '00000100'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea6 == '1'B) { + v_GEA := v_GEA or4b '00000010'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea7 == '1'B) { + v_GEA := v_GEA or4b '00000001'B; // error corrected in delivery + } + v_Length := v_Length + 1; + v_SecurityCapability.geaCap := bit2oct (v_GEA); // Now store the completed GEA octet + if (v_Length == 3) { // UE didn't report any UTRAN capabilities, so set them to 0 @sic R5s100485 sic@ + v_Length := 5; + v_SecurityCapability.ueaCap := '00'O; + v_SecurityCapability.uiaCap := '00'O; + } + } else {// MS Network Capability not present @sic R5s100184 sic@ + v_SecurityCapability.geaCap := omit; + // if UE included UTRAN capabilities but they're all zero + if (v_SecurityCapability.ueaCap == '00'O and v_SecurityCapability.uiaCap == '00'O) { // @sic R5s130107 sic@ + v_SecurityCapability.ueaCap := omit; + v_SecurityCapability.uiaCap := omit; + v_Length := 2; + } + } + + v_SecurityCapability.iel := int2oct (v_Length, 1); // Now store the length + + return v_SecurityCapability; + } + + /* + * @desc Calculate current year from System Time + * @return integer + * @status APPROVED (LTE, NR5GC, SSNITZ) + */ + function f_NITZ_GetCurrentYear() return integer + { + var Struct_tm_Type v_LocalTime; + var integer v_TimezoneSeconds; + fx_GetSystemTime(v_LocalTime, v_TimezoneSeconds); + return v_LocalTime.tm_year + 1900; + } + + /* + * @desc Convert current year from integer to 1 octet + * @param p_Year + * @return O1_Type + * @status APPROVED (LTE, NR5GC, SSNITZ) + */ + function f_NITZ_CurrentYear2Oct(integer p_Year) return O1_Type + { + return hex2oct(f_SwappedNibbles(p_Year)); + } + + /* + * @desc Extract the last 2 digits of the current year (as integer value) + * @param p_Year + * @return charstring + * @status APPROVED (LTE, NR5GC, SSNITZ) + */ + function f_NITZ_CurrentYear2Str(integer p_Year) return charstring + { + return int2str(p_Year mod 100); + } + +} diff --git a/ttcn/Lib3GPP/NAS/NAS_CommonTemplates.ttcn b/ttcn/Lib3GPP/NAS/NAS_CommonTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b7a31ddb5ba74141a0522fe269b1035933449dba --- /dev/null +++ b/ttcn/Lib3GPP/NAS/NAS_CommonTemplates.ttcn @@ -0,0 +1,2050 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-06-08 15:55:51 +0200 (Thu, 08 Jun 2023) $ +// $Rev: 36130 $ +/******************************************************************************/ + +module NAS_CommonTemplates { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from CommonIP all; + import from Parameters all; + + //============================================================================== + group NAS_CommonConstants { // Constants being used for NAS_CommonTemplates + + const B1_Type tsc_Spare1 := '0'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const B2_Type tsc_Spare2 := '00'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const B3_Type tsc_Spare3 := '000'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const B4_Type tsc_Spare4 := '0000'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const B5_Type tsc_Spare5 := '00000'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + const B6_Type tsc_Spare6 := '000000'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const B7_Type tsc_Spare7 := '0000000'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const SpareHalfOctet tsc_SpareHalfOctet := '0'H; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + + const SecurityHeaderType tsc_SHT_NoSecurityProtection := '0000'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const SecurityHeaderType tsc_SHT_IntegrityProtected := '0001'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const SecurityHeaderType tsc_SHT_IntegrityProtected_Ciphered := '0010'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const SecurityHeaderType tsc_SHT_IntegrityProtected_NewSecurityContext := '0011'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const SecurityHeaderType tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext := '0100'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const SecurityHeaderType tsc_SHT_IntegrityProtected_PartiallyCiphered := '0101'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + + const NAS_IdType tsc_IdType_IMSI := '001'B; /* suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const NAS_IdType tsc_IdType_IMEI := '010'B; /* suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (LTE, LTE_A_R10_R11, NBIOT) */ + const NAS_IdType tsc_IdType_IMEI_24301 := '011'B; /* suitable for identity type 24.301 cl. 9.9.3.12.1 + @status APPROVED (LTE) */ + const NAS_IdType tsc_IdType_IMEISV := '011'B; /* @sic R5s130438 sic@ suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (LTE, NBIOT) */ + const NAS_IdType tsc_IdType_TMSI := '100'B; /* suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + const NAS_IdType tsc_IdType_GUTI := '110'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + + const B3_Type tsc_IMEISV_Requested := '001'B; /* @sic R5s130438 sic@ suitable for IMEISV request type 24.008 cl. 10.5.5.10 + @status APPROVED (IMS, LTE, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + + const NAS_CauseValue_Type tsc_EmmCause_IllegalUe := '00000011'B; /* @status APPROVED (LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + const NAS_CauseValue_Type tsc_EmmCause_IllegalMe := '00000110'B; /* @status APPROVED (LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + + const NAS_CauseValue_Type tsc_Cause_MAC_Failure := '00010100'B; /* @status APPROVED ( LTE, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_SQN_Failure := '00010101'B; /* @status APPROVED ( LTE, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_nonEPS_AuthUnacceptable := '00011010'B; /* @status APPROVED (LTE, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_TA_NotAllowed := '00001100'B; /* @status APPROVED (LTE, LTE_A_R10_R11, LTE_IRAT, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_EmmCause_SemanticallyIncorrect := '01011111'B; /* @status APPROVED (LTE, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_Roaming_NotAllowed := '00001101'B; /* @status APPROVED (LTE, LTE_IRAT, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_PLMN_NotAllowed := '00001011'B; /* @status APPROVED (LTE, LTE_IRAT, NBIOT, NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_NoNetworkSlices_Available := '00111110'B; /* @status APPROVED (NR5GC) */ + const NAS_CauseValue_Type tsc_Cause_PLMN_NotAllowedToOperateAtPresentUELocation := '01001110'B; + + const NAS_KsiValue tsc_NasKsi_NoKey := '111'B; /* @status APPROVED (LTE, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + + const TmsiStatusValue tsc_NoValidTmsi := '0'B; /* @status APPROVED (UTRAN) */ + + const GprsTimerUnit tsc_GprsTimerUnit_2sec := '000'B; /* @status APPROVED (LTE, NBIOT) */ + const GprsTimerUnit tsc_GprsTimerUnit_1min := '001'B; /* @status APPROVED (LTE, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, UTRAN) */ + const GprsTimerUnit tsc_Gprs3TimerUnit_1min := '101'B; /* @status APPROVED (IMS, LTE_A_R10_R11, LTE_A_R12, NBIOT, NR5GC, SSNITZ, UTRAN) */ + const GprsTimerUnit tsc_GprsTimerUnit_6min := '010'B; /* @status APPROVED (LTE, LTE_IRAT) */ + const GprsTimerUnit tsc_Gprs3TimerUnit_30sec := '100'B; /* @status APPROVED (LTE_A_R12) */ + const GprsTimerUnit tsc_GprsTimerUnit_deact := '111'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + const O2_Type tsc_PCO_Id_DSMIPv6 := '0007'O; + const O2_Type tsc_PCO_Id_DSMIPv6_IPv4 := '0009'O; + + const O4_Type tsc_IPv4Mask := 'FFFFFFFF'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + const O16_Type tsc_IPv6Mask := 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + + const B2_Type tsc_NonConsecutiveTacs := '00'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const B2_Type tsc_ConsecutiveTacs := '01'B; /* @status APPROVED (LTE, NBIOT, NR5GC) */ + const B2_Type tsc_MultiplePlmns := '10'B; /* @status APPROVED (LTE, NBIOT) */ + + const PdnTypeValue tsc_PdnType_IPv4 := '001'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const PdnTypeValue tsc_PdnType_IPv6 := '010'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const PdnTypeValue tsc_PdnType_IPv4v6 := '011'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + + // TS 24.007 clause 11.2.3.1a + const ProcedureTransactionIdentifier tsc_PTI_Unassigned := '00'O; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const ProcedureTransactionIdentifier tsc_PTI_1 := '01'O; /* @status APPROVED (LTE) */ + + const B4_Type tsc_PayloadContainerESMMsg := '0001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const octetstring tsc_APN1 := '0541504E2D31'O; /* Access Point Name APN-1; + @status APPROVED (ENDC, IMS, LTE, LTE_A_R10_R11, NBIOT) */ + const charstring tsc_APN1_String := "APN-1"; /* Access Point Name APN-1; @sic R5s100466 sic@ + @status APPROVED (ENDC, LTE, LTE_A_R10_R11, NBIOT, NR5GC) */ + const octetstring tsc_APN2 := '0541504E2D32'O; /* Access Point Name APN-2; + @status APPROVED (LTE, NBIOT) */ + const charstring tsc_APN2_String := "APN-2"; /* Access Point Name APN-2; @sic R5s100748 sic@ + @status APPROVED (LTE, LTE_A_R10_R11, NBIOT) */ + const octetstring tsc_APN3 := '0541504E2D33'O; /* Access Point Name APN-3; + @status APPROVED (LTE_A_R10_R11) */ + const charstring tsc_APN3_String := "APN-3"; /* Access Point Name APN-3; @sic R5-143213 sic@ + @status APPROVED (LTE_A_R10_R11) */ + + } // end group NAS_CommonConstants + //------------------------------------------------------------------------------ + + template (value) AccessPointName cs_AccessPointName(octetstring p_Name) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := omit, + iel := int2oct(lengthof(p_Name), 1), + nameValue := p_Name + }; + + template (present) AccessPointName cr_AccessPointName(octetstring p_Name) := + { /* @status APPROVED (ENDC, IMS, LTE, LTE_A_R10_R11, NBIOT) */ + iei := '28'O, + iel := int2oct(lengthof(p_Name), 1), + nameValue := p_Name + }; + + template (present) AccessPointName cr_AccessPointName_Any := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + iei := '28'O, + iel := ?, + nameValue := ? + }; + + template (present) AdditionalUpdateType cr_AdditionalUpdateTypeAny := + { /* 24.301 cl. 9.9.3.0B */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s100135 sic@ */ + iei := 'F'H, // currently only used as TV + pnb_CIOT := ?, // @sic R5s160711 Baseline Moving, R5s210796 sic@ + signallingActiveFlag := tsc_Spare1, // @sic R5s160711 Baseline Moving sic@ + addUpdateTypeValue := ? + }; + + template (present) AuthenticationFailureParameter cr_AuthFailParam_Any := + { /* TLV format to be used in Authentication_Failure */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_IRAT, NBIOT, NR5GC, POS, SSNITZ, UTRAN) */ + iei := '30'O, // version 110, and value used in GMM + iel := '0E'O, + auts := ? + }; + + template (present) AuthenticationFailureParameter cdr_AuthFailParamGSM_Any modifies cr_AuthFailParam_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '22'O + }; + + template (value) RAND cs_RAND_v(B128_Type p_RAND) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := omit, + randValue := p_RAND + }; + + template (value) RAND cs_GMM_AuthRAND(B128_Type p_Rand) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '21'O, + randValue := p_Rand + }; + + template (value) AUTN cs_AUTN_lv(B128_Type p_AUTN) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := omit, + iel := '10'O, /* AUTN has length of 128 bits i.e. 16 octets */ + aUTN := p_AUTN + }; + + template (value) AUTN cs_GSM_AUTN(template (value) B128_Type p_AUTN) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '20'O, + iel := '10'O, // Length of 16 octets + aUTN := p_AUTN // value of Authentication Parameter AUTN + }; + + template (value) AUTN cs_GMM_AUTN(B128_Type p_Autn) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '28'O, + iel := '10'O, + aUTN := p_Autn + }; + + template (value) CiphKeySeqNum cs_CiphKeySeqNum(template (omit) IEI4_Type p_IEI, + template (value) KeySeq p_KeySeq) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare1 := '0'B, + keySeq := p_KeySeq + }; + + template (present) CiphKeySeqNum cr_CiphKeySeqNum(template (omit) IEI4_Type p_IEI, + template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare1 := '0'B, + keySeq := p_KeySeq + }; + + // ============================================================================= + // Structured Type Constraint + // Codec + // 3G TS 24.008 cl. 10.5.4.32 + // ----------------------------------------------------------------------------- + template (present) Codec cr_CodecAny := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + sysId := ?, // system identifcation + len := ?, // length + bitMap1to8 := ?, // codec bitmap bits 1-8 + bitMap9to16 := * // codec bitmap bits 9-16 + }; + + // ============================================================================= + // Structured Type Constraint + // Supported Codec List + // 3G TS 24.008 cl. 10.5.3.32 + // ----------------------------------------------------------------------------- + template (present) CodecList cr_CodecListAny := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '40'O, // '01000000'B (40 hex) + iel := ?, // length + codec := ({cr_CodecAny, cr_CodecAny, cr_CodecAny, *}, {cr_CodecAny, cr_CodecAny, *}, {cr_CodecAny, *}) // Codec list @sic R5s110278 sic@ + }; + + template (value) DCN_ID cs_Dcn_Id (O2_Type p_DCNIdValue) := + { /* @status APPROVED (IMS, SSNITZ, UTRAN) */ + iei := '41'O, + iel := '02'O, + dcnIdValue := p_DCNIdValue + }; + + template (value) DetachType cs_DetachType(NAS_AttDetValue_Type p_TypeOfDetach):= + { /* @status APPROVED (IMS_IRAT, LTE, LTE_A_R10_R11, NBIOT) */ + switchOff := '0'B, + typeOfDetach := p_TypeOfDetach + }; + + template (present) DetachType cr_DetachType(template (present) B1_Type p_SwitchOff, + template (present) NAS_AttDetValue_Type p_TypeOfDetach) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + switchOff := p_SwitchOff, + typeOfDetach := p_TypeOfDetach + }; + + template (present) DetachType cr_DetachTypeOnSwitchOff := cr_DetachType('1'B, ?); /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (present) DeviceProperties cr_DeviceProperties(IEI4_Type p_IEI, + template (present) B1_Type p_LowPriority := ?) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare := tsc_Spare3, + lowPriority := p_LowPriority + }; + + template (present) DRXparameter cr_DRXparameter_Any (template (omit) IEI8_Type p_IEI) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + splitPGcycleCode := ?, // Split PG cycle code + cnDRXcoef := ?, // CN specific DRX cycle length coefficient + splitOnCCCH := ?, // Split on CCCCH + nonDRXtimer := ? // non-DRX timer + }; + + template (present) EDGE_Struct cr_EDGE_Struct_Any := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + modulationCapability := ?, + pwrMask1 := ?, + eDGE_RF_PowerCapability1 := *, // not present if pwrMask1 = 0 + pwrMask2 := ?, + eDGE_RF_PowerCapability2 := * // not present if pwrMask2 = 0 + }; + + // ============================================================================= + // Structured Type Constraint + // Emergency Service Category + // 3GPP 24.008 / 10.5.4.33 + // ----------------------------------------------------------------------------- + template (present) EmergServCat cr_EmergServCat (template (present) B7_Type p_Cat) := + { + spare := '0'B, + emergSCValue := p_Cat + }; + + template (value) EmergServCat cs_EmergServCat(B7_Type p_EmergSCValue) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) */ + spare := '0'B, + emergSCValue := p_EmergSCValue // Emergency Service Category value + }; + + template (value) EmergNum cs_EmergencyLocalNumber(Type4Length_Type p_Length, + template (value) EmergServCat p_EmergSCValue, + octetstring p_Number) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC, NR5GC_IRAT, POS) */ + len := p_Length, // length + emergServCat := p_EmergSCValue, // Emergency Service Category + digits := p_Number // BCD numbers + }; + + // ============================================================================= + // Structured Type Constraint + // ----------------------------------------------------------------------------- + template (present) ExtdDRXParams cr_ExtdDRXParamsAny := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '6E'O, + iel := ?, // length + pagingTimeWindow := ?, + eDRXValue := ?, + extdPTW := * // @sic R5s221182 Baseline Moving Rel-17 sic@ + }; + + template (value) GPRS_Timer cs_GprsTimer_tv(IEI8_Type p_IEI, // @sic R5s100662 sic@ + B3_Type p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := p_IEI, // '1E'O + unit := p_Unit, + timerValue := p_Value + }; + + template (value) GPRS_Timer cs_GprsTimer_v(GprsTimerUnit p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit, + unit := p_Unit, + timerValue := p_Value + }; + + template (value) GPRS_Timer cs_GprsTimer_v_deact := cs_GprsTimer_v(tsc_GprsTimerUnit_deact, tsc_Spare5); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + + template (value) IdentityType cs_IdentityType(NAS_IdType p_NAS_IdType) := + { /* @status APPROVED (ENDC, LTE, LTE_A_R10_R11, NBIOT, NR5GC) */ + spare := '0'B, + typeOfId := p_NAS_IdType + }; + + template (present) LocAreaId cr_LAI(template (omit) IEI8_Type p_IEI, + template (present) octetstring p_PLMN := ?, + template (present) octetstring p_LAC := ?) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + plmn := p_PLMN, // MCC + MNC + lac := p_LAC // location area code + }; + + template (present) LocAreaId cr_LAI_Any := cr_LAI('13'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + template (present) LocAreaId cr_LAI_Any_v := cr_LAI(omit); /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) LocAreaId cs_LAI(template (omit) IEI8_Type p_IEI, + template (value) octetstring p_PLMN, + template (value) octetstring p_LAC) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + plmn := p_PLMN, // MCC + MNC + lac := p_LAC // location area code + }; + + template (value) LLC_SAPI cs_LLC_SAPI(template (omit) IEI8_Type p_IEI := omit, + B4_Type p_LlcSapiValue) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + iei := p_IEI, + spare := '0000'B, + llcSapiValue := p_LlcSapiValue + }; + + template (value) LLC_SAPI cs_LLC_SAPI_11 (template (omit) IEI8_Type p_IEI := omit) := cs_LLC_SAPI(p_IEI, '1011'B); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + template (value) LLC_SAPI cs_LLC_SAPI_03 (template (omit) IEI8_Type p_IEI := omit) := cs_LLC_SAPI(p_IEI, '0011'B); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + + template (present) MobileIdentity cr_MobileIdAny(template (omit) IEI8_Type p_IEI := omit) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := ?, + idDigit1 := ?, + oddEvenInd := ?, + typeOfId := ?, + otherDigits := ? + }; + + template (value) MobileIdentity cs_MobileIdentityGuti(template (omit) IEI8_Type p_IEI, + octetstring p_Guti) := + { + /* Reference: 24.301 cl. 9.9.3.12; + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := int2oct(lengthof(p_Guti) + 1, 1), // 11 octets in case of GUTI + idDigit1 := '1111'B, // in case of the GUTI + oddEvenInd := '0'B, // in case of the GUTI + typeOfId := tsc_IdType_GUTI, // 3 bits + otherDigits := p_Guti // 10 octets acc. to 24.301 + }; + + template (value) MobileIdentity cs_MobileIdentityImsi(B4_Type p_FirstDigit, + B1_Type p_OddEvenInd, + octetstring p_OtherDigits) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '17'O, + iel := int2oct(lengthof(p_OtherDigits) + 1, 1), + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := tsc_IdType_IMSI, // 3 bits + otherDigits := p_OtherDigits + }; + + template (value) MobileIdentity cds_MobileIdentityImsi_lv(B4_Type p_FirstDigit, + B1_Type p_OddEvenInd, + octetstring p_OtherDigits) + modifies cs_MobileIdentityImsi := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit + }; + + template (value) MobileIdentity cs_MobileIdTMSIorPTMSI(template (omit) IEI8_Type p_IEI, + O4_Type p_TmsiPtmsi) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, // for U/G this is '18'O + iel := '05'O, // TMSI consists of 4 octets + idDigit1 := '1111'B, // special coding for TMSI + oddEvenInd := '0'B, // even + typeOfId := tsc_IdType_TMSI, // TMSI / P-TMSI + otherDigits := p_TmsiPtmsi + }; + + template (value) MobileIdentity cs_MobileIdTMSI(template (omit) IEI8_Type p_IEI, // iei can be '17' (MM) or '13' (GMM) or omit + O4_Type p_Tmsi) := + /* @status APPROVED (IMS_IRAT, LTE_IRAT, SSNITZ) */ + cs_MobileIdTMSIorPTMSI(p_IEI, p_Tmsi); + + template (present) MobileIdentity cr_MobileIdTMSI_lv(template (present) octetstring p_Tmsi := ?) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit, + iel := '05'O, // TMSI consists of 4 octets + idDigit1 := '1111'B, // special coding for TMSI + oddEvenInd := '0'B, // even + typeOfId := tsc_IdType_TMSI, // TMSI + otherDigits := p_Tmsi + }; + + template (present) MobileIdentity cdr_MobileIdTMSI_tlv(template (present) octetstring p_Tmsi := ?, + IEI8_Type p_IEI := '18'O) + modifies cr_MobileIdTMSI_lv := + { /* @status APPROVED (IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI + }; + + template (present) MobileIdentity cr_MobileIdentityImei(B4_Type p_FirstDigit, + B1_Type p_OddEvenInd, + octetstring p_OtherDigits, + NAS_IdType p_NAS_IdType := tsc_IdType_IMEI) := // @sic R5s130758 sic@ + { /* @status APPROVED (LTE, LTE_A_R10_R11, NBIOT) */ + iei := omit, + iel := int2oct(lengthof(p_OtherDigits) + 1, 1), + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := p_NAS_IdType, // 3 bits // @sic R5s130758 sic@ + otherDigits := p_OtherDigits + }; + + template (present) MobileIdentity cr_MobileIdentityImeisv(B4_Type p_FirstDigit, // @sic R5-131832 sic@ + B1_Type p_OddEvenInd, + octetstring p_OtherDigits) := + { /* @status APPROVED (LTE, NBIOT) */ + iei := omit, + iel := int2oct(lengthof(p_OtherDigits) + 1, 1), + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := tsc_IdType_IMEISV, // 3 bits + otherDigits := p_OtherDigits + }; + + template (present) MS_Clsmk2 cr_MS_Clsmk2_Any_tlv(template (omit) IEI8_Type p_IEI := '11'O) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, // @sic R5s100662, R5s110112 sic@ + iel := '03'O, + spare1_1 := '0'B, + revLvl := ?, + eSIND := ?, + a5_1 := ?, + rFPwrCap := ?, + spare1_2 := '0'B, + pSCap := ?, + sSSI := ?, + sMCap := ?, + vBS := ?, + vGCS := ?, + fC := ?, + cM3 := ?, + spare1_3 := '0'B, + lCSVA := ?, + uCS2 := ?, + soLSA := ?, + cMSP := ?, + a5_3 := ?, + a5_2 := ? + }; + + template (present) MS_Clsmk2 cr_MS_Clsmk2_Any := + /* @status APPROVED (IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cr_MS_Clsmk2_Any_tlv (omit); + + template (present) MS_Clsmk3 cr_MSCLSMK3_Any := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '20'O, /* 0x20 */ + iel := ?, /* OCTETSTRING [1] */ + spareBit := '0'B, // spare bit */ + multibandSupported := ?, + a5_7 := ?, /* a5/7 algorithm supported */ + a5_6 := ?, /* a5/6 algorithm supported */ + a5_5 := ?, /* a5/5 algorithm supported */ + a5_4 := ?, /* a5/4 algorithm supported */ + associatedRadioCapabilty2 := *, /* present if multibandSupported = 101 or 110 */ + spareBits1 := *, /* present if multibandSupported = 001 or 010 or 100 */ + associatedRadioCapabilty1 := *, /* present if multibandSupported = 001 or 010 or 100 or 101 or 110 */ + maskBit1 := ?, + rGSM_RadioCapability := *, /* R-GSM band associated radio capability. + not present if maskB1 = 0 */ + maskBit2 := ?, + multiSlotClass := *, /* multi slot class. + not present if multiSlotClass = 0 */ + uCS2Treatment := ?, + extMeasurementCapability := ?, /* extended measurement capability */ + maskBit3 := ?, + msMeasurementCapability := cr_MS_MeasCapability_Any ifpresent, /* MS measurement capability + // not present if maskB3 = 0 */ + maskBit4 := ?, + msPositioningMethod := *, /* MS positioning method capability + not present if maskB4 = 0 */ + maskBit5 := ?, + eDGE_MultiSlot := *, /* EDGE multi slot capability + not present if maskB5 = 0 */ + maskBit6 := ?, + psk8_Struct := cr_EDGE_Struct_Any ifpresent, /* EDGE struct + not present if maskB6 = 0 */ + maskBit7 := ?, + gSM400BandsSupported := *, /* not present if maskBIt7 = 0 */ + gSM400AssociatedRadioCapability := *, /* not present if gSM400BandsSupported = 00 or maskB7 = 0 */ + maskBit8 := ?, + gSM850AssociatedRadiioCapability := *, /* not present if maskBIt8 = 0 */ + maskBit9 := ?, + pCS1900AssociatedRadiioCapability := *, /* not present if maskBIt9 = 0 */ + uMTS_FDD_RAT_Capability := ?, + uMTS384TDD_RAT_Capability := ?, + cDMA2000_RAT_Capability := ?, + maskBit10 := ?, + dTM_GPRS_MultiSlotSubclass := *, /* not present if maskB10 = 0 */ + singleSlotDTM := *, /* not present if maskB10 = 0 */ + maskBit11 := *, /* not present if maskB10 = 0 */ + dTM_EGPRS_MultiSlorSubclass := *, /* not present if maskB10 = 0 or maskB11 = 0 */ + maskBit12 := ?, + singleBandSupport := *, /* not present if maskB12 = 0 */ + maskBit13 := *, + gSM700AssociatedRadioCapability := *, /* not present if maskB13 = 0 */ + uMTS128TDD_RAT_Capability := *, + gERANFeatPack1 := *, + mask14 := *, + extDTM_GPRS_MultiSlotSubclass := *, /* not present if maskB14 = 0 */ + etxDTM_EGPRS_MultiSlotSubclass := *, /* not present if maskB14 = 0 */ + mask15 := *, + highMultislotCap := *, /* not present if mask15 = 0 */ + spare2 := tsc_Spare1, // @sic R5s150329 Baseline Moving sic@ + gERANFeatPack2 := *, + gMSKMultislotPowerProfile := *, + pSKMultislotPowerProfile := *, + mask17 := *, /* rel 6 features */ + tGSM400BandsSupported := *, /* not present if maskB17 = 0 */ + tGSM400AssocRadioCap := *, /* not present if maskB17 = 0 */ + spare := *, // @sic R5s110176 Baseline Moving sic@ + dlAdvancedRxPerf := *, + dTMEhancCap := *, + mask19 := *, + dTMGPRSHighMultislotClass := *, /* not present if maskB19 = 0 */ + offsetReq := *, /* not present if maskB19 = 0 */ + mask20 := *, /* not present if maskB19 = 0 */ + dTMEGPRSHighMultislotClass := *, /* not present if maskB19 and maskB20 = 0 */ + rptdACCHCap := *, + mask21 := *, + gsm710AssocRadioCap := *, /* not present if maskBit21 = 0 */ + mask22 := *, + tgsm810AssocRadioCap := *, /* not present if maskBit22 = 0 */ + cipheringModeSettingCap := *, + addPositionCap := *, + eutraFDDSupport := *, /* rel 8 features */ + eutraTDDSupport := *, + eutraMeasAndReporting := *, /* @sic R5s100135 Baseline moving sic@ */ + priorityBasedReselection:= *, // @sic R5s110176 Baseline Moving sic@ + utraCSGCellsReporting := *, // @sic R5s110176 Baseline Moving sic@ + vamosLevel := *, // @sic R5s110176 Baseline Moving sic@ + tighterCap := *, // @sic R5s120178 Baseline Moving sic@ + selectCipheringDLSACCH := *, // @sic R5s120178 Baseline Moving sic@ + csPS_SRVCC_G2U := *, // @sic R5s130195 Baseline Moving sic@ + csPS_SRVCC_G2E := *, // @sic R5s130195 Baseline Moving sic@ + geranNwkSharing := *, // @sic R5s150329 Baseline Moving sic@ + eutraWidebandRSRQMeas := *, // @sic R5s150329 Baseline Moving sic@ + erBandSupport := *, // @sic R5s150329 Baseline Moving sic@ + utraMultipleFreqBandInd := *, // @sic R5s150329 Baseline Moving sic@ + eutraMultipleFreqBandInd := *, // @sic R5s150329 Baseline Moving sic@ + xtdTSCSetCap := *, // @sic R5s150329 Baseline Moving sic@ + xtdEARFCNValueRange := *, // @sic R5s160712 Baseline Moving sic@ + spareBits2 := * + }; + + template (present) MS_Clsmk3 cdr_MSCLSMK3_EutraCheck (template (omit) IEI8_Type p_IEI) modifies cr_MSCLSMK3_Any := + { /* @status APPROVED (LTE) */ + iei := p_IEI, // @sic R5s110244, R5s140493 sic@ + iel := omit, // @sic R5s110244 sic@ + eutraFDDSupport := ?, + eutraTDDSupport := ? + }; + + template (present) MS_MeasCapability cr_MS_MeasCapability_Any := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + sMS_VALUE := ?, + sM_VALUE := ? + }; + + template (present) MS_NetworkCap cr_MS_NetworkCap_Any := + { /* 24.301 cl. 9.9.3.18 -> 24.008 cl. 10.5.5.12; + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '31'O, /* present in case of TV; omit in case of V */ + iel := ?, /* present in case of LV or TLV; omit in case of V */ + gea1 := ?, + smCapDedicated := ?, + smCapGPRS := ?, + ucs2 := ?, + ssScreeningIndicator := ?, + soLSACap := ?, + revLevelIndicator := ?, + pfcFeatureMode := ?, + gea2 := ?, + gea3 := ?, + gea4 := ?, + gea5 := ?, + gea6 := ?, + gea7 := ?, + lcsVACap := ?, + psHOtoUTRAN_IuModeCap := ?, + psHOtoEUTRAN_S1ModeCap := ?, + emmCombinedCap := ?, // @sic R5s110176 Baseline Moving sic@ + isrSupport := ?, + srvccToGERAN_UTRANCap := ?, + epcCap := ?, + nfCap := *, // @sic R5s110176 Baseline Moving R5s110242 sic@ + gERANNtwkShareCap := *, // @sic R5s130195 Baseline Moving sic@ + userPlaneIntegrityProtSupport := *, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + gia4 := *, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + gia5 := *, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + gia6 := *, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + gia7 := *, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + ePCOInd := *, // @sic R5s170598 Baseline Moving sic@ + restrictEnhancedCoverageCap := *, // @sic R5s170598 Baseline Moving sic@ + dualConnectivityEUTRA_NR := *, // @sic R5s180553 Baseline Moving sic@ + spareBits := * + }; + + template (present) MS_NetworkCap cdr_MS_NetworkCapAss_lv modifies cr_MS_NetworkCap_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit + }; + + template (present) MS_NetworkFeatureSupport cr_MS_NetworkFeatureSupport(IEI4_Type p_IEI, + template (present) B1_Type p_ExtdPeriodicTimers := ?) := + { /* 24.301 cl. 9.9.2.0A -> 24.008 cl. 10.5.5.15 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare := tsc_Spare3, + extdPeriodicTimers := p_ExtdPeriodicTimers + }; + + template (present) NBIFOMContainer cr_NBIFOMContainerAny := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + iei := '33'O, + iel := ?, // length + containerContents := ? + }; + + template (present) NwkResourceId cr_NwkResourceIdAny (IEI8_Type p_IEI := '10'O) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := ?, + nriContainerValue := ?, + spareBits := tsc_Spare6 // @sic R5s140778 sic@ + }; + + template (value) PacketFlowIdentifier cs_PktFlowId := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + iei := '34'O, + iel := '01'O, + spare := '0'B, + idValue := '0000000'B // Best effort + }; + + template (value) PLMN_List cs_PLMN_List(NAS_PlmnIdList_Type p_PlmnIdList) := + { /* @status APPROVED (LTE, LTE_A_IRAT, LTE_A_R10_R11, NBIOT, NR5GC, UTRAN) */ + iei := '4A'O, + iel := int2oct(lengthof(p_PlmnIdList) * 3, 1), + plmnList := p_PlmnIdList + }; + + template (value) PLMN_List cs_PLMN_List_1PLMN(NAS_PlmnId p_Plmn1) := + /* @status APPROVED (LTE, LTE_A_IRAT, LTE_A_R10_R11, NBIOT, NR5GC, UTRAN) */ + cs_PLMN_List({p_Plmn1}); + + template (value) PLMN_List cs_PLMN_List_2PLMNs(NAS_PlmnId p_Plmn1, + NAS_PlmnId p_Plmn2) := + /* @status APPROVED (LTE, LTE_A_R10_R11, NBIOT, NR5GC) */ + cs_PLMN_List({p_Plmn1, p_Plmn2}); + + template (value) PLMN_List cs_PLMN_List_3PLMNs(NAS_PlmnId p_Plmn1, + NAS_PlmnId p_Plmn2, + NAS_PlmnId p_Plmn3) := + /* @status APPROVED (LTE, NBIOT) */ + cs_PLMN_List({p_Plmn1, p_Plmn2, p_Plmn3}); + + template (value) PLMN_List cs_PLMN_List_4PLMNs(NAS_PlmnId p_Plmn1, + NAS_PlmnId p_Plmn2, + NAS_PlmnId p_Plmn3, + NAS_PlmnId p_Plmn4) := + /* @status APPROVED (LTE, NBIOT) */ + cs_PLMN_List({p_Plmn1, p_Plmn2, p_Plmn3, p_Plmn4}); + + template (value) ProtocolContainer cs_ProtocolContainer_Common(O2_Type p_ContainerId, + integer p_ContainerLength := 0, + template (omit) octetstring p_Content := omit) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + protocolID := p_ContainerId, + protocolLength := int2oct(p_ContainerLength, 1), + protocolLongLength := omit, // @sic R5s201386 Baseline Moving sic@ + content := p_Content + }; + + template (value) ProtocolContainer cs_ProtocolContainer(O2_Type p_ProtocolId, + octetstring p_Content) := + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + /* @sic R5s141127 change 4 - MCC160 Comments: cs_ProtocolContainer_Common sic@ */ + cs_ProtocolContainer_Common(p_ProtocolId, lengthof(p_Content), p_Content); + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_Common(Type4Length_Type p_Type4Length := '01'O, + template (omit) ProtocolConfigOptions.pco p_ProtocolContainers := omit) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, UTRAN) */ + iei := '27'O, + iel := p_Type4Length, + ext := '1'B, + spare := '0000'B, + configProtocol := '000'B, + pco := p_ProtocolContainers + }; + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_PPP := cs_ProtocolConfigOptions_Common; /* @status APPROVED (LTE_IRAT) */ + + /* + * @desc Common function to build up ProtocolConfigOptions acc. to 24.008 cl. 10.5.6.3 + * @param p_ProtocolContainers + * @return template (value) ProtocolConfigOptions + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NR5GC_IRAT, POS, UTRAN) + */ + function f_NAS_ProtocolConfigOptionsTX(template (value) NAS_ProtocolConfigOptions_Type p_ProtocolContainers) return template (value) ProtocolConfigOptions + { + var integer v_Length := 1; // there are at least ext, spare, configProtocol + var integer i; + + for (i:=0; i < lengthof(p_ProtocolContainers); i:=i+1) { + v_Length := v_Length + oct2int(valueof(p_ProtocolContainers[i].protocolLength)) + 3; // 2 octets for protocolID and 1 octet for protocolLength + } + return cs_ProtocolConfigOptions_Common(int2oct(v_Length, 1), p_ProtocolContainers); + } + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_OneOption(template (value) ProtocolContainer p_ProtocolContainer) := + /* @status APPROVED (UTRAN) */ + f_NAS_ProtocolConfigOptionsTX({p_ProtocolContainer}); + + template (present) ProtocolConfigOptions cr_ProtocolConfigOptionsAny := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, UTRAN) */ + iei := '27'O, + iel := ?, + ext := '1'B, + spare := '0000'B, + configProtocol := ?, + pco := * // @sic R5s100800 sic@ + }; + + template (present) ExtdProtocolConfigOptions cr_ExtdPCOAny := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + iei := '7B'O, + iel := ?, + ext := ?, + spare := tsc_Spare4, + configProtocol := ?, + pco := * + }; + + template (value) PTMSI_Signature cs_PTMSI_Signature(octetstring p_Ptmsi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '19'O, + iel := omit, + signatureValue := p_Ptmsi + }; + + template (present) PTMSI_Signature cr_PTMSI_Signature(template (present) O3_Type p_PtmsiSig) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '19'O, + iel := omit, + signatureValue := p_PtmsiSig + }; + + template (present) PTMSI_Signature cr_PTMSI_SignatureAny := + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + cr_PTMSI_Signature(?); + + template (present) PTMSI_Signature cr_PTMSI_Signature2Any := // Only used in Detach Request MO + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '19'O, + iel := '03'O, + signatureValue := ? + }; + + template (value) QualityOfService cs_QoS_Negotiated_1 := + { /* TS 34.123-3 Table 8.10.2 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := '30'O, + iel := '10'O, + spare1 := '00'B, + delayClass := '100'B, + relabilityClass := '011'B, + peakThroughput := '0100'B, + spare2 := '0'B, + precedenceClass := '011'B, + spare3 := '000'B, + meanThroughput := '11111'B, + trafficClass := '100'B, + deliveryOrder := '10'B, + deliveryErrorSDU := '010'B, + maxSduSize := '00100000'B, + maxBitRateUL := '01000000'B, + maxBitRateDL := '01000000'B, + residualBER := '0111'B, + sduErrorRatio := '0100'B, + transferDelay := '000000'B, + trafficHandlingPrio := '00'B, + guaranteedBitRateUL := '00010000'B, + guaranteedBitRateDL := '00010000'B, + spare4 := '000'B, + signallingInd := '0'B, + sourceStatisticsDescriptor := '0000'B, + maxBitRateDL_Ext := '00000000'B, + guaranteedBitRateDL_Ext := '00000000'B, + maxBitRateUL_Ext := '00000000'B, + guaranteedBitRateUL_Ext := '00000000'B, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) QualityOfService cds_QoS_Negotiated_2 modifies cs_QoS_Negotiated_1 := + { /* TS 34.123-3 Table 8.10.2 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + maxSduSize := '10010110'B, + maxBitRateUL := '01001000'B, + maxBitRateDL := '01001000'B, + residualBER := '0100'B, + sduErrorRatio := '0011'B + }; + + template (value) QualityOfService cds_QoS_Negotiated_3 modifies cs_QoS_Negotiated_1 := + { /* TS 34.123-3 Table 8.10.2 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + trafficClass := '001'B, + deliveryErrorSDU := '011'B, + maxSduSize := '10001100'B, + maxBitRateUL := '01101110'B, //432 kbps + maxBitRateDL := '01101110'B, //432 kbps + sduErrorRatio := '0010'B, + transferDelay := '001101'B, + guaranteedBitRateUL := '00000000'B, + guaranteedBitRateDL := '00000000'B + }; + + template (value) QualityOfService cds_QoS_Negotiated_4 (template (omit) IEI8_Type p_IEI := '30'O) modifies cs_QoS_PDP2 := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + relabilityClass := '101'B, + trafficClass := '001'B, + deliveryOrder := '10'B, // @sic R5-133509 sic@ + maxSduSize := '00001111'B, + maxBitRateUL := '01101000'B, + maxBitRateDL := '01101000'B, + residualBER := '0001'B, + sduErrorRatio := '0001'B, + transferDelay := '001000'B, + sourceStatisticsDescriptor := '0001'B + }; + + template (value) QualityOfService cds_QoS_Negotiated_8 modifies cs_QoS_Negotiated_1 := + { /* See in TS 36.508 Table 6.6.2-1A - Context #8 */ + /* @status */ + transferDelay := '000111'B // 70 msec - See 24.008 cl. 10.5.6.5 + }; + + template (value) QualityOfService cs_QoS_PDP2 (template (omit) IEI8_Type p_IEI := '30'O) := + { /* TS 51.010-1 Table 40.5 */ + // @sic R5s120218 sic@ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := '10'O, + spare1 := '00'B, + delayClass := '100'B, + relabilityClass := '011'B, + peakThroughput := '0101'B, + spare2 := '0'B, + precedenceClass := '010'B, + spare3 := '000'B, + meanThroughput := '10000'B, + trafficClass := '100'B, + deliveryOrder := '01'B, + deliveryErrorSDU := '011'B, + maxSduSize := '10010110'B, + maxBitRateUL := '01001000'B, + maxBitRateDL := '01001000'B, + residualBER := '0111'B, + sduErrorRatio := '0100'B, + transferDelay := '000000'B, + trafficHandlingPrio := '00'B, + guaranteedBitRateUL := '00000000'B, + guaranteedBitRateDL := '00000000'B, + spare4 := '000'B, + signallingInd := '0'B, + sourceStatisticsDescriptor := '0000'B, + maxBitRateDL_Ext := '00000000'B, + guaranteedBitRateDL_Ext := '00000000'B, + maxBitRateUL_Ext := '00000000'B, + guaranteedBitRateUL_Ext := '00000000'B, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) QualityOfService cds_QoS_PDP3 (template (omit) IEI8_Type p_IEI := '30'O) modifies cs_QoS_PDP2 := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + relabilityClass := '101'B, + deliveryErrorSDU := '010'B, + residualBER := '0100'B, + sduErrorRatio := '0011'B + }; + + template (value) QualityOfService cds_QoS_Converstational (template (omit) IEI8_Type p_IEI := '30'O) modifies cs_QoS_PDP2 := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + relabilityClass := '101'B, + trafficClass := '001'B, + deliveryOrder := '10'B, // @sic R5-133509 sic@ + maxSduSize := '00001111'B, // @sic R5-120632 sic@ + maxBitRateUL := '01101000'B, + maxBitRateDL := '01101000'B, + residualBER := '0001'B, + sduErrorRatio := '0001'B, + transferDelay := '001000'B + }; + + template (present) TrafficFlowTemplate cr_Tft(template IEI8_Type p_IEI := omit, + template (present) B3_Type p_Code := ?) := + { /* 24.301 cl. 9.9.4.13 -> 24.008 cl. 10.5.6.12 */ + /* @status APPROVED (ENDC, LTE, LTE_A_R10_R11, NBIOT, UTRAN) */ + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := ?, + tftOperationCode := p_Code, + eBit := ?, + noOfPktFilter := complement ('0000'B), // value must be greater than 0 and <= 16 (only 4 bits) + packetFilterList := ?, + parameterList := * + }; + + template (value) TrafficFlowTemplate cs_TrafficFlowTemplate(integer p_IeLength, + template (value) TrafficFlowTemplate.packetFilterList p_PacketFilterList):= + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + iei := omit, + iel := int2oct(p_IeLength, 1), + tftOperationCode := '001'B, // Create new TFT + eBit := '0'B, // Parameter list not included + noOfPktFilter := int2bit(lengthof(p_PacketFilterList), 4), + packetFilterList := p_PacketFilterList, + parameterList := omit + }; + + template (present) UE_Status cr_UEStatus_Any := + { // 24.501 cl. 9.11.3.56 + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := '6D'O, + iel := ?, + spare := tsc_Spare6, + n1ModeRegistered := ?, + s1ModeRegistered := ? + }; + // ============================================================================= + // A value of 1 is the highest radio priority level + // ----------------------------------------------------------------------------- + + template (value) RadioPriority cs_RadioPriority (template (omit) IEI4_Type p_IEI, + B3_Type p_Val) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare := '0'B, + levelValue := p_Val + }; + + template (value) RadioPriority cs_RadioPriorityHigh (template (omit) IEI4_Type p_IEI) := cs_RadioPriority (p_IEI, '001'B); /* @status APPROVED (IMS, LTE_A_IRAT, LTE_IRAT, POS, UTRAN) */ + template (value) RadioPriority cs_RadioPriorityLow (template (omit) IEI4_Type p_IEI) := cs_RadioPriority (p_IEI, '100'B); /* @status APPROVED (LTE_IRAT) */ + + template (present) TMSI_Status cr_TMSI_Status(template (present) TmsiStatusValue p_TmsiStatus := ?) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '9'H, + spare3 := tsc_Spare3, + flag := p_TmsiStatus + }; + + template (present) UE_NetworkCap cr_UENetworkCap_Any (template (omit) IEI8_Type p_IEI) := + { /* 24.301 cl. 9.9.3.34 + @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := ?, /* present in case of LV or TLV; omit in case of V */ + eeaCap := ?, // @sic R5s100135 sic@ + eiaCap := ?, // @sic R5s100135 sic@ + ueaCap := *, // @sic R5s100135 sic@ + uiaCap := *, // @sic R5s100135 sic@ + srvcc_LPP_ProSeCap := *, // @sic R5s100135, R5s150329 Baseline Moving sic@ + cIoT_proSeCap := *, // @sic R5s150329, R5s160711 Baseline Moving sic@ + cIoT_V2X := *, // @sic R5s170598 Baseline Moving sic@ + edt_WUS := *, // @sic R5s201386 Baseline Moving sic@ + musim := *, // Sep22 @sic R5s221179 Baseline Moving sic@ + spare := * // @sic R5s100135 sic@ + }; + + template (present) UE_NetworkCap cdr_NR5GC_UENetworkCap (template (omit) IEI8_Type p_IEI) + modifies cr_UENetworkCap_Any := + { /* @status APPROVED (ENDC, NR5GC_IRAT) */ + cIoT_proSeCap := ('1'B & ? length (7)), // @sic R5-196647, R5-217714 sic@ + cIoT_V2X := (? length (2) & '1'B & ? length (5)) + }; + + template (present) VoiceDomainPref cr_VoiceDomainPref_Any := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := ?, // 01111110'B + iel := ?, // length + spareBits := ?, + ueUsageSetting := ?, + voiceDomainPrefEUTRA := ? + }; + + template (value) GPRS_Timer2 cs_GPRS_Timer2_3_IEI(template (omit) IEI8_Type p_IEI, // @sic R5s150329 Baseline Moving sic@ + B3_Type p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (IMS, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := '01'O, // length + unit := p_Unit, // Unit + gprsTimerValue := p_Value // Timer value + }; + + template (value) GPRS_Timer3 cs_GprsTimer3(template (omit) IEI8_Type p_IEI := '5E'O, // @sic R5s150745 sic@ + GprsTimerUnit p_Unit, + B5_Type p_Value) := cs_GPRS_Timer2_3_IEI(p_IEI, p_Unit, p_Value); /* @status APPROVED (LTE_A_R10_R11, NBIOT) */ + + template (present) GPRS_Timer2 cr_GPRS_Timer2_3(IEI8_Type p_IEI, // @sic R5s150329 Baseline Moving sic@ + template (present) B3_Type p_Unit := ?, + template (present) B5_Type p_Value := ?) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := '01'O, // length + unit := p_Unit, // Unit + gprsTimerValue := p_Value // Timer value + }; + + template (value) TimeZoneAndTime cs_TimeZoneAndTime (O1_Type p_Year, + O1_Type p_Month, + O1_Type p_Day, + O1_Type p_Hour, + O1_Type p_Minute, + O1_Type p_Second, + O1_Type p_TimeZone):= + { /* @status APPROVED (LTE, NR5GC, SSNITZ) */ + iei := '47'O, // @sic R5s110439 sic@ + year := p_Year, + month := p_Month, + day := p_Day, + hour := p_Hour, + minute := p_Minute, + second := p_Second, + timeZone := p_TimeZone + }; + + template (value) TimeZone cs_TimeZone (O1_Type p_TimeZone):= + { /* @status APPROVED (LTE, NR5GC, SSNITZ) */ + iei := '46'O, + timeZone := p_TimeZone + }; + + template (value) NetworkName cs_NetworkName (IEI8_Type p_Iei, + charstring p_Name, + Gsm7BitPacking_Type p_Packing := SMS_Packing, // default: GSM default 7 + B1_Type p_AddCI := '0'B) := // default: do not include the CI + { /* @status APPROVED (LTE, NR5GC, SSNITZ) */ + iei := p_Iei, + iel := int2oct((lengthof(f_CharPacking_IA5toGsm7Bit(p_Name, p_Packing)) + 1),1), + ext := '1'B, + codingScheme := f_ConvertPackingToCodingScheme (p_Packing), + addCI := p_AddCI, + spareBitCnt := int2bit((lengthof(p_Name) mod 8), 3), // @sic R5s140651 sic@ + text := f_CharPacking_IA5toGsm7Bit(p_Name, p_Packing) + }; + + //---------------------------------------------------------------------------- + /* + * @desc Conversion of the packing type per TS 23.040 into the coding scheme parameter used in the Network Name IE + * @param p_Gsm7BitPacking_Type + * @return B3_Type + * @status APPROVED (LTE, NR5GC, SSNITZ) + */ + function f_ConvertPackingToCodingScheme(Gsm7BitPacking_Type p_Gsm7BitPacking_Type) return B3_Type + { + var B3_Type v_CodingScheme := '000'B; + + if (p_Gsm7BitPacking_Type == SMS_Packing) {v_CodingScheme := '000'B } else {FatalError (__FILE__, __LINE__, "Unexpected Packing for conversion to Coding Scheme")}; + //if (p_Gsm7BitPacking_Type == CBS_Packing) {v_CodingScheme := '000'B }; + //if (p_Gsm7BitPacking_Type == USSD_Packing) {v_CodingScheme := '000'B }; + + return v_CodingScheme; + } + + template (value) DaylightSavingTime cs_DaylightSavingTime_tlv (B2_Type p_DaylightSavingTime) := + { /* 24.301 cl. 9.9.3.6; */ + /* @status APPROVED (LTE, NR5GC, SSNITZ) */ + iei := '49'O, + iel := '01'O, // @sic R5s120508 sic@ + spare := tsc_Spare6, + val := p_DaylightSavingTime + }; + + //============================================================================ + // Packet filters + //---------------------------------------------------------------------------- + template (value) PacketFilterComponent cs_PktFilterCompIPv4RemoteAddress(charstring p_RemoteAddress, + O4_Type p_Mask := tsc_IPv4Mask) := + { // 9 octets + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + /* @sic R5s110604: optional parameters sic@ */ + id := '10'O, // IPv4 remote address + packetFilterComponentValue := { + ipv4RemoteAddress := f_Convert_IPv4Addr2OctString(p_RemoteAddress) & p_Mask // @sic R5s100189, R5-113734 sic@ + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompIPv6RemoteAddress(charstring p_RemoteAddress, + O16_Type p_Mask := tsc_IPv6Mask) := + { // 33 octets + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + id := '20'O, + packetFilterComponentValue := { + ipv6RemoteAddress := f_Convert_IPv6Addr2OctString(p_RemoteAddress) & p_Mask // @sic R5s100189, R5-113734 sic@ + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeader(O1_Type p_ProtocolIdNextHeader) := + { // 2 octets + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + id := '30'O, // Protocol Identifier / Next header type + packetFilterComponentValue := { + protocolIdNextHeader := p_ProtocolIdNextHeader + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderICMP := cs_PktFilterCompProtocolIdNextHeader('01'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderICMPv6 := cs_PktFilterCompProtocolIdNextHeader('3A'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderUDP := cs_PktFilterCompProtocolIdNextHeader('11'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderTCP := cs_PktFilterCompProtocolIdNextHeader('06'O); /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderIPSec := cs_PktFilterCompProtocolIdNextHeader('32'O); /* @status APPROVED (LTE, NBIOT, UTRAN) */ + + template (value) PacketFilterComponent cs_PktFilterCompSingleLocalPort(UInt16_Type p_PortNumber) := + { // 3 octets + /* @status APPROVED (LTE, NBIOT, UTRAN) */ + id := '40'O, // Single local port + packetFilterComponentValue := { + singleLocalPort := int2oct(p_PortNumber, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompLocalPortRange(UInt16_Type p_PortLow, + UInt16_Type p_PortHigh) := + { // 3 octets + /* @status APPROVED (LTE, NBIOT, UTRAN) */ + id := '41'O, // Local port range + packetFilterComponentValue := { + localPortRange := int2oct(p_PortLow, 2) & int2oct(p_PortHigh, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompSingleRemotePort(UInt16_Type p_PortNumber) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + id := '50'O, // Single remote port + packetFilterComponentValue := { + singleRemotePort := int2oct(p_PortNumber, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompRemotePortRange(UInt16_Type p_PortLow, + UInt16_Type p_PortHigh) := + { // 3 octets + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, UTRAN) */ + id := '51'O, // Remote port range + packetFilterComponentValue := { + remotePortRange := int2oct(p_PortLow, 2) & int2oct(p_PortHigh, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompTOSTrafficClass(O2_Type p_TOSTrafficClass) := + { // 3 octets + /* @status APPROVED (LTE, NBIOT, UTRAN) */ + id := '70'O, // Type of service / Traffic class type + packetFilterComponentValue := { + typeOfServiceTrafficClass := p_TOSTrafficClass + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompIPSecSPI(O4_Type p_IPSecSPI) := + { // 5 octets + /* @status APPROVED (LTE, NBIOT, UTRAN) */ + id := '60'O, // Security parameter index type + packetFilterComponentValue := { + securityParameterIndex := p_IPSecSPI + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompFlowLabel(O3_Type p_FlowLabel) := + { // 4 octets + /* @status APPROVED (LTE, NBIOT, UTRAN) */ + id := '80'O, // Flow label type + packetFilterComponentValue := { + flowLabel := p_FlowLabel + } + }; + + /* + * @desc Calculate Packet Filters applied in test case 10.9.1 of 36.523-1 + * @param p_PacketFilterByRef (by reference) + * @param p_PacketFilterLengthByRef (by reference) + * @param p_IpTypeIsIPv4 + * @param p_PacketFilterID + * @status APPROVED (LTE, NBIOT, UTRAN) + */ + function f_Get_PacketFilter_10_9_1(out template (value) PacketFilter p_PacketFilterByRef, + out integer p_PacketFilterLengthByRef, + boolean p_IpTypeIsIPv4, + integer p_PacketFilterID) + { + var charstring v_IPv4RemoteAddress := "172.168.8.0"; // @sic R5s110776 sic@ + var O4_Type v_IPv4SubnetMask := 'FFFFFF00'O; + var charstring v_IPv6RemoteAddress := "2001:0ba0::"; // @sic R5s110776 sic@ + var O16_Type v_IPv6SubnetMask := 'FFFFFFFF000000000000000000000000'O; // @sic R5s110776 sic@ + + var integer v_FilterCount := 0; + var template (value) PacketFilter v_Filter; + + select (p_PacketFilterID) { // @sic R5-110779 sic@ + case (1) { + // UL only filter, ID=1 + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '1'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(6, 8); + v_Filter.contents[0] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_FilterCount := v_FilterCount + 2; + if (p_IpTypeIsIPv4) { + v_Filter.contents[1] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[1] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[2] := cs_PktFilterCompSingleLocalPort(60001); + v_FilterCount := v_FilterCount + 3; + v_Filter.contents[3] := cs_PktFilterCompRemotePortRange(60350, 60450); + v_FilterCount := v_FilterCount + 5; + v_Filter.contents[4] := cs_PktFilterCompTOSTrafficClass('A8FC'O); + v_FilterCount := v_FilterCount + 3; + } + case (2) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '2'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(7, 8); + v_Filter.contents[0] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_FilterCount := v_FilterCount + 2; + if (p_IpTypeIsIPv4) { + v_Filter.contents[1] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[1] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[2] := cs_PktFilterCompLocalPortRange(60000, 60100); + v_FilterCount := v_FilterCount + 5; + v_Filter.contents[3] := cs_PktFilterCompSingleRemotePort(60350); + v_FilterCount := v_FilterCount + 3; + v_Filter.contents[4] := cs_PktFilterCompTOSTrafficClass('A8FC'O); + v_FilterCount := v_FilterCount + 3; + } + case (3) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '3'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(5, 8); + v_Filter.contents[0] := cs_PktFilterCompProtocolIdNextHeaderIPSec; + v_FilterCount := v_FilterCount + 2; + if (p_IpTypeIsIPv4) { + v_Filter.contents[1] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[1] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[2] := cs_PktFilterCompIPSecSPI('0F80F000'O); // @sic R5s110778 sic@ + v_FilterCount := v_FilterCount + 5; + v_Filter.contents[3] := cs_PktFilterCompTOSTrafficClass('A0FC'O); + v_FilterCount := v_FilterCount + 3; + } + case (4) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '4'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(2, 8); + if (p_IpTypeIsIPv4) { + v_Filter.contents[0] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[0] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[1] := cs_PktFilterCompTOSTrafficClass('B0FC'O); + v_FilterCount := v_FilterCount + 3; + v_Filter.contents[2] := cs_PktFilterCompFlowLabel('000005'O); + v_FilterCount := v_FilterCount + 4; + } + case (5) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '5'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(255, 8); + if (p_IpTypeIsIPv4) { + v_Filter.contents[0] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[0] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + } + case else { + // out of supported range + FatalError(__FILE__, __LINE__, "unsupported packet filter id"); + } + } + v_Filter.iel := int2oct(v_FilterCount, 1); + + p_PacketFilterByRef := v_Filter; + p_PacketFilterLengthByRef := v_FilterCount + 3; + } + //---------------------------------------------------------------------------- + template (present) Extd_EPS_QOS cr_Extd_EPS_QOS_Any := + { /* @status APPROVED (ENDC, IMS, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, POS, UTRAN) */ + iei := '5C'O, + iel := ?, + unitMaxBitRate := ?, + maxBitRateUl_1 := ?, + maxBitRateUl_2 := ?, + maxBitRateDl_1 := ?, + maxBitRateDl_2 := ?, + unitGuaranteedBitRate := ?, + guaranteedBitRateUl_1 := ?, + guaranteedBitRateUl_2 := ?, + guaranteedBitRateDl_1 := ?, + guaranteedBitRateDl_2 := ? + }; + + const B1_Type tsc_NasKsi_NativeSecurityContext := '0'B; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + const B1_Type tsc_NasKsi_MappedSecurityContext := '1'B; /* @status APPROVED (LTE_A_IRAT, LTE_IRAT, NR5GC_IRAT) */ + + template (value) NAS_KeySetIdentifier cs_NAS_KeySetIdentifier_lv(NAS_KsiValue p_NasKeySetId, + B1_Type p_Tsc) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, + tsc := p_Tsc, + nasKeySetId := p_NasKeySetId + }; + + template (present) NAS_KeySetIdentifier cr_NAS_KeySetIdentifier(template (present) NAS_KsiValue p_KsiValue, + template (present) B1_Type p_Tsc) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, + tsc := p_Tsc, + nasKeySetId := p_KsiValue + }; + + template (present) NAS_KeySetIdentifier cdr_NAS_KeySetIdentifier_tlv(template (present) NAS_KsiValue p_KsiValue, + template (present) B1_Type p_Tsc) + modifies cr_NAS_KeySetIdentifier := + { /* @status APPROVED (LTE_A_IRAT, LTE_IRAT, NR5GC_IRAT) */ + iei := 'B'H + }; + + template (present) AuthenticationResponseParameter cr_AuthenticationResponseParameter_lv(template (present) B32_128_Type p_ExpectedRES) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := omit, + iel := ?, /* RES has length of 32..128 bits i.e. 4..16 octets */ + res := p_ExpectedRES + }; + + template (value) IMEISV_Request cs_IMEISV_Request_WithIEI(B3_Type p_Value) := + { /* @status APPROVED (IMS, LTE, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + iei := 'C'H, //@sic R5s090210 sic@ + spare := '0'B, + requestValue := p_Value + }; + + template (value) NAS_SecurityAlgorithms cs_NAS_SecurityAlgorithms(B3_Type p_CipheringType, + B3_Type p_IntegrityType, + template (omit) IEI8_Type p_IEI := omit) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, // @sic R5s190285 sic@ + spare1 := tsc_Spare1, + cipheringType := p_CipheringType, + spare2 := tsc_Spare1, + integrityType := p_IntegrityType + }; + + template (value) ExtdProtocolConfigOptions cs_ExtdPCO(Type6Length_Type p_Length, + template (omit) NAS_ExtdProtocolConfigOptions_Type p_ProtocolContainers) := + { /* 24.301 cl. 9.9.4.26 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + iei := '7B'O, + iel := p_Length, + ext := '1'B, + spare := tsc_Spare4, + configProtocol := tsc_Spare3, + pco := p_ProtocolContainers + }; + + template (present) DRXParamCommon cr_DRXParamCommonAny (IEI8_Type p_IEI):= + { /* 24.301 cl. 9.9.3.63 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := ?, + spare := tsc_Spare4, + drxValue := ? + }; + + template (present) WUSAssistInfo cr_WUSAssistInfoAny := + { /* 24.301 cl. 9.9.3.62 */ + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + iei := '35'O, + iel := ?, + infoType := ? + }; + + template (present) WusInfoType cr_WusInfoTypeAny := + { + wusType := ?, + pagingProbability := ?, + wusValue := ? + }; + + template (value) UERadioCapIdDeletion cs_UERadioCapIdDeletion(template (omit) IEI4_Type p_IEI:= 'A'H, B3_Type p_DeleteReq:='001'B):= + { /* 24.301 cl. 9.11.3.69 */ + /* @status APPROVED (NR5GC) */ + iei:=p_IEI, + spare:='0'B, + deleteReq:= p_DeleteReq + }; + + template (present) UE_RequestType cr_UE_RequestType (template (present) B4_Type p_ReqType := ?) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC_IRAT, POS) */ + /* 24.301 cl. 9.9.3.65 */ + iei := '29'O, + iel := '01'O, + spare := tsc_Spare4, + requestType := p_ReqType + }; + + + //---------------------------------------------------------------------------- + template (value) QosFlow_Identification_Type cs_IP_QosFlowId(integer p_PDU_SessionId, + integer p_QFI) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + PDU_SessionId := p_PDU_SessionId, + QFI := p_QFI + }; + + /* + * @desc To convert the maximum bit rate for the QoS + * @param p_Val + * @return integer + * @status APPROVED (ENDC, LTE, LTE_A_IRAT, LTE_A_R10_R11, LTE_IRAT, NBIOT, POS, SSNITZ, UTRAN) + */ + function f_QoS_MaximumBitRate(B8_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('00000001'B)) and (v_Val <= bit2int('00111111'B))) { + return v_Val; + } + if ((v_Val >= bit2int('01000000'B)) and (v_Val <= bit2int('01111111'B))) { + return (64 + ((v_Val - 64)*8)); + } + if ((v_Val >= bit2int('10000000'B)) and (v_Val <= bit2int('11111110'B))) { + return (576 + ((v_Val - 128)*64)); + } + if (v_Val == bit2int('11111111'B)) { + return 0; + } + return 0; + } + /* + * @desc To convert the transfer delay for the QoS + * @param p_Val + * @return integer + * @status APPROVED (LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_QoS_TransferDelay(B6_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('000001'B)) and (v_Val <= bit2int('001111'B))) { + return (v_Val*10); + } + if ((v_Val >= bit2int('010000'B)) and (v_Val <= bit2int('011111'B))) { + return (200 + ((v_Val - 16)*50)); + } + if ((v_Val >= bit2int('100000'B)) and (v_Val <= bit2int('111110'B))) { + return (1000 + ((v_Val - 32)*100)); + } + return 0; + } + + /* + * @desc To convert the SDU Error Ratio for the QoS + * @param p_Val + * @return charstring + * @status APPROVED (LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_QoS_SDUErrorRatio(B4_Type p_Val) return charstring + { + select (p_Val) { + case ('0001'B) { return ("1E2"); } + case ('0010'B) { return ("7E3"); } + case ('0011'B) { return ("1E3"); } + case ('0100'B) { return ("1E4"); } + case ('0101'B) { return ("1E5"); } + case ('0110'B) { return ("1E6"); } + case ('0111'B) { return ("1E1"); } + } + return ""; + } + + /* + * @desc To convert the Residual BER for the QoS + * @param p_Val + * @return charstring + * @status APPROVED (LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_QoS_ResidualBER(B4_Type p_Val) return charstring + { + select (p_Val) { + case ('0001'B) { return ("5E2"); } + case ('0010'B) { return ("1E2"); } + case ('0011'B) { return ("5E3"); } + case ('0100'B) { return ("4E3"); } + case ('0101'B) { return ("1E3"); } + case ('0110'B) { return ("1E4"); } + case ('0111'B) { return ("1E5"); } + case ('1000'B) { return ("1E6"); } + case ('1001'B) { return ("6E8"); } + } + return ""; + } + + /* + * @desc To convert the QualityOfService into a charstring for the UT command + * @param p_QoS + * @return charstring + * @status APPROVED (LTE_A_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_ConvertQoS_ForATCommand(template (value) QualityOfService p_QoS) return charstring + { + var QualityOfService v_QoS := valueof(p_QoS); // need to do this to then manipulate the string + var charstring v_QoSstring := ""; + var integer v_SSDesc := bit2int(v_QoS.sourceStatisticsDescriptor); + var integer v_TrafficClass := bit2int(v_QoS.trafficClass); + var integer v_DelOrder := bit2int(v_QoS.deliveryOrder); + var integer v_DeliveryErrorSDU := bit2int(v_QoS.deliveryErrorSDU); + + if (v_SSDesc > 1) { + v_SSDesc := 1; // Only allowed values are 0 or 1 + } + + v_TrafficClass := v_TrafficClass - 1; // in AT command value is one less than in PDP Context + if (v_TrafficClass < 0) { + v_TrafficClass := 0; + } + + select (v_DelOrder) { + case (1) { v_DelOrder := 1; } + case (2) { v_DelOrder := 0; } + case else { v_DelOrder := 2; } + } + + select (v_DeliveryErrorSDU) { + case (1) { v_DeliveryErrorSDU := 2; } + case (2) { v_DeliveryErrorSDU := 1; } + case (3) { v_DeliveryErrorSDU := 0; } + case else { v_DeliveryErrorSDU := 3; } + } + + v_QoSstring := v_QoSstring & int2str(v_TrafficClass); + v_QoSstring := v_QoSstring & "," & int2str(f_QoS_MaximumBitRate(v_QoS.maxBitRateUL)); + v_QoSstring := v_QoSstring & "," & int2str(f_QoS_MaximumBitRate(v_QoS.maxBitRateDL)); + v_QoSstring := v_QoSstring & "," & "," & "," & int2str(v_DelOrder); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.maxSduSize)*10); + v_QoSstring := v_QoSstring & ",""" & fl_QoS_SDUErrorRatio(v_QoS.sduErrorRatio)& """"; + v_QoSstring := v_QoSstring & ",""" & fl_QoS_ResidualBER(v_QoS.residualBER)& """"; + v_QoSstring := v_QoSstring & "," & int2str(v_DeliveryErrorSDU); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_TransferDelay(v_QoS.transferDelay)); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.trafficHandlingPrio)); + v_QoSstring := v_QoSstring & "," & int2str(v_SSDesc); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.signallingInd)); + return v_QoSstring; + } + + type enumerated BEARER_CONTEXT_TYPE { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + DEF_1, // EPS Default Bearer#1 defined in the first column of table 6.6.1 + DEF_2, // EPS Default Bearer#2 defined in the second column of table 6.6.1 + DEF_3, // EPS Default Bearer#3 defined in the third column of table 6.6.1 + DED_1, // EPS Dedicated Bearer#1 defined in the first column of table 6.6.2 + DED_2, // EPS Dedicated Bearer#2 defined in the second column of table 6.6.2 + DED_3, // EPS Dedicated Bearer#3 defined in the third column of table 6.6.2 + DED_4, // EPS Dedicated Bearer#4 defined in the fourth column of table 6.6.2 @sic R5-123632 sic@ + DED_5 // EPS Dedicated Bearer#5 defined in the fifth column of table 6.6.2 @sic R5-210201 sic@ + }; + + /* + * @desc return bearer context number: if p_BearerContextNumber is not present bearer context number acc. to UE capabilities + * @param p_BearerContextNumber + * @return BEARER_CONTEXT_TYPE + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) + */ + function fl_BearerContextNumber_Def(template (omit) BEARER_CONTEXT_TYPE p_BearerContextNumber) return BEARER_CONTEXT_TYPE + { + var BEARER_CONTEXT_TYPE v_BearerContextNumber; + + if (isvalue(p_BearerContextNumber)) { + v_BearerContextNumber := valueof(p_BearerContextNumber); + } else { + if (pc_IMS) { + v_BearerContextNumber := DEF_2; /* @sic R5s141367: DEF_2 instead of DEF_1 sic@ */ + } else { + v_BearerContextNumber := DEF_1; /* @sic R5s141367: DEF_1 instead of DEF_2 sic@ */ + } + } + return v_BearerContextNumber; + } + + template (value) EPS_QualityOfService cs_508_EPS_QoS_Default_1 := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, + iel := '09'O, + qci := '00001001'B, + maxBitRateUl := '01000000'B, //64 kbps + maxBitRateDl := '01000000'B, //64 kbps + guaranteedBitRateUl := '01000000'B, //64 kbps + guaranteedBitRateDl := '01000000'B, //64 kbps + maxBitRateUlExt := '00000000'B, + maxBitRateDlExt := '00000000'B, + guaranteedBitRateUlExt := '00000000'B, + guaranteedBitRateDlExt := '00000000'B, + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving, R5s180640 sic@ + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) EPS_QualityOfService cds_508_EPS_QoS_Default_1_tlv + modifies cs_508_EPS_QoS_Default_1 := + { /* according to table 6.6.2.1 in 36.508, including iei */ + /* @status APPROVED (LTE, NBIOT) */ + iei := '5B'O + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Def_nonGBR_QCI + modifies cs_508_EPS_QoS_Default_1 := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + qci := '00000101'B // non-GBR QCI + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Def_nonGBR_QCI_tlv + modifies cs_508_EPS_QoS_Default_1 := + { /* 10.7.2 specifies According to reference default Bearer context#2 except for GCI */ + iei := '5B'O, + qci := '00000101'B // non-GBR QCI + }; + + template (value) EPS_QualityOfService cds_508_EPS_QoS_Default_3 + modifies cs_508_EPS_QoS_Default_1 := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + qci := '01000101'B // 69 for MCPTT + }; + + + /* @desc Get the Default QoS according to 36.508 clause 4.7.3-6 + * @param p_BearerContextNumber + * @return template (value) EPS_QualityOfService + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_508_EPSQoS(template (omit) BEARER_CONTEXT_TYPE p_BearerContextNumber) return template (value) EPS_QualityOfService + { /* @sic R5-144797: parameter p_BearerContextNumber sic@ */ + var template (value) EPS_QualityOfService v_QoS; + var BEARER_CONTEXT_TYPE v_BearerContextNumber := fl_BearerContextNumber_Def(p_BearerContextNumber); + + select (v_BearerContextNumber){ /* @sic R5-144797: v_QoS does not depend on pc_IMS anymore sic@ */ + case (DEF_1) { + v_QoS := cs_508_EPS_QoS_Default_1; /* Qos acc. to 36.508 Table 6.6.1-1 column 1 */ + } + case (DEF_3) { /* @sic R5-210201, R5s211690 sic@ */ + v_QoS := cds_508_EPS_QoS_Default_3; /* Qos acc. to 36.508 Table 6.6.1-1 column 3 */ + } + case else { + v_QoS := cds_EPS_QoS_Def_nonGBR_QCI; /* Qos acc. to 36.508 Table 6.6.1-1 column 2 */ + } + } + return v_QoS; + } + + template (value) UERadioCapId cs_UERadioCapId (IEI8_Type p_IEI, octetstring p_Id) := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + iei := p_IEI, + iel := int2oct(lengthof(p_Id), 1), + id := p_Id + }; + + //============================================================================ + // Packet filters + //---------------------------------------------------------------------------- + + /* + * @desc local function to calculate single remote port acc. to reference packet filters in 36.508 + * @param p_PortNumber + * @param p_EPS_BearerId + * @return UInt16_Type + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) + */ + function fl_SingleRemoteport508(UInt16_Type p_PortNumber, + HalfOctet_Type p_EPS_BearerId) return UInt16_Type + { + return (p_PortNumber + hex2int(p_EPS_BearerId) - 6); + } + + template (value) PacketFilterComponent cs_PktFilterCompSingleRemotePort61000(HalfOctet_Type p_EPS_BearerId) := + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + cs_PktFilterCompSingleRemotePort(fl_SingleRemoteport508(61000, p_EPS_BearerId)); + + template (value) PacketFilterComponent cs_PktFilterCompSingleRemotePort31160(HalfOctet_Type p_EPS_BearerId) := + /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) */ + cs_PktFilterCompSingleRemotePort(fl_SingleRemoteport508(31160, p_EPS_BearerId)); + + /* + * @desc Get the Dedicated TFT according to 36.508 clause 6.6.2 + * @param p_PacketFilterByRef (by reference) + * @param p_PacketFilterLengthByRef (by reference) + * @param p_PacketFilterNumber ... is the reference packet filter in Table 6.6.2-x + * @param p_EPS_BearerId + * @param p_PdnTypeValue + * @param p_PdnIndex + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) + */ + function fl_Get_508_PacketFilter(out template (value) PacketFilter p_PacketFilterByRef, + out integer p_PacketFilterLengthByRef, + integer p_PacketFilterNumber, + HalfOctet_Type p_EPS_BearerId, + B3_Type p_PdnTypeValue, + PDN_Index_Type p_PdnIndex) + { /* @sic R5-112600 new parameter p_PdnTypeValue to determine whether IPv4 or IPv6 address to be used sic@ */ + /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo; new parameter p_PdnIndex sic@ */ + var integer v_ContentsLength := 0; + var template (value) PacketFilter v_Filter; + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + var charstring v_NetworkIpAddrv4 := v_PDN_AddressInfo.PCSCF_IPAddressIPv4; + var charstring v_NetworkIpAddrv6 := v_PDN_AddressInfo.PCSCF_IPAddressIPv6; + var template (value) PacketFilterComponent v_PacketFilterProtocolId; + var integer v_PortNumber; // kept for readability + + if ((p_PacketFilterNumber != 4) and (p_PacketFilterNumber != 5) and (p_PacketFilterNumber != 10)) { // @sic R5-132085 sic@ in case (4, 5) no addresses used @sic R5s130495, R5s211690 sic@ + if (p_PdnTypeValue == tsc_PdnType_IPv4) { // IPv4 only; @sic R5s110168 change 8.3; R5-112600 sic@ + v_Filter.contents[0] := cs_PktFilterCompIPv4RemoteAddress(v_NetworkIpAddrv4); + v_ContentsLength := v_ContentsLength + 9; + } + else { // IPv4v6 or IPv6 only + v_Filter.contents[0] := cs_PktFilterCompIPv6RemoteAddress(v_NetworkIpAddrv6); + v_ContentsLength := v_ContentsLength + 33; + } + } + + select (p_PacketFilterNumber){ + case (1, 6) { // @sic R5-183239 sic@ + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '01'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '0'H; // @sic R5s130195 Baseline Moving sic@ + if (hex2int(p_EPS_BearerId) > 5) { + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); // @sic R5-174469 sic@ + } else { + v_Filter.precedence := int2bit(0, 8); + } + if (p_PacketFilterNumber == 6) { // @sic R5-183239, R5-193982 sic@ + if (p_PdnTypeValue == tsc_PdnType_IPv4) { // IPv4 only + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderICMP; + } else { + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderICMPv6; + } + } else { + v_Filter.contents[1] := cs_PktFilterCompSingleRemotePort31160(p_EPS_BearerId); + v_ContentsLength := v_ContentsLength + 3; + v_Filter.contents[2] := cs_PktFilterCompProtocolIdNextHeaderUDP; + } + v_ContentsLength := v_ContentsLength + 2; + } + case (2, 7) { // @sic R5-183239 sic@ + // Update to values in Reference packet filter #2 + // UL only filter, ID=1 @sic R5-104702 sic@ + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '1'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6+8), 8); // @sic R5-104702 sic@ + + if (p_PacketFilterNumber == 7) {// @sic R5-183239, R5-193982 sic@ + if (p_PdnTypeValue == tsc_PdnType_IPv4) { // IPv4 only + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderICMP; + } else { + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderICMPv6; + } + } else { + v_Filter.contents[1] := cs_PktFilterCompSingleRemotePort61000(p_EPS_BearerId); + v_ContentsLength := v_ContentsLength + 3; + v_Filter.contents[2] := cs_PktFilterCompProtocolIdNextHeaderUDP; + } + v_ContentsLength := v_ContentsLength + 2; + } + case (3){ + // Update to values in Reference packet filter #3 + // Bidirectional filter, ID=2 @sic R5-104702 sic@ + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '11'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '2'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := '00001111'B; + } + case (4){ // @sic R5-132085 sic@ + // Update to values in Reference packet filter #4 + // Bidirectional filter, ID=3 + v_Filter.spare := '00'B; + v_Filter.direction := '11'B; + v_Filter.iei := '3'H; + if (hex2int(p_EPS_BearerId)>5) + { + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); // @sic R5-174469 sic@ + } else { + v_Filter.precedence := int2bit(0, 8); + } + v_Filter.contents[0] := cs_PktFilterCompRemotePortRange(tsc_IMS_MediaPort_M1, tsc_IMS_MediaPort_M1+1); // @sic R5s130495 sic@ + v_ContentsLength := v_ContentsLength + 5; + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + case (5){ // @sic R5-132085 sic@ + // Update to values in Reference packet filter #5 + // Bidirectional filter, ID=3 + v_Filter.spare := '00'B; + v_Filter.direction := '11'B; + v_Filter.iei := '4'H; + if (hex2int(p_EPS_BearerId)>5) + { + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); // @sic R5-174469 sic@ + } else { + v_Filter.precedence := int2bit(0, 8); + } + v_Filter.contents[0] := cs_PktFilterCompRemotePortRange(tsc_IMS_MediaPort_M2, tsc_IMS_MediaPort_M2+1); // @sic R5s130495 sic@ + v_ContentsLength := v_ContentsLength + 5; + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + case (8) { // @sic R5-187765 sic@ + // Update to values in Reference packet filter #8 + // UL only filter, ID=1 + v_Filter.spare := '00'B; + v_Filter.direction := '10'B; + v_Filter.iei := '1'H; + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6+8), 8); + } + case (9) { // @sic R5-187765 sic@ + // Update to values in Reference packet filter #9 + // Bidirectional filter, ID=5 + v_Filter.spare := '00'B; + v_Filter.direction := '11'B; + v_Filter.iei := '5'H; + if (hex2int(p_EPS_BearerId)>5) + { + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); + } else { + v_Filter.precedence := int2bit(0, 8); + } + v_Filter.contents[0] := cs_PktFilterCompRemotePortRange(tsc_IMS_MediaPort_M2, tsc_IMS_MediaPort_M2+1); + v_ContentsLength := v_ContentsLength + 5; + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + case (10, 11) { // @sic R5-210201, R5s211690, R5-222015 sic@ + // Update to values in Reference packet filter #10 + // Bidirectional filter, ID=4 + v_Filter.spare := '00'B; + v_Filter.direction := '11'B; // Bidirectional + v_Filter.iei := '4'H; // ID=4 + if (hex2int(p_EPS_BearerId)>5) + { + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); + } else { + v_Filter.precedence := int2bit(0, 8); + } + if (p_PacketFilterNumber == 10) { + v_PortNumber := tsc_IMS_MediaPort_M3; // same portnumber as tsc_MCX_MediaControlPortNW + v_PacketFilterProtocolId := cs_PktFilterCompProtocolIdNextHeaderUDP; + } else { // @sic R5-222015: Table 6.6.2-12: Reference packet filter #11 for TCP sic@ + v_PortNumber := tsc_IMS_MediaPort_M1; // same portnumber as tsc_MCData_MediaPort_MSRP + v_PacketFilterProtocolId := cs_PktFilterCompProtocolIdNextHeaderTCP; + } + v_Filter.contents[0] := cs_PktFilterCompSingleRemotePort(tsc_IMS_MediaPort_M3); + v_ContentsLength := v_ContentsLength + 3; + v_Filter.contents[1] := v_PacketFilterProtocolId; + v_ContentsLength := v_ContentsLength + 2; + } + } + v_Filter.iel := int2oct(v_ContentsLength, 1); + + p_PacketFilterByRef := v_Filter; + p_PacketFilterLengthByRef := v_ContentsLength + 3; // length of the filter contents + 3 octets for iei, precedence and iel + } + + //---------------------------------------------------------------------------- + /* + * @desc Create TFT acc. to 36.508 Table 6.6.2-1 + * @param p_BearerContext .. Reference dedicated EPS bearer context #1, #2 + * @param p_EPS_BearerId + * @param p_PdnTypeValue + * @param p_PdnIndex + * @return template (value) TrafficFlowTemplate + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, NBIOT, NR5GC, NR5GC_IRAT) + */ + function f_EUTRA_NB_Get_508_TrafficFlowTemplate(integer p_BearerContext, + HalfOctet_Type p_EPS_BearerId, + B3_Type p_PdnTypeValue, + PDN_Index_Type p_PdnIndex := PDN_1) return template (value) TrafficFlowTemplate + { /* @sic R5-112600: to replace cs_508_Tft_Dedicated_1 and cs_508_Tft_Dedicated_2 sic@ */ + var integer v_PacketFilterLen1ByRef; + var integer v_PacketFilterLen2ByRef; + var integer v_PacketFilterLen3ByRef; + var template (value) PacketFilter v_PacketFilter1ByRef; + var template (value) PacketFilter v_PacketFilter2ByRef; + var template (value) PacketFilter v_PacketFilter3ByRef; + var template (value) TrafficFlowTemplate.packetFilterList v_PacketFilterList; + var integer v_IeLength; + + select (p_BearerContext) { + case (1) { // @sic R5-123632 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 1, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #1 acc. to 36.508 Table 6.6.2-2 @sic R5s130495 sic@ + fl_Get_508_PacketFilter(v_PacketFilter2ByRef, v_PacketFilterLen2ByRef, 2, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #2 acc. to 36.508 Table 6.6.2-3 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + v_PacketFilterLen2ByRef + 1; // packet filter 1 + packet filter 2 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef, v_PacketFilter2ByRef}; + } + case (2) { // @sic R5-123632, R5-132085 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 3, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #3 acc. to 36.508 Table 6.6.2-4 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (3) { // @sic R5-132085 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 5, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #3 acc. to 36.508 Table 6.6.2-4 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (4) { // @sic R5-132085 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 4, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #4 acc. to 36.508 Table 6.6.2-4 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (5) { // @sic R5-210201, R5s211690 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 4, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #4 acc. to 36.508 Table 6.6.2-1 + fl_Get_508_PacketFilter(v_PacketFilter2ByRef, v_PacketFilterLen2ByRef, 10, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #10 acc. to 36.508 Table 6.6.2-1 + + v_IeLength := v_PacketFilterLen1ByRef + v_PacketFilterLen2ByRef + 1; // packet filter 1 + packet filter 2 + one octet for tftOperationCode, eBit and noOfPktFilter @sic R5s180640 sic@ + v_PacketFilterList := {v_PacketFilter1ByRef, v_PacketFilter2ByRef}; + } + case (6) { // @sic R5-183239 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 6, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #6 acc. to 36.508 Table 6.6.2-1A + fl_Get_508_PacketFilter(v_PacketFilter2ByRef, v_PacketFilterLen2ByRef, 7, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #7 acc. to 36.508 Table 6.6.2-1A + + v_IeLength := v_PacketFilterLen1ByRef + v_PacketFilterLen2ByRef + 1; // packet filter 1 + packet filter 2 + one octet for tftOperationCode, eBit and noOfPktFilter @sic R5s180640 sic@ + v_PacketFilterList := {v_PacketFilter1ByRef, v_PacketFilter2ByRef}; // @sic R5s180640 sic@ + } + case (7) { // @sic R5-187765 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 8, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #8 acc. to 36.508 Table 6.6.2-1A + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (8) { // @sic R5-187765 sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 9, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #9 acc. to 36.508 Table 6.6.2-1A + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (9) { // @sic R5-222015: MCData sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 11, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #11 acc. to 36.508 Table 6.6.2-1A + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (10) { // @sic R5-222015: MCVideo sic@ + fl_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 4, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #4 acc. to 36.508 Table 6.6.2-1A + fl_Get_508_PacketFilter(v_PacketFilter2ByRef, v_PacketFilterLen2ByRef, 5, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #5 acc. to 36.508 Table 6.6.2-1A + fl_Get_508_PacketFilter(v_PacketFilter3ByRef, v_PacketFilterLen3ByRef, 10, p_EPS_BearerId, p_PdnTypeValue, p_PdnIndex); // get packet filter #10 acc. to 36.508 Table 6.6.2-1A + + v_IeLength := v_PacketFilterLen1ByRef + v_PacketFilterLen2ByRef + v_PacketFilterLen3ByRef + 1; // packet filter 1 + packet filter 2 + packet filter 3 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef, v_PacketFilter2ByRef, v_PacketFilter3ByRef}; + } + case else { + FatalError(__FILE__, __LINE__, "invalid bearer context"); + } + } + return cs_TrafficFlowTemplate(v_IeLength, v_PacketFilterList); + } + +} diff --git a/ttcn/Lib3GPP/NAS/NAS_CommonTypeDefs.ttcn b/ttcn/Lib3GPP/NAS/NAS_CommonTypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..f0d43bf6a522c92acea9327c6bc3a576c5b1d079 --- /dev/null +++ b/ttcn/Lib3GPP/NAS/NAS_CommonTypeDefs.ttcn @@ -0,0 +1,1248 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-11-29 17:53:31 +0100 (Tue, 29 Nov 2022) $ +// $Rev: 34751 $ +/******************************************************************************/ + +module NAS_CommonTypeDefs { + /* Module containing type definitions for EPS, UTRAN and/or GERAN */ + + import from CommonDefs all; + + //**************************************************************************** + // Common Type definitions: + //---------------------------------------------------------------------------- + + //**************************************************************************** + //**************************************************************************** + + type HalfOctet_Type IEI4_Type; /* 4 bit info element identifier for type 1 IEs */ + type Octet_Type IEI8_Type; /* 8 bit info element identifier */ + + type O1_Type Type4Length_Type; + type O2_Type Type6Length_Type; + + type HalfOctet_Type SpareHalfOctet; + + type hexstring NAS_Mcc length(3); //* @desc Type which can be used to represent an MCC (as string of 3 decimal digits). + + type record of hexstring EmergencyNumList; + + type enumerated PDU_PDN_DNN_Type {V2X_DNN, MIOT_DNN, URLLC_DNN, IMS_DNN, Internet_DNN, Emergency_PDN, Ethernet_DNN, None}; /* @status APPROVED (NR5GC) @sic R5-204399, R5-221467 sic@ */ + type enumerated APN_DefaultConfiguration_Type {None, internet, ims, urllc, miot, v2x, ethernet}; // @sic R5-221467, R5-227472 sic@ + type enumerated InterworkWithoutN26 {NOT_SUPPORTED, /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + SUPPORTED} + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: IEs + //---------------------------------------------------------------------------- + // General Info Elements (24.301 cl. 9) + //---------------------------------------------------------------------------- + + type B4_Type SecurityHeaderType; /* 24.301 cl. 9.3.1 */ + type B4_Type ProtocolDiscriminator; /* 24.301 cl. 9.2 and 24.007 cl. 11.2.3.1.1 */ + type Octet_Type ProcedureTransactionIdentifier; /* 24.301 cl. 9.4 */ + type B4_Type SkipIndicator; /* 24.007 cl. 11.2.3.1.2 */ + type B8_Type MessageType; /* 24.301 cl. 9.8 */ + type Octet_Type NAS_SequenceNumber; /* 24.301 cl. 9.6 */ + + type B3_Type NAS_AttDetValue_Type; + type B3_Type KeySeq; /* ciphering key sequence + 3G TS 24008 cl. 10.5.1.2 */ + type B3_Type NAS_KsiValue; + type O3_Type NAS_PlmnId; + + type O4_Type NAS_Tmsi; + type O4_Type NAS_P_Tmsi; + + type O2_Type NAS_Lac; + type O1_Type NAS_Rac; + + type B3_Type PdnTypeValue; + + type bitstring BcdDigit_Bit length(4); + + type B3_Type NAS_IdType; + type B8_Type NAS_CauseValue_Type; + + type B1_Type TmsiStatusValue; + + type enumerated PS_MODE {VOICE_CENTRIC, DATA_CENTRIC}; /* @status @sic R5s120274 sic@ */ + type enumerated CS_PS_MODE {VOICE_CENTRIC, DATA_CENTRIC}; /* @status APPROVED */ + // This is here because it's the best place for it + const NAS_Lac tsc_LAC_Def := '0001'O ; /* Default NAS LAC, the value may need to be updated in CS combined/CS fallback test cases + @status APPROVED + @sic R5s090180 sic@ */ + const NAS_Lac tsc_LAC_Deleted := 'FFFE'O; /* @status APPROVED (UTRAN) */ + + //----------------------------------------------------------------------------- + // Defined in 24.008, but also referenced from 24.301 + //----------------------------------------------------------------------------- + + // ============================================================================= + // Structured Type Definition + // 3G TS 24.008, section 10.5.6.1 + // ----------------------------------------------------------------------------- + type record AccessPointName { /* 24.301 cl. 9.9.4.1 -> 24.008 cl. 10.5.6.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring nameValue length(1..100) + }; + + type record AdditionalUpdateType { /* 24.301 cl. 9.9.3.0B @sic R5s100135 sic@ */ + IEI4_Type iei, // currently only used as TV + B2_Type pnb_CIOT, // 0=no additional info, 1=CP, 2=UP, 3=reserved @sic R5s160711 Baseline Moving sic@ + B1_Type signallingActiveFlag, // @sic R5s160711 Baseline Moving sic@ + B1_Type addUpdateTypeValue + }; + + // ============================================================================= + // Structured Type Definition + // Ciphering Key Sequence Number + // 3G TS 24.008 cl. 10.5.1.2 + // ----------------------------------------------------------------------------- + type record CiphKeySeqNum { + IEI4_Type iei optional, // '1000'B + B1_Type spare1, + KeySeq keySeq + }; + + // ============================================================================= + // Structured Type Definition + // Priority Level + // 3G TS 24.008 cl. 10.5.6.19 / 24.301 9.9.4.2A + // ----------------------------------------------------------------------------- + type record ConnectivityType { + IEI4_Type iei, + B4_Type connectivityValue + }; + + // ============================================================================= + // Structured Type Definition + // 3G TS 24.008, section 10.5.5.5/ 24.301 cl. 9.9.3.7 + // ----------------------------------------------------------------------------- + type record DetachType { + // IEI is always skipped + B1_Type switchOff, + NAS_AttDetValue_Type typeOfDetach + }; + + // ============================================================================= + // Structured Type Definition + // Device Properties + // 3G TS 24.008 cl. 10.5.7.8 + // ----------------------------------------------------------------------------- + type record DeviceProperties { + IEI4_Type iei, + B3_Type spare, + B1_Type lowPriority + }; + + // ============================================================================= + // Structured Type Definition + // DRX paramter + // 3GPP 24.008 / 10.5.5.6 + // ----------------------------------------------------------------------------- + type record DRXparameter { + IEI8_Type iei optional, // '00100111'B (hex 27) + B8_Type splitPGcycleCode, // Split PG cycle code + B4_Type cnDRXcoef, // CN specific DRX cycle length coefficient + B1_Type splitOnCCCH, // Split on CCCCH + B3_Type nonDRXtimer // non-DRX timer + }; + + // ============================================================================= + // Structured Type Definition + // Emergency Service Category + // 3GPP 24.008 / 10.5.4.33 + // ----------------------------------------------------------------------------- + type record EmergServCat { + B1_Type spare, + B7_Type emergSCValue // Emergency Service Category value + }; + + // ============================================================================= + // Structured Type Definition + // Emergency Number + // 3G TS 24.008 cl. 10.5.3.13 + // ----------------------------------------------------------------------------- + type record EmergNum { + Type4Length_Type len, // length + EmergServCat emergServCat, // Emergency Service Category + octetstring digits length(0..10) // BCD numbers + }; + + // ============================================================================= + // Structured Type Definition + // Emergency Number List + // 3G TS 24.008 cl. 10.5.3.13 + // ----------------------------------------------------------------------------- + type record EmergNumList { + IEI8_Type iei, // '00110100'B (34 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + record length (1..10) of EmergNum emergNum // Emergency Number + }; + + // ============================================================================= + // Structured Type Definition + // GPRS timer + // 3GPP 24.008 / 10.5.7.3 + // ----------------------------------------------------------------------------- + type record GPRS_Timer { /* 24.301 cl. 9.9.3.14 -> 24.008 cl. 10.5.7.3 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + GprsTimerUnit unit, + B5_Type timerValue + }; + + type B3_Type GprsTimerUnit; + + // ============================================================================= + // Structured Type Definition + // GPRS timer 2 or GPRS timer 3 (definition is identical) + // 3GPP 24.008 / 10.5.7.4(a) + // ----------------------------------------------------------------------------- + type record GPRS_Timer2 { + IEI8_Type iei, // @sic R5s110420, R5s160712 Baseline Moving sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + GprsTimerUnit unit, // Unit + B5_Type gprsTimerValue // Timer value + }; + + type GPRS_Timer2 GPRS_Timer3; // definition is identical @sic R5s150329 Baseline Moving sic@ + + // ============================================================================= + // Structured Type Definition + // IMEISV Request + // 3GPP 24.008 / 10.5.5.10 + // ----------------------------------------------------------------------------- + type record IMEISV_Request { /* 24.301 cl. 9.9.3.16 -> 24.008 cl. 10.5.5.10 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare, + B3_Type requestValue + }; + + // ============================================================================= + // Structured Type Definition + // Location Area Identification Value + // 3G TS 24.008 cl. 10.5.1.3 + // ----------------------------------------------------------------------------- + type record LocAreaId { + IEI8_Type iei optional, + NAS_PlmnId plmn, // MCC + MNC 3 digits each + NAS_Lac lac // LAC + }; + + // ============================================================================= + // Structured Type Definition + // RoutingAreaId + // 3GPP 24.008 / 10.5.5.15 + // ----------------------------------------------------------------------------- + type record RoutingAreaId { /* 24.301 cl. 9.9.3.24 -> 24.008 cl. 10.5.5.15 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + LocAreaId lai, /* MCC + MNC + LAC */ + O1_Type rac /* RAC */ + }; + + // ============================================================================= + // Structured Type Definition + // 24.007, clause 10.5.6.9 + // ----------------------------------------------------------------------------- + type record LLC_SAPI { /* 24.301 cl. 9.9.4.4 -> 24.008 cl. 10.5.6.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, + B4_Type llcSapiValue + }; + + // ============================================================================= + // Structured Type Definition + // Mobile Identity + // 3G TS 24.008 cl. 10.5.1.4 + // Maximum number of digits is 16 (IMEISV). Filler may be used. + // ----------------------------------------------------------------------------- + type record MobileIdentity { + IEI8_Type iei optional, // '00100011'B + Type4Length_Type iel, + BcdDigit_Bit idDigit1, // 1st identitity digit + B1_Type oddEvenInd, // Odd/even indicator + NAS_IdType typeOfId, // Type of identity + octetstring otherDigits length(0..10) // Other identity digits (10 octets rather than 8 to cover Guti as well) + }; + + // ============================================================================= + // Structured Type Definition + // Mobile Station Classmark 2 + // 3G TS 24.008 cl. 10.5.1.6 + // ----------------------------------------------------------------------------- + type record MS_Clsmk2 { + IEI8_Type iei optional, + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type spare1_1, // Spare bit + B2_Type revLvl, // Revision Level + B1_Type eSIND, // Early Sending Indication + B1_Type a5_1, // Algorithm A5/1 Support + B3_Type rFPwrCap, // RF Power Capability + B1_Type spare1_2, // Spare bit + B1_Type pSCap, // Pseudo Synchronisation Capability + B2_Type sSSI, // SS Screen Indicator + B1_Type sMCap, // Short Message Capability + B1_Type vBS, // VBS Capability + B1_Type vGCS, // VGCS Capability + B1_Type fC, // Frequency Capability + B1_Type cM3, // Classmark 3 Indicator + B1_Type spare1_3, // Spare bit + B1_Type lCSVA, // LCS VA Capability + B1_Type uCS2, // UCS2 Encoding Support + B1_Type soLSA, // SoLSA Support + B1_Type cMSP, // CM Service Prompt Support + B1_Type a5_3, // Algorithm A5/3 Support + B1_Type a5_2 // Algorithm A5/2 Support + }; + + // ============================================================================= + // Structured Type Definition + // Mobile station classmark 3 + // 3GPP TS 24.008 clause 10.5.1.7 + // The information element has 34 octets maximum length + // ----------------------------------------------------------------------------- + type record MS_Clsmk3 { + IEI8_Type iei optional, // 0x20 + Type4Length_Type iel optional, // OCTETSTRING [1] + B1_Type spareBit, // spare bit @sic R5s120178 Baseline Moving sic@ + B3_Type multibandSupported, // @sic R5s120178 Baseline Moving sic@ + B1_Type a5_7, // a5/7 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_6, // a5/6 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_5, // a5/5 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_4, // a5/4 algorithm supported @sic R5s120178 Baseline Moving sic@ + B4_Type associatedRadioCapabilty2 optional, // present if multibandSupported = 101 or 110 + B4_Type spareBits1 optional, // present if multibandSupported = 001 or 010 or 100 + B4_Type associatedRadioCapabilty1 optional, // present if multibandSupported = 001 or 010 or 100 or 101 or 110 + B1_Type maskBit1 optional, + B3_Type rGSM_RadioCapability optional, // R-GSM band associated radio capability not present if maskBit1 = 0 + B1_Type maskBit2 optional, + B5_Type multiSlotClass optional, // multi slot class not present if multiSlotClass = 0 + B1_Type uCS2Treatment optional, + B1_Type extMeasurementCapability optional, // extended measurement capability + B1_Type maskBit3 optional, + MS_MeasCapability msMeasurementCapability optional, // MS measurement capability + // not present if maskBit3 = 0 + B1_Type maskBit4 optional, + B5_Type msPositioningMethod optional, // MS positioning method capability + // not present if maskBit4 = 0 + B1_Type maskBit5 optional, + B5_Type eDGE_MultiSlot optional, // EDGE multi slot capability + // not present if maskB5_Type = 0 + B1_Type maskBit6 optional, + EDGE_Struct psk8_Struct optional, // 8PSK struct + // not present if maskB6_Type = 0 + B1_Type maskBit7 optional, + B2_Type gSM400BandsSupported optional, // not present if maskBIt7 = 0 + B4_Type gSM400AssociatedRadioCapability optional, // not present if gSM400BandsSupported = 00 or maskB7_Type = 0 + B1_Type maskBit8 optional, + B4_Type gSM850AssociatedRadiioCapability optional, // not present if maskBIt8 = 0 + B1_Type maskBit9 optional, + B4_Type pCS1900AssociatedRadiioCapability optional, // not present if maskBIt9 = 0 + B1_Type uMTS_FDD_RAT_Capability optional, + B1_Type uMTS384TDD_RAT_Capability optional, + B1_Type cDMA2000_RAT_Capability optional, + B1_Type maskBit10 optional, + B2_Type dTM_GPRS_MultiSlotSubclass optional, // not present if maskBit10 = 0 + B1_Type singleSlotDTM optional, // not present if maskBit10 = 0 + B1_Type maskBit11 optional, // not present if maskBit10 = 0 + B2_Type dTM_EGPRS_MultiSlorSubclass optional, // not present if maskBit10 = 0 or maskBit11 = 0 + B1_Type maskBit12 optional, + B4_Type singleBandSupport optional, // not present if maskBit12 = 0 + B1_Type maskBit13 optional, + B4_Type gSM700AssociatedRadioCapability optional, // not present if maskBit13 = 0 + B1_Type uMTS128TDD_RAT_Capability optional, + B1_Type gERANFeatPack1 optional, + B1_Type mask14 optional, + B2_Type extDTM_GPRS_MultiSlotSubclass optional, // not present if maskBit14 = 0 + B2_Type etxDTM_EGPRS_MultiSlotSubclass optional, // not present if maskBit14 = 0 + B1_Type mask15 optional, + B2_Type highMultislotCap optional, // not present if mask15 = 0 + B1_Type spare2 optional, // value '1' indicated GERAN Iu Mode Capabilities in earlier versions @sic R5s150329 Baseline Moving sic@ + B1_Type gERANFeatPack2 optional, + B2_Type gMSKMultislotPowerProfile optional, + B2_Type pSKMultislotPowerProfile optional, + B1_Type mask17 optional, // rel 6 features + B2_Type tGSM400BandsSupported optional, // not present if maskBit17 = 0 + B4_Type tGSM400AssocRadioCap optional, // not present if maskBit17 = 0 + B1_Type spare optional, // Set to 0 @sic R5s110176 Baseline Moving sic@ + B2_Type dlAdvancedRxPerf optional, + B1_Type dTMEhancCap optional, + B1_Type mask19 optional, + B3_Type dTMGPRSHighMultislotClass optional, // not present if maskBit19 = 0 + B1_Type offsetReq optional, // not present if maskBit19 = 0 + B1_Type mask20 optional, // not present if maskBit19 = 0 + B3_Type dTMEGPRSHighMultislotClass optional, // not present if maskBit19 and maskBit20 = 0 + B1_Type rptdACCHCap optional, + B1_Type mask21 optional, + B4_Type gsm710AssocRadioCap optional, // not present if maskBit21 = 0 + B1_Type mask22 optional, + B4_Type tgsm810AssocRadioCap optional, // not present if maskBit22 = 0 + B1_Type cipheringModeSettingCap optional, + B1_Type addPositionCap optional, + B1_Type eutraFDDSupport optional, // rel 8 features + B1_Type eutraTDDSupport optional, + B1_Type eutraMeasAndReporting optional, // @sic R5s100135 sic@ + B1_Type priorityBasedReselection optional, // @sic R5s110176 Baseline Moving sic@ + B1_Type utraCSGCellsReporting optional, // @sic R5s110176 Baseline Moving sic@ + B2_Type vamosLevel optional, // @sic R5s110176 Baseline Moving sic@ + B2_Type tighterCap optional, // @sic R5s120178 Baseline Moving sic@ + B1_Type selectCipheringDLSACCH optional, // @sic R5s120178 Baseline Moving sic@ + B2_Type csPS_SRVCC_G2U optional, // @sic R5s130195 Baseline Moving sic@ + B2_Type csPS_SRVCC_G2E optional, // @sic R5s130195 Baseline Moving sic@ + B1_Type geranNwkSharing optional, // @sic R5s150329 Baseline Moving sic@ + B1_Type eutraWidebandRSRQMeas optional, // @sic R5s150329 Baseline Moving sic@ + B1_Type erBandSupport optional, // @sic R5s150329 Baseline Moving sic@ + B1_Type utraMultipleFreqBandInd optional, // @sic R5s150329 Baseline Moving sic@ + B1_Type eutraMultipleFreqBandInd optional, // @sic R5s150329 Baseline Moving sic@ + B1_Type xtdTSCSetCap optional, // @sic R5s150329 Baseline Moving sic@ + B1_Type xtdEARFCNValueRange optional, // @sic R5s160712 Baseline Moving sic@ + bitstring spareBits2 optional + }; + + // ============================================================================= + // Structured Type Definition + // Reference : 3GPP TS 24.008 clause 10.5.1.7 + // ----------------------------------------------------------------------------- + type record EDGE_Struct { + B1_Type modulationCapability, + B1_Type pwrMask1, + B2_Type eDGE_RF_PowerCapability1 optional, // not present if pwrMask1 = 0 + B1_Type pwrMask2, + B2_Type eDGE_RF_PowerCapability2 optional // not present if pwrMask2 = 0 + }; + + // ============================================================================= + // Structured Type Definition + // Reference : 3GPP TS 24.008 clause 10.5.1.7 + // ----------------------------------------------------------------------------- + type record MS_MeasCapability { + B4_Type sMS_VALUE, + B4_Type sM_VALUE + }; + + // ============================================================================= + // Structured Type Definition + // MS network capability + // 3GPP 24.008 / 10.5.5.12 + // ----------------------------------------------------------------------------- + type record MS_NetworkCap { /* 24.301 cl. 9.9.3.18 -> 24.008 cl. 10.5.5.12 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type gea1, + B1_Type smCapDedicated, + B1_Type smCapGPRS, + B1_Type ucs2, + B2_Type ssScreeningIndicator, + B1_Type soLSACap, + B1_Type revLevelIndicator, + B1_Type pfcFeatureMode, + B1_Type gea2, + B1_Type gea3, + B1_Type gea4, + B1_Type gea5, + B1_Type gea6, + B1_Type gea7, + B1_Type lcsVACap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type psHOtoUTRAN_IuModeCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type psHOtoEUTRAN_S1ModeCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type emmCombinedCap optional, // @sic R5s110176 Baseline Moving, R5s130477 not present for r99 sic@ + B1_Type isrSupport optional, // @sic R5s130477 not present for r99 sic@ + B1_Type srvccToGERAN_UTRANCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type epcCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type nfCap optional, // @sic R5s110176 Baseline Moving, not present for Rel-8 R5s110242 sic@ + B1_Type gERANNtwkShareCap optional, // @sic R5s130195 Baseline Moving, not present for Rel-8 sic@ + B1_Type userPlaneIntegrityProtSupport optional, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + B1_Type gia4 optional, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + B1_Type gia5 optional, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + B1_Type gia6 optional, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + B1_Type gia7 optional, // @sic R5s160712 Baseline Moving, not present for Rel-12 sic@ + B1_Type ePCOInd optional, // @sic R5s170598 Baseline Moving sic@ + B1_Type restrictEnhancedCoverageCap optional, // @sic R5s170598 Baseline Moving sic@ + B1_Type dualConnectivityEUTRA_NR optional, // @sic R5s180553 Baseline Moving sic@ + bitstring spareBits length (0..43) optional + }; + +// ============================================================================= +// Structured Type Definition +// Non-3GPP NW provided Policies +// 3G TS 24.008 cl. 10.5.5.37 / 24.301 cl. 9.9.3.49 +// ----------------------------------------------------------------------------- +type record Non3GPP_NW_ProvidedPolicies { + IEI4_Type iei, + B3_Type spareBits, + B1_Type n3ENInd +}; + + // ============================================================================= + // Structured Type Definition + // Additional Network Feature Support + // 3G TS 24.008 cl. 10.5.5.31 + // ----------------------------------------------------------------------------- + type record NwkResourceId { + IEI8_Type iei, // + Type4Length_Type iel, // + B10_Type nriContainerValue, // @sic R5s140778 sic@ + B6_Type spareBits // @sic R5s140778 sic@ + }; + + // ============================================================================= + // Structured Type Definition + // PacketFlowIdentifier + // 24.008, section 10.5.6.11 + // ----------------------------------------------------------------------------- + type record PacketFlowIdentifier { /* 24.301 cl. 9.9.4.5 -> 24.008 cl. 10.5.6.11 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type spare, + B7_Type idValue + }; + + // ============================================================================= + // Structured Type Definition + // PLMN Identity of the CN Operator + // 3G TS 24.008 cl. 10.5.5.36 + // ----------------------------------------------------------------------------- + type record PLMN_IdIE { + IEI8_Type iei, + Type4Length_Type iel, + NAS_PlmnId plmn + }; + + // ============================================================================= + // Structured Type Definition + // PLMN list + // 3G TS 24.008 cl. 10.5.1.13 + // ----------------------------------------------------------------------------- + type record PLMN_List { /* 24.301 cl. 9.9.2.4 -> 24.008 cl. 10.5.1.13 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + record length(1..15) of + NAS_PlmnId plmnList /* list of PLMNs */ + }; + + // ============================================================================= + // Structured Type Definition + // MS network feature support + // 3GPP 24.008 / 10.5.5.15 + // ----------------------------------------------------------------------------- + type record MS_NetworkFeatureSupport { /* 24.301 cl. 9.9.2.0A -> 24.008 cl. 10.5.5.15 */ + IEI4_Type iei, + B3_Type spare, + B1_Type extdPeriodicTimers + }; + + type PLMN_List.plmnList NAS_PlmnIdList_Type; + + // ============================================================================= + // Structured Type Definition + // ProtocolConfigOptions + // 3G TS 24.008 cl. 10.5.6.3 + // ----------------------------------------------------------------------------- + type record ProtocolConfigOptions { /* 24.301 cl. 9.9.4.8 -> 24.008 cl. 10.5.6.3 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, + B1_Type ext, + B4_Type spare, + B3_Type configProtocol, + record length (0..83) of + ProtocolContainer pco optional + }; + + type record ProtocolContainer { + O2_Type protocolID, /* id is always 2 octets */ + Type4Length_Type protocolLength optional, // @sic R5s201386 Baseline Moving sic@ + Type6Length_Type protocolLongLength optional, // always set to omit in UL @sic R5s201386 Baseline Moving sic@ + octetstring content optional + }; + + type ProtocolConfigOptions.pco NAS_ProtocolConfigOptions_Type; + + type record APNRateControlParams { // 3GPP 24.008 / 10.5.6.3.2 + B4_Type spare, + B1_Type aer, + B3_Type uplinkTimeUnit, + O3_Type maxUplinkRate optional // @sic R5s170598 Baseline Moving sic@ + }; + // ============================================================================= + // Structured Type Definition + // P-TMSI signature + // 3GPP 24.008 / 10.5.5.8 + // ----------------------------------------------------------------------------- + type record PTMSI_Signature { /* 24.301 cl. 9.9.3.23 -> 24.008 cl. 10.5.5.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, // only present in 24.008 version of DETACH REQUEST message + O3_Type signatureValue + }; + + // ============================================================================= + // Structured Type Definition + // 24.008, clause 10.5.6.5 + // ----------------------------------------------------------------------------- + type record QualityOfService { /* 24.301 cl. 9.9.4.9 -> 24.008 cl. 10.5.6.5 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B2_Type spare1, + B3_Type delayClass, + B3_Type relabilityClass, + B4_Type peakThroughput, + B1_Type spare2, + B3_Type precedenceClass, + B3_Type spare3, + B5_Type meanThroughput, + B3_Type trafficClass, + B2_Type deliveryOrder, + B3_Type deliveryErrorSDU, + B8_Type maxSduSize, + B8_Type maxBitRateUL, + B8_Type maxBitRateDL, + B4_Type residualBER, + B4_Type sduErrorRatio, + B6_Type transferDelay, + B2_Type trafficHandlingPrio, + B8_Type guaranteedBitRateUL, + B8_Type guaranteedBitRateDL, + B3_Type spare4, + B1_Type signallingInd, + B4_Type sourceStatisticsDescriptor, + B8_Type maxBitRateDL_Ext optional, + B8_Type guaranteedBitRateDL_Ext optional, + B8_Type maxBitRateUL_Ext optional, + B8_Type guaranteedBitRateUL_Ext optional, + B8_Type maxBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type maxBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateUL_Ext2 optional // @sic R5s1300195 Baseline Moving sic@ + }; + + // ============================================================================= + // Structured Type Definition + // Radio priority + // 3GPP 24.008 / 10.5.7.2 + // ----------------------------------------------------------------------------- + type record RadioPriority { /* 24.301 cl. 9.9.4.10 -> 24.008 cl. 10.5.7.2 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare, + B3_Type levelValue + }; + + // ============================================================================= + // Structured Type Definition + // Codec + // 3G TS 24.008 cl. 10.5.4.32 + // ----------------------------------------------------------------------------- + type record Codec { + O1_Type sysId, // system identifcation + Type4Length_Type len, // length + B8_Type bitMap1to8, // codec bitmap bits 1-8 + B8_Type bitMap9to16 optional // codec bitmap bits 9-16 + }; + + // ============================================================================= + // Structured Type Definition + // Supported Codec List + // 3G TS 24.008 cl. 10.5.4.32 + // ----------------------------------------------------------------------------- + type record CodecList { + IEI8_Type iei, // '01000000'B (40 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + record of Codec codec// list of codecs + }; + + // ============================================================================= + // Structured Type Definition + // TMSI status + // 3GPP 24.008 cl. 10.5.6.17 + // ----------------------------------------------------------------------------- + type record Request_Type { /* 24.301 cl. 9.9.4.11 */ + // IEI is always skipped + B1_Type spare, + B3_Type typeValue + }; + + // ============================================================================= + // Structured Type Definition + // TMSI status + // 3GPP 24.008 cl. 10.5.5.4 + // ----------------------------------------------------------------------------- + type record TMSI_Status { + IEI4_Type iei optional, + B3_Type spare3, + TmsiStatusValue flag // Flag + }; + + // ============================================================================= + // Structured Type Definition + // TrafficFlowTemplate + // 3GPP 24.008 / 10.5.6.12 + // ----------------------------------------------------------------------------- + type record TrafficFlowTemplate { /* 24.301 cl. 9.9.4.13 -> 24.008 cl. 10.5.6.12 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B3_Type tftOperationCode, + B1_Type eBit, + B4_Type noOfPktFilter, + record of PacketFilter packetFilterList optional, + record of TftParameter parameterList optional + }; + + type record TftParameter { + IEI8_Type iei, + Type4Length_Type iel, + octetstring contents + }; + + type record PacketFilter { + B2_Type spare, // @sic R5s130195 Baseline Moving sic@ + B2_Type direction, // @sic R5s130195 Baseline Moving sic@ + IEI4_Type iei, // @sic R5s130195 Baseline Moving sic@ + B8_Type precedence optional, + Type4Length_Type iel optional, + PacketFilterContents contents optional + }; + + type record of PacketFilterComponent PacketFilterContents; + + type record PacketFilterComponent { + O1_Type id, + PacketFilterComponentValue packetFilterComponentValue + } with { variant (id)"FIELDLENGTH(8)";}; + + type union PacketFilterComponentValue { + O8_Type ipv4RemoteAddress, + O32_Type ipv6RemoteAddress, + O1_Type protocolIdNextHeader, + O2_Type singleLocalPort, + O4_Type localPortRange, + O2_Type singleRemotePort, + O4_Type remotePortRange, + O4_Type securityParameterIndex, + O2_Type typeOfServiceTrafficClass, + O3_Type flowLabel + }; + + type record UE_NetworkCap { // 24.301 cl. 9.9.3.34 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B8_Type eeaCap, // @sic R5s100135, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type eiaCap, // @sic R5s100135, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type ueaCap optional, // @sic R5s100135, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type uiaCap optional, // @sic R5s100135, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type srvcc_LPP_ProSeCap optional, // @sic R5s150329, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type cIoT_proSeCap optional, // @sic R5s160711, R5s150329, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type cIoT_V2X optional, // @sic R5s170598, R5s180271 Baseline Moving 2018 Phase 1 sic@ + B8_Type edt_WUS optional, // @sic R5s201386 Baseline Moving sic@ + B8_Type musim optional, // Sep22 @sic R5s221179 Baseline Moving sic@ + octetstring spare optional // @sic R5s100135 sic@ + } with { + variant "FIELDORDER(msb)"; + } + + type record ReAttemptIndicator { // 24.301 cl. 9.9.4.13A, 24.008 cl. 10.5.6.5A + // The two definitions are exactly the same. + // The only difference is the meaning of the ratcValue bit + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spare, // @sic R5s160712 Baseline Moving sic@ + B1_Type eplmncValue, // @sic R5s160712 Baseline Moving sic@ + B1_Type ratcValue + } with { + variant "FIELDORDER(msb)"; + } + + // ============================================================================= + // Structured Type Definition + // Authentication Parameter AUTN + // 3G TS 24.008 cl. 10.5.3.1.1 + // ----------------------------------------------------------------------------- + type record AUTN { /* 24.301 cl. 9.9.3.2 -> 24.008 cl. 10.5.3.1.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, // @sic R5s110420 sic@ + B128_Type aUTN /* (as for UMTS) */ + } with { + variant "FIELDORDER(msb)"; + variant "PRESENCE (iei = '20'O)"; + variant (iel) "LENGTHTO (aUTN)" + } + + // ============================================================================= + // Structured Type Definition + // Authentication Failure Parameter (TLV) + // 3G TS 24.008 cl. 10.5.3.2.2 + // ----------------------------------------------------------------------------- + type record AuthenticationFailureParameter { + IEI8_Type iei, // '00100010'B for MM (22 hex) + // '00110000'B for GMM (30 hex) + Type4Length_Type iel, // M 1 octet + B112_Type auts // AUTS, 14 octets + } with { + variant "FIELDORDER(msb)"; + variant "PRESENCE (iei = '30'O)"; + variant (iel) "LENGTHTO (auts)" + } + + // ============================================================================= + // Structured Type Definition + // Authentication Parameter RAND (TV, 17 octets) + // 3G TS 24.008 cl. 10.5.3.1 + // ----------------------------------------------------------------------------- + type record RAND { + IEI8_Type iei optional, // '00100001'B (21 hex) + B128_Type randValue // Authentication Parameter RAND value + } with { + variant "FIELDORDER(msb)"; + variant "PRESENCE (iei = '21'O)" + } + + type record DaylightSavingTime { /* 24.301 cl. 9.9.3.5 -> 24.008 cl. 10.5.3.12 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spare, + B2_Type val + } with { + variant "FIELDORDER(msb)"; + }; + + type record NetworkName { /* 24.301 cl. 9.9.3.21 -> 24.008 cl. 10.5.3.5a */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B1_Type ext, + B3_Type codingScheme, + B1_Type addCI, + B3_Type spareBitCnt, + octetstring text + } with { + variant "FIELDORDER(msb)"; + }; + + type record TimeZone { /* 24.301 cl. 9.9.3.26 -> 24.008 cl. 10.5.3.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type timeZone + } with { + variant "FIELDORDER(msb)"; + }; + + type record TimeZoneAndTime { /* 24.301 cl. 9.9.3.27 -> 24.008 cl. 10.5.3.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type year, + O1_Type month, + O1_Type day, + O1_Type hour, + O1_Type minute, + O1_Type second, + O1_Type timeZone + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // 3G TS 24.008 cl. 10.5.5.28 + // @sic R5s110176 Baseline Moving sic@ + // ----------------------------------------------------------------------------- + type record VoiceDomainPref { + IEI8_Type iei optional, // 01111110'B + Type4Length_Type iel optional, // length + B5_Type spareBits, + B1_Type ueUsageSetting, + B2_Type voiceDomainPrefEUTRA // @sic R5s110233 sic@ + } with { + variant "FIELDORDER(msb)"; + }; + + type record IdentityType { /* 24.301 cl. 9.9.3.15 -> 24.008 cl. 10.5.3.4 */ + // IEI is always skipped + B1_Type spare, + NAS_IdType typeOfId + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // REGISTER + // ue->n or n->ue, 3GPPP TS 24.080, 2.4 + // ----------------------------------------------------------------------------- + type record REGISTER { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility_Str, // M, BER enconded ASN.1 object + SS_VersionInd sS_VersionInd optional // O for ue->n, N/A for n->ue + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // FACILITY + // n->ue, 3GPPP TS 24.080, 2.3 and 24.008, 10.4 + // ----------------------------------------------------------------------------- + type record FACILITY { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8], for n->ue "00111010", for ue->n "xx111010" (see 24.007) + FacilityIE facility_Str // M, BER enconded ASN.1 object + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // FACILITY + // ue->n 3GPPP TS 24.080, 2.3 and 24.008, 10.4 + // ----------------------------------------------------------------------------- + type record FACILITYul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8], for n->ue "00111010", for ue->n "xx111010" (see 24.007) + FacilityIE facility_Str, // M, BER enconded ASN.1 object + SS_VersionInd sS_VersionInd optional // O @sic R5s140989 sic@ + } with { + variant "FIELDORDER(msb)"; + }; + // ============================================================================= + // Structured Type Definition + // Facility Information Element + // 3GPPP TS 24.080, 3.6 / 24.008, 10.5.4.15 + // ----------------------------------------------------------------------------- + type record FacilityIE { + IEI8_Type iei optional, // Facility IE identifier + Type4Length_Type iel, // length of Facility contents + octetstring components // ASN.1 definitions BER encoded + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // Transaction identifier + // 3G TS 24.007 cl. 11.2.3.1.3 + // ----------------------------------------------------------------------------- + type record TI { + B1_Type tiFlag, // Flag + B3_Type tiVal // TIO + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // SS version indicator + // 3G TS 24.008 cl. 10.5.4.24 + // 1. Usually this IE has only one octet of content. + // Exact definition see TS 24.080 + // ----------------------------------------------------------------------------- + type record SS_VersionInd { + IEI8_Type iei, // '01111111'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + O1_Type sS_VersionInfo // ss version information + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // RESETUEPOSITIONINGSTOREDINFORMATION + // n->ue, 3GPPP TS 34.109, 6.10/36.509 6.9 + // ----------------------------------------------------------------------------- + type record RESETUEPOSITIONINGSTOREDINFORMATION { + SkipIndicator skipIndicator, // "0000" skip indicator BITSTRING [4] + ProtocolDiscriminator protocolDiscriminator, // M, "1111" Protocol discriminator for test procedure messages BITSTRING [4] + MessageType msgType, // M, message type BITSTRING [8] + B8_Type uePositioningTech // M, BITSTRING [8] + } with { + variant "FIELDORDER(msb)"; + }; + + // ============================================================================= + // Structured Type Definition + // WLANOffloadAcceptability + // 3GPPP TS 24.008 10.5.6.20 + // ----------------------------------------------------------------------------- + type record WLANOffloadAcceptability { + IEI4_Type iei, + B2_Type spare, + B1_Type utranOffload, + B1_Type eutranOffload +} with { + variant "FIELDORDER(msb)"; +}; + +// ============================================================================= +// Structured Type Definition +// Extended DRX Parameters +// 3GPP 24.008 / 10.5.5.32 +// ----------------------------------------------------------------------------- +type record ExtdDRXParams { + IEI8_Type iei, + Type4Length_Type iel, // length + B4_Type pagingTimeWindow, + B4_Type eDRXValue, + B8_Type extdPTW optional // @sic R5s221182 Baseline Moving Rel-17 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// NBIFOM Container +// 3GPP 24.008 / 10.5.6.21 +// ----------------------------------------------------------------------------- +type record NBIFOMContainer { + IEI8_Type iei, + Type4Length_Type iel, // length + octetstring containerContents +}; + +// ============================================================================= +// Structured Type Definition +// DCN Id +// 3G TS 24.008 cl. 10.5.5.35 +// ----------------------------------------------------------------------------- + type record DCN_ID { + IEI8_Type iei, + Type4Length_Type iel, + O2_Type dcnIdValue + }; + +// ============================================================================= +// Structured Type Definition +// ePCO +// 3G TS 24.008 cl. 10.5.6.3A +// ----------------------------------------------------------------------------- + type record ExtdProtocolConfigOptions { + IEI8_Type iei, + Type6Length_Type iel, + B1_Type ext, + B4_Type spare, + B3_Type configProtocol, + record of ProtocolContainer pco optional + }; + + type record of ProtocolContainer NAS_ExtdProtocolConfigOptions_Type; /* @sic R5-2001649 sic@ @status APPROVED (LTE_A_PRO, NBIOT) */ + + //----------------------------------------------------------------------------- + // Defined in 24.301, but also referenced from 24.501 + //----------------------------------------------------------------------------- + + type record AdditionalInformation{ /* 24.301 cl. 9.9.2.0 @sic R5s110176 Baseline Moving sic@ */ + IEI8_Type iei, + Type4Length_Type iel, + octetstring additionalInfo + }; + + type record AuthenticationResponseParameter { /* 24.301 cl. 9.9.3.4 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B32_128_Type res /* 4..16 octets */ + } with { + variant "PRESENCE (iei = '2D'O)"; + variant (iel) "LENGTHTO (res)" + } + + type record NAS_KeySetIdentifier { /* 24.301 cl. 9.9.3.21 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type tsc, // Type of security context: 0 = cached, 1 = mapped + NAS_KsiValue nasKeySetId + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + variant "FIELDLENGTH(4)"; + } + + type record HashMME { /* 24.301 cl. 9.9.3.50 @sic R5s170597 Baseline Moving sic@ */ + IEI8_Type iei optional, + Type4Length_Type iel, + O8_Type hashMME + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + variant "FIELDLENGTH(4)"; + } + + type record PDN_Address { /* 24.301 cl. 9.9.4.9 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B5_Type spare, + B3_Type typeValue, + octetstring adressInfo length(4..12) + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + variant (iel) "LENGTHTO (adressInfo)"; + }; + + type record ReplayedNASMessageContainer { /* 24.301 cl. 9.9.3.51 @sic R5s170597 Baseline Moving sic@ */ + IEI8_Type iei optional, + Type6Length_Type iel, + octetstring replayedNASMsgContainerValue + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + variant (iel) "LENGTHTO(replayedNASMsgContainerValue)"; + }; + + type record NAS_SecurityAlgorithms { /* 24.301 cl. 9.9.3.23 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare1, + B3_Type cipheringType, /* Type of ciphering algorithm */ + B1_Type spare2, + B3_Type integrityType /* Type of integrity protection algorithm */ + }; + + type record Extd_EPS_QOS { /* 24.301 cl. 9.9.4.30 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type unitMaxBitRate, + B8_Type maxBitRateUl_1, + B8_Type maxBitRateUl_2, + B8_Type maxBitRateDl_1, + B8_Type maxBitRateDl_2, + B8_Type unitGuaranteedBitRate, + B8_Type guaranteedBitRateUl_1, + B8_Type guaranteedBitRateUl_2, + B8_Type guaranteedBitRateDl_1, + B8_Type guaranteedBitRateDl_2 + }; + + type record UE_Status { // 24.501 cl. 9.11.3.56 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spare, + B1_Type n1ModeRegistered, + B1_Type s1ModeRegistered + }; + + // ============================================================================= + // Structured Type Definition + // Emergency Number List + // 3G TS 24.301 cl. 9.9.3.37A + // ----------------------------------------------------------------------------- + type record ExtdEmergNumList { + IEI8_Type iei, + Type6Length_Type iel, + B7_Type spareBits, // @sic R5s201386 Baseline Moving sic@ + B1_Type extdEmergNumListValidity, + record of ExtdEmergNum emergNum + }; + + type record ExtdEmergNum { + Type4Length_Type len, + octetstring digits, // BCD numbers + Type4Length_Type lengthOfSubService, + octetstring subServices + }; + + // ============================================================================= + // Structured Type Definition + // Emergency Number List + // 3G TS 24.301 cl. 9.9.3.36 + // ----------------------------------------------------------------------------- + type record UE_SecurityCapability { + Type4Length_Type iel, // @sic R5s10035 iei never used, so removed sic@ + O1_Type eeaCap, // @sic R5s100135 sic@ + O1_Type eiaCap, // @sic R5s100135 sic@ + O1_Type ueaCap optional, // @sic R5s100135 sic@ + O1_Type uiaCap optional, // @sic R5s100135 sic@ + O1_Type geaCap optional // @sic R5s100135 sic@ + }; + + type record EPS_QualityOfService { /* 24.301 cl. 9.9.4.3 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type qci, + B8_Type maxBitRateUl optional, + B8_Type maxBitRateDl optional, + B8_Type guaranteedBitRateUl optional, + B8_Type guaranteedBitRateDl optional, + B8_Type maxBitRateUlExt optional, + B8_Type maxBitRateDlExt optional, + B8_Type guaranteedBitRateUlExt optional, + B8_Type guaranteedBitRateDlExt optional, + B8_Type maxBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving, R5s180640 sic@ + B8_Type maxBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving, R5s180640 sic@ + B8_Type guaranteedBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving, R5s180640 sic@ + B8_Type guaranteedBitRateDL_Ext2 optional // @sic R5s1300195 Baseline Moving, R5s180640 sic@ + }; + + type record EPS_BearerContextStatus { /* 24.301 cl. 9.9.2.1 */ + IEI8_Type iei optional, /* present in case of TV or TLV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B3_Type ebi5_7, /* EBI(5)- EBI(7) */ + B4_Type ebi4_1, /* EBI(1)- EBI(4) @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + B1_Type spare, /* EBI(0) is spare and shall be coded as zero @sic R5s180552 Baseline Moving 2018 Phase 2 sic@ */ + B8_Type ebi8_15 /* EBI(8)- EBI(15)*/ + }; + + type record UERadioCapId { /* 24.501 cl. 9.11.3.68 */ + IEI8_Type iei optional, /* present in case of TV or TLV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring id + }; + + type record UERadioCapIdDeletion { /* 24.501 cl. 9.11.3.69 */ + IEI4_Type iei optional, + B1_Type spare, + B3_Type deleteReq + }; + + type record DRXParamCommon { /* 24.301 cl. 9.9.3.63 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B4_Type spare, + B4_Type drxValue + }; + + type record ReleaseAssistanceInd { /* 24.301 cl. 9.9.4.25 */ + IEI4_Type iei optional, + B2_Type spare, + B2_Type dlDataExpected + }; + + type record WUSAssistInfo { /* 24.301 cl. 9.9.3.62 */ + IEI8_Type iei optional, + Type4Length_Type iel, + record of WusInfoType infoType + }; + + type record WusInfoType { + B3_Type wusType, + B5_Type pagingProbability, + octetstring wusValue optional + }; + + type record ServingPLMNRateControl { /* 24.301 cl. 9.9.4.28 */ + IEI8_Type iei optional, + Type4Length_Type iel, + O2_Type servingPLMNRate + }; + + type record ControlPlaneInd { /* 24.301 cl. 9.9.4.23 */ + IEI4_Type iei optional, + B3_Type spare, + B1_Type cpIndValue + }; + + type record QoSParameters { + O1_Type id, + Type4Length_Type lenOfContent, + octetstring qosParam + }; + + type record of QoSParameters QoSParametersList; + + type record UE_RequestType { /* 24.301 cl. 9.9.3.65 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B4_Type spare, + B4_Type requestType + }; + +//} with { encode "NAS Types" } +} with { encode "RAW"; variant "" } diff --git a/ttcn/Lib3GPP/NAS/NAS_EncdecDeclarations.ttcn b/ttcn/Lib3GPP/NAS/NAS_EncdecDeclarations.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..615455213c0e9c2845a885db8a61fbcd6cca3eef --- /dev/null +++ b/ttcn/Lib3GPP/NAS/NAS_EncdecDeclarations.ttcn @@ -0,0 +1,44 @@ +module NAS_EncdecDeclarations { + + import from NAS_CommonTypeDefs all; +// import from SMS_TypeDefs all; + + + + external function fx_enc_PacketFilterComponent (PacketFilterComponent p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + //external function enc_PacketFilterComponent (PacketFilterComponent p) return octetstring + // with {extension "prototype(convert) encode(RAW)"} + + external function fx_dec_PacketFilterComponent (inout bitstring pdu, out PacketFilterComponent p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_QoSParametersList (QoSParametersList p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_QoSParametersList (inout bitstring pdu, out QoSParametersList p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_EPS_QualityOfService (EPS_QualityOfService p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_EPS_QualityOfService (inout bitstring pdu, out EPS_QualityOfService p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_TrafficFlowTemplate (TrafficFlowTemplate p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_TrafficFlowTemplate (inout bitstring pdu, out TrafficFlowTemplate p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + // external function fx_enc_CP_PDU_Type (CP_PDU_Type p) return bitstring + // with {extension "prototype(convert) encode(SMS Types)"} + + // external function fx_dec_CP_PDU_Type (inout bitstring pdu, out CP_PDU_Type p) return integer + // with {extension "prototype(sliding) decode(SMS Types)"} + +} // End of module module NAS_EncdecDeclarations diff --git a/ttcn/Lib3GPP/NAS/SMS_Templates.ttcn b/ttcn/Lib3GPP/NAS/SMS_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1e55af9ab55cbcb5e4beea2d3817f6a53c793010 --- /dev/null +++ b/ttcn/Lib3GPP/NAS/SMS_Templates.ttcn @@ -0,0 +1,506 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-06-14 15:51:23 +0200 (Tue, 14 Jun 2022) $ +// $Rev: 33641 $ +/******************************************************************************/ + +module SMS_Templates { + + import from CommonDefs all; + import from SMS_TypeDefs all; + + template (value) TransactionIdentifier_Type cs_MT_TI0_FromSS := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + tI_Flag := '0'B, + tI_Value := '000'B + }; + + template (value) TransactionIdentifier_Type cs_MT_TI1_FromSS := + { /* @status APPROVED (NR5GC) */ + tI_Flag := '0'B, + tI_Value := '001'B + }; + + template (present) TransactionIdentifier_Type cr_MT_TI0_FromUE := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + tI_Flag := '1'B, + tI_Value := '000'B + }; + + template (present) TransactionIdentifier_Type cr_MT_TI1_FromUE := + { /* @status APPROVED (NR5GC) */ + tI_Flag := '1'B, + tI_Value := '001'B + }; + + template (present) TransactionIdentifier_Type cr_MO_AnyTI_FromUE := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + tI_Flag := '0'B, + tI_Value := '???'B + }; + + template (present) TypeOfNumberingPlan cr_TypeOfNumberingPlanAny := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + extBit := ?, + typeOfNumber := ?, + numberingPlanId := ? + }; + + template (value) TypeOfNumberingPlan cs_TypeOfNumberingPlan := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + extBit := '1'B, + typeOfNumber := '001'B, // international number + numberingPlanId := '0001'B // ISDN/telephony numbering plan (Rec. E.164/E.163) + }; + + /* End Non-SMS Type Constraints */ + + + template (value) CP_UserData_Type cs_CP_UserData_DELIVER (octetstring p_Digits):= + { /* @status APPROVED (LTE, NR5GC) */ + spare := omit, + iei := omit, + iel := int2oct ((162 + lengthof (p_Digits)), 1), // 162 = 153 + 1 + 5 + 3=size of cs_RP_OriginatorAddress_dl + rP_PDU := {RP_DATA_dl := cs_RP_DATA_dl_DELIVER (p_Digits)} + }; + + template (value) CP_UserData_Type cs_CP_UserData_SUBMIT_REPORT(O1_Type p_MsgRef) := + { + // @sic R5s100604 sic@ + spare := omit, + iei := omit, + iel := '0D'O, // the length of RPDU is 13 + rP_PDU := {RP_ACK := cs_RP_ACK_SUBMIT_REPORT(p_MsgRef)} + }; + + template (value) CP_UserData_Type cs_CP_UserData_RP_ACK_dl (O1_Type p_MsgRef):= + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + // @sic R5s100604 sic@ @sic R5s110206 sic@ + spare := omit, + iei := omit, + iel := '02'O, // the length of RPDU is 2 as RP UserData are omitted now + rP_PDU := { + RP_ACK := cs_RP_ACK_dl(p_MsgRef) + } + }; + + template (present) CP_UserData_Type cr_CP_UserData_SUBMIT(template (present) RP_DATA_ul_Type p_RP_DATA_ul := cr_RP_DATA_ul_SUBMIT) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + spare := omit, + iei := omit, + iel := ?, + rP_PDU := { + RP_DATA_ul := p_RP_DATA_ul + } + }; + + template (present) CP_UserData_Type cr_CP_UserData_DELIVER_REPORT := + { + spare := omit, + iei := omit, + iel := ?, + rP_PDU := { + RP_ACK := cr_RP_ACK_DELIVER_REPORT + } + }; + + template (present) CP_UserData_Type cr_CP_UserData_RP_ACK_ul := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + spare := omit, + iei := omit, + iel := ?, + rP_PDU := { + RP_ACK := cr_RP_ACK_ul + } + }; + /* End SM-CP Type Constraints */ + + /* SM-CP PDU Constraints */ + + template (value) CP_DATA_Type cs_CP_DATA (template (value) TransactionIdentifier_Type p_TransactionIdentifier, + template (omit) CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_DATA, + cP_UserData := p_CP_UserData + }; + + template (present) CP_DATA_Type cr_CP_DATA (template TransactionIdentifier_Type p_TransactionIdentifier, + template CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_DATA, + cP_UserData := p_CP_UserData + }; + + template (value) CP_ACK_Type cs_CP_ACK(template (value) TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ACK + }; + + template (present) CP_ACK_Type cr_CP_ACK(template TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ACK + }; + + template (value) CP_ERROR_Type cs_CP_ERROR(TransactionIdentifier_Type p_TransactionIdentifier, + CP_Cause_Type p_CP_Cause) := + { + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ERROR, + cP_Cause := p_CP_Cause + }; + + template (present) CP_ERROR_Type cr_CP_ERROR(template (value) TransactionIdentifier_Type p_TransactionIdentifier, + CP_Cause_Type p_CP_Cause) := + { + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ERROR, + cP_Cause := p_CP_Cause + }; + + template (present) CP_PDU_Type cr_CP_DATA_PDU(template TransactionIdentifier_Type p_TransactionIdentifier, + template CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + CP_DATA := cr_CP_DATA (p_TransactionIdentifier, p_CP_UserData) + }; + + template (value) CP_PDU_Type cs_CP_DATA_PDU (template (value) TransactionIdentifier_Type p_TransactionIdentifier, + template (value) CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + CP_DATA := cs_CP_DATA (p_TransactionIdentifier, p_CP_UserData) + }; + + template (present) CP_PDU_Type cr_CP_ACK_PDU(template TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + CP_ACK := cr_CP_ACK (p_TransactionIdentifier) + }; + + template (value) CP_PDU_Type cs_CP_ACK_PDU(template (value) TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + CP_ACK := cs_CP_ACK (p_TransactionIdentifier) + }; + + /* End SM-CP PDU Constraints */ + + /* SM-RP Type Constraints */ + + template (omit) RP_OriginatorAddress_dl cs_RP_OriginatorAddress_dl := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + spare := omit, + iei := omit, + iel := '04'O, // 4 semi-octets @sic R5s100586 sic@ + typeOfNumberingPlan := cs_TypeOfNumberingPlan, + digits := '001122'O + }; + + template (present) RP_OriginatorAddress_ul cr_RP_OriginatorAddress_ul := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + spare := omit, + iei := omit, + iel := '00'O + }; + + template (present) RP_DestinationAddress_ul cr_RP_DestinationAddress_ul(template (present) octetstring p_Digits := ?) := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + spare := omit, + iei := omit, + iel := ?, + typeOfNumberingPlan := cr_TypeOfNumberingPlanAny, + digits := p_Digits + }; + + template (value) RP_DestinationAddress_dl cs_RP_DestinationAddress_dl := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + spare := omit, + iei := omit, + iel := '00'O + }; + + template (value) RP_UserData cs_RP_UserData_DELIVER (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE, NR5GC) */ + spare := omit, + iei := omit, + iel := int2oct ((153 + lengthof (p_Digits)), 1), + tP_PDU := {SMS_DELIVER := cs_SMS_DELIVER (p_Digits)} + }; + + template (value) RP_UserData cs_RP_UserData_SUBMIT_REPORT := + { /* @status APPROVED (IMS, LTE_A_R12, NR5GC) */ + spare := tsc_Sparebit, + iei := tsc_IEI_RP_UserData, + iel := '09'O, // the TPDU data length is 9 octets @sic R5s201325 sic@ + tP_PDU := {SMS_SUBMIT_REPORT := cs_SMS_SUBMIT_REPORT} + }; + + template (present) RP_UserData cr_RP_UserData_SUBMIT(template (present) SMS_SUBMIT_Type p_SMS_SUBMIT := cr_SMS_SUBMIT_VPF_REF) := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + /* NOTE: cr_SMS_SUBMIT_VPF_REF fits with AT command !! */ + spare := omit, + iei := omit, + iel := ?, + tP_PDU := { + SMS_SUBMIT := p_SMS_SUBMIT + } + }; + + template (present) RP_UserData cr_RP_UserData_DELIVER_REPORT := + { /* @status APPROVED (IMS) */ + spare := tsc_Sparebit, + iei := tsc_IEI_RP_UserData, + iel := ?, + tP_PDU := { + SMS_DELIVER_REPORT := cr_SMS_DELIVER_REPORT + } + }; + + /* End SM-RP Type Constraints */ + + /* SM-RP PDU Constraints */ + + template (value) RP_DATA_dl_Type cs_RP_DATA_dl_DELIVER (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE, NR5GC) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_DATA_dl, + rP_MessageReference := int2oct(0, 1), + rP_OriginatorAddress := cs_RP_OriginatorAddress_dl, + rP_DestinationAddress := cs_RP_DestinationAddress_dl, + rP_UserData := cs_RP_UserData_DELIVER(p_Digits) + }; + + template (present) RP_DATA_ul_Type cr_RP_DATA_ul_SUBMIT(template (present) RP_UserData p_RP_UserData := cr_RP_UserData_SUBMIT, + template (present) octetstring p_Digits := ?) := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_DATA_ul, + rP_MessageReference := ?, + rP_OriginatorAddress := cr_RP_OriginatorAddress_ul, + rP_DestinationAddress := cr_RP_DestinationAddress_ul(p_Digits), + rP_UserData := p_RP_UserData + }; + + template (value) RP_ACK_Type cs_RP_ACK_SUBMIT_REPORT(O1_Type p_MsgRef) := + { /* @status APPROVED (IMS, LTE_A_R12, NR5GC) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_dl, + rP_MessageReference := p_MsgRef, // @sic R5s100604 sic@ + rP_UserData := cs_RP_UserData_SUBMIT_REPORT + }; + + template (present) RP_ACK_Type cr_RP_ACK_DELIVER_REPORT := + { /* @status APPROVED (IMS) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_ul, + rP_MessageReference := ?, + rP_UserData := cr_RP_UserData_DELIVER_REPORT + }; + + template (value) RP_ACK_Type cs_RP_ACK_dl(O1_Type p_MsgRef) := + { /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_dl, + rP_MessageReference := p_MsgRef, // @sic R5s100604 sic@ + rP_UserData := omit + }; + + template (present) RP_ACK_Type cr_RP_ACK_ul := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_ul, + rP_MessageReference := ?, + rP_UserData := * + }; + + /* End SM-RP PDU Constraints */ + + /* SM-TP Type Constraints */ + template (present) TP_ProtocolIdentifier_Type cr_TP_ProtocolIdentifier := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + // @sic R5s100586 sic@ + pidType := '00'B, + interworking := '0'B, + pidValue := '00000'B // @sic R5s100773 sic@ + }; + + template (value) TP_ProtocolIdentifier_Type cs_TP_ProtocolIdentifier := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + // @sic R5s100586 sic@ + pidType := '00'B, + interworking := '0'B, + pidValue := '00000'B // @sic R5s100773 sic@ + }; + + template (value) TP_DataCodingScheme_Type cs_TP_DataCodingScheme := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, NBIOT, NR5GC) */ + codingGroup := '0000'B, + codeValue := '0000'B + }; + + template (present) TP_Address_Type cr_TP_AddressAny := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + iel := ?, + typeOfNumberingPlan := cr_TypeOfNumberingPlanAny, + digits := * + }; + + template (value) TP_Address_Type cs_TP_Address (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, NBIOT, NR5GC) */ + iel := int2oct(2 * lengthof(p_Digits), 1), + // length is number of useful semi-octets + // as p_digits is declared as octetstring the number must be even + typeOfNumberingPlan := cs_TypeOfNumberingPlan, + digits := p_Digits + }; + + template (present) TP_ParameterIndicator_Type cr_TP_ParameterIndicator := // @sic R5s210112, R5s211245, R5-217832 sic@ + { /* @status APPROVED (IMS) */ + extBit1 := '0'B, + spare4 := '0000'B, + tP_UDL := '?'B, + tP_DCS := '?'B, + tP_PID := '?'B // @sic R5s201325 sic@ + }; + + template (value) TP_ParameterIndicator_Type cs_TP_ParameterIndicator := // @sic R5s210112, R5s211245 sic@ + { /* @status APPROVED (IMS, LTE_A_R12, NR5GC) */ + extBit1 := '0'B, + spare4 := '0000'B, + tP_UDL := '0'B, + tP_DCS := '0'B, + tP_PID := '0'B // @sic R5s201325 sic@ + }; + + /* End SM-TP Type Constraints */ + + /* SM-TP PDU Constraints */ + + template (value) SMS_DELIVER_Type cs_SMS_DELIVER (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE, NR5GC) */ + tP_ReplyPath := '0'B, + tP_UserDataHeaderIndicator := '0'B, + tP_StatusReportIndication := '0'B, + spare2 := '00'B, + tP_MoreMessagesToSend := '1'B, + tP_MessageTypeIndicator := tsc_MT_SMS_DELIVER, + tP_OriginatingAddress := cs_TP_Address (p_Digits), + tP_ProtocolIdentifier := cs_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := cs_TP_DataCodingScheme, + tP_ServiceCentreTimeStamp := f_BCD_TimestampWithTimezone(), + tP_UserDataLength := int2oct(160,1), + tP_UserData := f_CharPacking_IA5toGsm7Bit(tsc_Fox, SMS_Packing) + }; + + template (present) SMS_DELIVER_REPORT_Type cr_SMS_DELIVER_REPORT := + { /* @status APPROVED (IMS) */ + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + spare4 := '0000'B, + tP_MessageTypeIndicator := tsc_MT_SMS_DELIVER_REPORT, + tP_FailureCause := omit, + tP_ParameterIndicator := cr_TP_ParameterIndicator, // @sic R5s210112, R5s211245 sic@ + tP_ProtocolIdentifier := *, // @sic R5-205345 sic@ + tP_DataCodingScheme_Type := *, + tP_UserDataLength := *, + tP_UserData := * + }; + + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT(template (present) B2_Type p_ValidityPeriodFormat := '??'B, + template TP_ValidityPeriod_Type p_ValidityPeriod := *, + template (present) TP_UserDataLength_Type p_UserDataLength := ?) := + { /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + tP_ReplyPath := '?'B, + tP_UserDataHeaderIndicator := '?'B, + tP_StatusReportRequest := '?'B, + tP_ValidityPeriodFormat := p_ValidityPeriodFormat, + tP_RejectDuplicates := '?'B, + tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT, + tP_MessageReference := ?, + tP_DestinationAddress := cr_TP_AddressAny, + tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := ?, + tP_ValidityPeriod := p_ValidityPeriod, + tP_UserDataLength := p_UserDataLength, // @sic R5s120530 sic@ + tP_UserData := ? // any data will do + }; + + template (present) TP_ValidityPeriod_Type cr_TP_ValidityPeriod_Relative(integer p_Value) := { TP_ValidityPeriodRelative := int2oct(p_Value, 1) }; /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT_VPF_REF := cr_SMS_SUBMIT('10'B, cr_TP_ValidityPeriod_Relative(167), int2oct(160, 1)); /* @status APPROVED (IMS, LTE, LTE_A_PRO, LTE_A_R12, NBIOT, NR5GC) */ + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT_AnyVP := cr_SMS_SUBMIT(-, *); /* @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) + @sic R5s141400 sic@ @sic R5s150777 sic@ */ + + template (value) SMS_SUBMIT_REPORT_Type cs_SMS_SUBMIT_REPORT := + { /* @status APPROVED (IMS, LTE_A_R12, NR5GC) */ + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + spare4 := '0000'B, + tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT_REPORT, + tP_FailureCause := omit, + tP_ParameterIndicator := cs_TP_ParameterIndicator, // @sic R5s210112, R5s211245 sic@ + tP_ServiceCentreTimeStamp := f_BCD_TimestampWithTimezone(), + tP_ProtocolIdentifier := omit, // @sic R5s201325 sic@ + tP_DataCodingScheme_Type := omit, + tP_UserDataLength := omit, + tP_UserData := omit + }; + + /* End SM-TP PDU Constraints */ + //---------------------------------------------------------------------------- + /* + * @desc wrapper function for encvalue + * @param p_CP_PDU + * @return octetstring + * @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) + */ + function f_SMS_PDU_Encvalue(template (value) CP_PDU_Type p_CP_PDU) return octetstring + { + var bitstring v_Bitstring := encvalue(p_CP_PDU); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); + return v_Octetstring; + } + + //---------------------------------------------------------------------------- + /* + * @desc Decode given bitstring as CP_PDU and match it against the expected CP_PDU + * if the bitstring cannot be fully decoded or it does not match the expected CP_PDU verdict FAIL is assigned + * as the function is always used in the test body + * @param p_EncodedSMS_Message + * @param p_Expected_CP_PDU + * @param p_Testcase + * @param p_Step + * @return CP_PDU_Type + * @status APPROVED (LTE, LTE_A_PRO, NBIOT, NR5GC) + */ + function f_SMS_CP_PDU_DecodeAndMatch(bitstring p_EncodedSMS_Message, + template CP_PDU_Type p_Expected_CP_PDU, + charstring p_Testcase, + charstring p_Step) return CP_PDU_Type + { + var CP_PDU_Type v_Received_CP_PDU; + var integer v_DecodeResult := decvalue(p_EncodedSMS_Message, v_Received_CP_PDU); + + if (v_DecodeResult != 0) { + f_SetVerdict(fail,__FILE__, __LINE__, p_Testcase & ": SMS_CP_PDU cannot be decoded in " & p_Step); + self.kill; // => test case will be terminated immediately @sic R5s210140 sic@ + } + if (not match(v_Received_CP_PDU, p_Expected_CP_PDU)) { + //* @verdict fail Received decoded template does not match with the expected template + f_SetVerdict(fail,__FILE__, __LINE__, p_Testcase & ": SMS_CP_PDU cannot be matched in " & p_Step); + self.kill; // => test case will be terminated immediately @sic R5s210140 sic@ + } + return v_Received_CP_PDU; + } + +} diff --git a/ttcn/Lib3GPP/NAS/SMS_TypeDefs.ttcn b/ttcn/Lib3GPP/NAS/SMS_TypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..547b20f2b120e442f6fff746fcccdaa60eb772b5 --- /dev/null +++ b/ttcn/Lib3GPP/NAS/SMS_TypeDefs.ttcn @@ -0,0 +1,424 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2020-05-04 20:04:26 +0200 (Mon, 04 May 2020) $ +// $Rev: 27674 $ +/******************************************************************************/ + +module SMS_TypeDefs { + +import from CommonDefs all; +import from NAS_CommonTypeDefs all; + +group SMS_Declarations { + +/* SMS Constant Declarations */ +const ProtocolDiscriminator tsc_PD_SMS := '1001'B; /* 24.007 cl. 11.2.3.1.1 */ + +const MessageType tsc_MT_CP_DATA := '00000001'B; /* CP_DATA */ +const MessageType tsc_MT_CP_ACK := '00000100'B; /* CP_ACK */ +const MessageType tsc_MT_CP_ERROR := '00010000'B; /* CP_ERROR */ + +const RP_MessageTypeIndicator_Type tsc_MT_RP_DATA_ul := '000'B; /* RP_DATA_ul */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_DATA_dl := '001'B; /* RP_DATA_dl */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ACK_ul := '010'B; /* RP_ACK_ul */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ACK_dl := '011'B; /* RP_ACK_dl */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ERROR_ul := '100'B; /* RP_ERROR_ul */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ERROR_dl := '101'B; /* RP_ERROR_dl */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_SMMA := '110'B; /* RP_SMMA */ + +const TP_MessageTypeIndicator_Type tsc_MT_SMS_DELIVER := '00'B; /* SMS DELIVER */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_DELIVER_REPORT := '00'B; /* SMS DELIVER REPORT */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_STATUS_REPORT := '10'B; /* SMS STATUS REPORT */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_COMMAND := '10'B; /* SMS COMMAND */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_SUBMIT := '01'B; /* SMS SUBMIT, SMS SUBMIT REPORT */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_SUBMIT_REPORT := '01'B; /* SMS SUBMIT, SMS SUBMIT REPORT */ + +const B7_Type tsc_IEI_RP_UserData := '1000001'B; /* 24.011 cl. 8.2.5.3 */ +const B1_Type tsc_Sparebit := '0'B; /* 24.011 cl. 8.2.5.3 */ +const B7_Type tsc_RP_ERROR_Cause_NtwOOO := '0100110'B; /* 24.011 cl. 8.2.5.4 */ + +/* Non-SMS Type Declarations */ + +type record TransactionIdentifier_Type { /* 24.007 cl. 11.2.3.1.3 */ + B1_Type tI_Flag, /* A message has a TI flag set to "0" when it belongs to + transaction initiated by its sender, and to "1" otherwise. */ + B3_Type tI_Value /* Values 0 to 6 allowed, value 7 has a special meaning */ +}; + +type record TypeOfNumberingPlan { /* 24.008 cl. 10.5.4.7, 10.5.4.9, 10.5.4.13 */ + B1_Type extBit, /* Extension Bit */ + B3_Type typeOfNumber, /* Type Of Number */ + B4_Type numberingPlanId /* Numbering Plan Identification */ +}; + +/* End Non-SMS Type Declarations */ + +/* SM-CP Type Declarations */ + +type record CP_UserData_Type { /* 24.011 cl. 8.1.4.1 */ + B1_Type spare optional, /* 0, present in case of TLV; omit in case of LV */ + B7_Type iei optional, /* 0000001, present in case of TLV; omit in case of LV */ + O1_Type iel, /* */ + RP_PDU_Type rP_PDU /* <= 248 octets */ +}; + +type record CP_Cause_Type { /* 24.011 cl. 8.1.4.2 */ + B1_Type spare1 optional, /* 0, present in case of TV; omit in case of V */ + B7_Type iei optional, /* 0000001, present in case of TV; omit in case of V */ + B1_Type spare2, /* 0 */ + B7_Type causeValue /* Table 8.2/3GPP TS 24.011 */ +}; + +/* End SM-CP Type Declarations */ + +/* SM-CP PDU Declarations */ + +type record CP_DATA_Type { /* 24.011 cl. 7.2.1 + Direction: both */ + TransactionIdentifier_Type transactionIdentifier, /* 24.007 cl. 11.2.3.1.3 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* 24.007 cl. 11.2.3.1.1 M V 1/2 */ + MessageType messageType, /* cl. 8.1.3 M V 1 */ + CP_UserData_Type cP_UserData /* cl. 8.1.4.1 M LV <= 249 octets */ +}; + +type record CP_ACK_Type { /* 24.011 cl. 7.2.2 + Direction: both */ + TransactionIdentifier_Type transactionIdentifier, /* 24.007 cl. 11.2.3.1.3 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* 24.007 cl. 11.2.3.1.1 M V 1/2 */ + MessageType messageType /* cl. 8.1.3 M V 1 */ +}; + +type record CP_ERROR_Type { /* 24.011 cl. 7.2.3 + Direction: both */ + TransactionIdentifier_Type transactionIdentifier, /* 24.007 cl. 11.2.3.1.3 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* 24.007 cl. 11.2.3.1.1 M V 1/2 */ + MessageType messageType, /* cl. 8.1.3 M V 1 */ + CP_Cause_Type cP_Cause /* cl. 8.1.4.2 O LV <= 249 octets */ +}; + +type union CP_PDU_Type { + CP_DATA_Type CP_DATA, + CP_ACK_Type CP_ACK, + CP_ERROR_Type CP_ERROR +}; +/* SM-CP PDU Declarations */ + +/* SM-RP Type Declarations */ + +type B3_Type RP_MessageTypeIndicator_Type; /* 24.011 cl. 8.2.2 */ +type O1_Type RP_MessageReference_Type; /* 24.011 cl. 8.2.3 */ + +type record RP_OriginatorAddress_dl { /* 24.011 cl. 8.2.5.1 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel, /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, /* */ + octetstring digits length(1..10) +}; + +type record RP_OriginatorAddress_ul { /* 24.011 cl. 8.2.5.1 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel /* 0 */ +}; + +type record RP_DestinationAddress_ul { /* 24.011 cl. 8.2.5.2 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel, /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, /* */ + octetstring digits length(1..10) +}; +type record RP_DestinationAddress_dl { /* 24.011 cl. 8.2.5.2 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel /* 0 */ +}; + +type record RP_UserData { /* 24.011 cl. 8.2.5.3 */ + B1_Type spare optional, /* 0, present in case of TLV; omit in case of LV */ + B7_Type iei optional, /* 1000001, present in case of TLV; omit in case of LV */ + O1_Type iel, /* */ + TP_PDU_Type tP_PDU /* <= 232 octets */ +}; + +type record RP_Cause { /* 24.011 cl. 8.2.5.4 */ + B1_Type spare optional, /* present in case of TLV; omit in case of LV */ + B7_Type iei optional, /* present in case of TLV; omit in case of LV */ + O1_Type iel, /* 1 or 2 */ + B1_Type extBit, /* 0 */ + B7_Type causeValue, /* Table 8.4/3GPP TS 24.011 */ + O1_Type diagnostic optional /* Parameters included in the return error from MAP */ +}; + +/* End SM-RP Type Declarations */ + +/* SM-RP PDU Declarations */ + +type record RP_DATA_dl_Type { /* 24.011 cl. 7.3.1.1 + Direction: n -> ue */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_OriginatorAddress_dl rP_OriginatorAddress, /* cl. 8.2.5.1 M LV 1-12 octets */ + RP_DestinationAddress_dl rP_DestinationAddress, /* cl. 8.2.5.2 M LV 1 */ + RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */ +}; + +type record RP_DATA_ul_Type { /* 24.011 cl. 7.3.1.2 + Direction: ue -> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_OriginatorAddress_ul rP_OriginatorAddress, /* cl. 8.2.5.1 M LV 1 */ + RP_DestinationAddress_ul rP_DestinationAddress, /* cl. 8.2.5.2 M LV 1 */ + RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */ +}; + +type record RP_SMMA_Type { /* 24.011 cl. 7.3.2 + Direction: ue -> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference /* cl. 8.2.3 M LV 1 */ +}; + +type record RP_ACK_Type { /* 24.011 cl. 7.3.3 + Direction: ue <-> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */ +}; + +type record RP_ERROR_Type { /* 24.011 cl. 7.3.4 + Direction: ue <-> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_Cause rP_Cause, /* cl. 8.2.5.4 M LV 2-3 */ + RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */ +}; + +type union RP_PDU_Type { + RP_DATA_dl_Type RP_DATA_dl, + RP_DATA_ul_Type RP_DATA_ul, + RP_SMMA_Type RP_SMMA, + RP_ACK_Type RP_ACK, + RP_ERROR_Type RP_ERROR +}; + +/* End SM-RP PDU Declarations */ + +/* SM-TP Type Declarations */ + +type record TP_Address_Type { /* 23.040 cl. 9.1.2.5 */ + O1_Type iel, /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, + octetstring digits length(0..10) optional +}; + +type B2_Type TP_MessageTypeIndicator_Type; /* 23.040 cl. 9.2.3.1 */ +type O1_Type TP_MessageReference_Type; /* 23.040 cl. 9.2.3.6 */ +type O1_Type TP_UserDataLength_Type; /* 23.040 cl. 9.2.3.16 */ + +type record TP_ProtocolIdentifier_Type { /* 23.040 cl. 9.2.3.9 */ + B2_Type pidType, /* */ + B1_Type interworking, /* */ + B5_Type pidValue /* */ +}; + +type record TP_DataCodingScheme_Type { /* 23.040 cl. 9.2.3.10 + 23.040 cl. 4 */ + B4_Type codingGroup, /* */ + B4_Type codeValue /* */ +}; + +type hexstring TP_ServiceCentreTimeStamp_Type length (14); /* 23.040 cl. 9.2.3.11 */ + +type O1_Type TP_ValidityPeriodRelative_Type; /* 23.040 cl. 9.2.3.12.1 */ + +type hexstring TP_ValidityPeriodAbsolute_Type length (14); /* 23.040 cl. 9.2.3.12.2 */ + +type record TP_ValidityPeriodEnhanced_Type { /* 23.040 cl. 9.2.3.12.3 */ + B1_Type extBit, /* */ + B1_Type singleShot, /* */ + B3_Type spare3, /* */ + B3_Type validityPeriodFormat, /* */ + O6_Type validityPeriod /* */ +}; + +type union TP_ValidityPeriod_Type { /* 23.040 cl. 9.2.3.3 */ + TP_ValidityPeriodRelative_Type TP_ValidityPeriodRelative, /* Relative format */ + TP_ValidityPeriodAbsolute_Type TP_ValidityPeriodAbsolute, /* Absolute format */ + TP_ValidityPeriodEnhanced_Type TP_ValidityPeriodEnhanced /* Enhanced format */ +}; + +type record TP_Status_Type { /* 23.040 cl. 9.2.3.15 */ + B1_Type reserved, /* */ + B7_Type status /* */ +}; + +type B8_Type TP_Command_Type; /* 23.040 cl. 9.2.3.19 */ + +type record TP_ParameterIndicator_Type { /* 23.040 cl. 9.2.3.27 */ + B1_Type extBit1, /* */ + B4_Type spare4, /* */ + B1_Type tP_UDL, /* */ + B1_Type tP_DCS, /* */ + B1_Type tP_PID /* */ +}; + +/* End SM-TP Type Declarations */ + +/* SM-TP PDU Declarations */ + +type record SMS_DELIVER_Type { /* 23.040 cl. 9.2.2.1 + Direction: n -> ue */ + B1_Type tP_ReplyPath, /* 23.040 cl. 9.2.3.17 */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatusReportIndication, /* 23.040 cl. 9.2.3.4 */ + B2_Type spare2, /* */ + B1_Type tP_MoreMessagesToSend, /* 23.040 cl. 9.2.3.2 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_Address_Type tP_OriginatingAddress, /* 23.040 cl. 9.1.2.5 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type, /* 23.040 cl. 9.2.3.10 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, /* 23.040 cl. 9.2.3.11 */ + TP_UserDataLength_Type tP_UserDataLength, /* 23.040 cl. 9.2.3.16, derived from SUBMIT */ + octetstring tP_UserData length (0..140) optional /* 23.040 cl. 9.2.3.24, derived from SUBMIT */ +}; + +type record SMS_DELIVER_REPORT_Type { /* 23.040 cl. 9.2.2.1a + Direction: ue -> n */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B4_Type spare4, /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + O1_Type tP_FailureCause optional, /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */ + TP_ParameterIndicator_Type tP_ParameterIndicator, /* 23.040 cl. 9.2.3.27 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..159) optional /* 23.040 cl. 9.2.3.24 */ +}; + +type record SMS_SUBMIT_Type { /* 23.040 cl. 9.2.2.2 + Direction: ue -> n */ + B1_Type tP_ReplyPath, /* 23.040 cl. 9.2.3.17 */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatusReportRequest, /* 23.040 cl. 9.2.3.5 */ + B2_Type tP_ValidityPeriodFormat, /* 23.040 cl. 9.2.3.3 */ + B1_Type tP_RejectDuplicates, /* 23.040 cl. 9.2.3.25 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, /* 23.040 cl. 9.2.3.6 */ + TP_Address_Type tP_DestinationAddress, /* 23.040 cl. 9.1.2.5 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type, /* 23.040 cl. 9.2.3.10 */ +// one of the subsequent ValidityPeriod solutions has be removed + TP_ValidityPeriod_Type tP_ValidityPeriod optional, /* 23.040 cl. 9.2.3.12 */ +// TP_ValidityPeriodRelative_Type tP_ValidityPeriodRelative optional, /* 23.040 cl. 9.2.3.12.1 */ +// TP_ValidityPeriodAbsolute_Type tP_ValidityPeriodAbsolute optional, /* 23.040 cl. 9.2.3.12.2 */ +// TP_ValidityPeriodEnhanced_Type tP_ValidityPeriodEnhanced optional, /* 23.040 cl. 9.2.3.12.3 */ + TP_UserDataLength_Type tP_UserDataLength, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..140) optional /* 23.040 cl. 9.2.3.24 */ +}; +type record SMS_SUBMIT_REPORT_Type { /* 23.040 cl. 9.2.2.2a + Direction: n -> ue */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B4_Type spare4, /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + O1_Type tP_FailureCause optional, /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */ + TP_ParameterIndicator_Type tP_ParameterIndicator, /* 23.040 cl. 9.2.3.27 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, /* 23.040 cl. 9.2.3.11 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..152) optional /* 23.040 cl. 9.2.3.24 */ +}; + +type record SMS_STATUS_REPORT_Type { /* 23.040 cl. 9.2.2.3 + Direction: n -> ue */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatusReportQualifier, /* 23.040 cl. 9.2.3.26 */ + B2_Type spare2, /* */ + B1_Type tP_MoreMessagesToSend, /* 23.040 cl. 9.2.3.2 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, /* 23.040 cl. 9.2.3.6 */ + TP_Address_Type tP_RecipientAddress, /* 23.040 cl. 9.1.2.5 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, /* 23.040 cl. 9.2.3.11 */ + TP_ServiceCentreTimeStamp_Type tP_DischargeTime, /* 23.040 cl. 9.2.3.12 */ + TP_Status_Type tP_Status, /* 23.040 cl. 9.2.3.15 */ + TP_ParameterIndicator_Type tP_ParameterIndicator optional, /* 23.040 cl. 9.2.3.27 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..143) optional /* 23.040 cl. 9.2.3.24 */ +}; + +type record SMS_COMMAND_Type { /* 23.040 cl. 9.2.2.4 + Direction: ue -> n */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatRptReq, /* Table 8.4/3GPP TS 24.011 */ + B3_Type spare3, /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, /* 23.040 cl. 9.2.3.6 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, /* 23.040 cl. 9.2.3.9 */ + TP_Command_Type tP_CommandType, /* 23.040 cl. 9.2.3.19 */ + TP_MessageReference_Type tP_MessageNumber, /* 23.040 cl. 9.2.3.18 */ + TP_Address_Type tP_DestinationAddress, /* 23.040 cl. 9.1.2.5 */ + TP_UserDataLength_Type tP_CommandDataLength, /* 23.040 cl. 9.2.3.20 (number of octets) */ + octetstring tP_CommandData length (0..156) optional /* 23.040 cl. 9.2.3.21 */ +}; + +type union TP_PDU_Type { + SMS_DELIVER_Type SMS_DELIVER, + SMS_DELIVER_REPORT_Type SMS_DELIVER_REPORT, + SMS_SUBMIT_Type SMS_SUBMIT, + SMS_SUBMIT_REPORT_Type SMS_SUBMIT_REPORT, + SMS_STATUS_REPORT_Type SMS_STATUS_REPORT, + SMS_COMMAND_Type SMS_COMMAND +}; + +/* End SM-TP PDU Declarations */ + +} with { encode "SMS Types"} // group SMS_Declarations + +group SMS_UDH_Declarations { + +type record TP_UDH_ConcSMS_Type { /* 23.040 cl. 9.2.3.24 */ + O1_Type tP_UserDataHeaderMsgRef, /* 23.040 cl. 9.2.3.24.1 */ + O1_Type tP_UserDataHeaderNumSMS, /* 23.040 cl. 9.2.3.24.1 */ + O1_Type tP_UserDataHeaderSN_SMS /* 23.040 cl. 9.2.3.24.1 */ +}; + +type union TP_UDH_Type { + TP_UDH_ConcSMS_Type tP_UDH_ConcSMS +}; + +type record of TP_UDH_IE_Type TP_UDH_IE_Record_Type; + +type record TP_UDH_IE_Type { /* 23.040 cl. 9.2.3.24 */ + // User Data Header IE Type + O1_Type tP_UDH_IEI, /* 23.040 cl. 9.2.3.24.1 */ + O1_Type tP_UDH_IEL, /* 23.040 cl. 9.2.3.24.1 */ + TP_UDH_Type tP_UDH +}; + +type record TP_UserDataHeader_Type { /* 23.040 cl. 9.2.3.24.1 */ + // User Data Header Type + O1_Type tP_UserDataHeaderLength, /* 23.040 cl. 9.2.3.24.1 */ + TP_UDH_IE_Record_Type tP_UDH_IE_Record, + octetstring tP_UserData /* 23.040 cl. 9.2.3.24, derived from SUBMIT */ +}; + + +} with { encode "SMS_UDH Types"} // group UDH_Declarations + +} // module diff --git a/ttcn/Lib3GPP/NAS/module.mk b/ttcn/Lib3GPP/NAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..0a03e6179b963edb01d71f68aa4e0ba4037dd0ff --- /dev/null +++ b/ttcn/Lib3GPP/NAS/module.mk @@ -0,0 +1,10 @@ +sources := \ + NAS_AuthenticationCommon.ttcn \ + NAS_CommonTemplates.ttcn \ + NAS_EncdecDeclarations.ttcn \ + NAS_AuxiliaryDefsAndFunctions.ttcn \ + NAS_CommonTypeDefs.ttcn + ##SMS_Templates.ttcn + ##SMS_TypeDefs.ttcn \ + +#modules :=\ diff --git a/ttcn/Lib3GPP/NG_NAS/EAP_TypeDefs.ttcn b/ttcn/Lib3GPP/NG_NAS/EAP_TypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9db4601aec73697691f972d496f618bac39fd309 --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/EAP_TypeDefs.ttcn @@ -0,0 +1,287 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2020-08-03 13:31:16 +0200 (Mon, 03 Aug 2020) $ +// $Rev: 28340 $ +/******************************************************************************/ + +module EAP_TypeDefs { + + import from CommonDefs all; + +function f_HMAC_SHA_256(bitstring p_Key, + octetstring p_String) return B256_Type + { + return fx_KeyDerivationFunction(tsc_KDF_HMAC_SHA_256, p_Key, p_String); + } + +function f_ExtendedEAPAKA_PRF(bitstring p_Key, + octetstring p_String, + integer p_NumberOfOutputBits := 1664) return bitstring // @sic R5s201020 sic@ + { /* PRF' defined for extended EAP-AKA (EAP-AKA') as according to RFC 5448 clause 3.4.1 */ + var integer v_BlockSize := 256; // HMAC-SHA-256 returns 256 bits + var integer N := (p_NumberOfOutputBits + v_BlockSize - 1) / v_BlockSize; + var octetstring v_String; + var bitstring v_T_i := ''B; + var bitstring v_MK := ''B; + var integer i; + + for (i := 0; i < N; i := i + 1) { + v_String := bit2oct(v_T_i) & p_String & int2oct(i+1, 1); + v_T_i := f_HMAC_SHA_256(p_Key, v_String); + v_MK := v_MK & v_T_i; + } + return substr(v_MK, 0, p_NumberOfOutputBits); + } + + /* Extensible Authentication Protocol (EAP) messages + * according to RFC 5448 which refers in turn to RFC 4187 and RFC 3748 + */ + type union EAP_Message_Type { + EAP_Request_Type akaId_Req, // RFC 4187 cl. 9.1 + EAP_Response_Type akaId_Rsp, // RFC 4187 cl. 9.2 + EAP_Request_Type akaChallenge_Req, // RFC 4187 cl. 9.3 + EAP_Response_Type akaChallenge_Rsp, // RFC 4187 cl. 9.4 + EAP_Response_Type akaAuthReject, // RFC 4187 cl. 9.5 + EAP_Response_Type akaSynchronizationFailure, // RFC 4187 cl. 9.6 + EAP_Request_Type akaReauthentication_Req, // RFC 4187 cl. 9.7 + EAP_Response_Type akaReauthentication_Rsp, // RFC 4187 cl. 9.8 + EAP_Response_Type akaClientError, // RFC 4187 cl. 9.9 + EAP_Request_Type akaNotification_Req, // RFC 4187 cl. 9.10 + EAP_Response_Type akaNotification_Rsp, // RFC 4187 cl. 9.11 + EAP_Success_Type success, // RFC 3748 cl. 4.2 + EAP_Failure_Type failure // RFC 3748 cl. 4.2 + }; + + type record EAP_Request_Type{ + O1_Type code ('01'O), // RFC 4187 cl. 8.1 + O1_Type id, // RFC 3748 cl. 4 + O2_Type len, // RFC 3748 cl. 4 - To be computed by the encoder + O1_Type type_ ('32'O), // RFC 5448 cl. 6.1 + O1_Type subtype, // To be set as in RFC 4187 cl. 11 + O2_Type reserved, // Set to 0 when sending, ignored by the receiver + EAP_Attributes attributes + }; + + type record EAP_Response_Type { + O1_Type code ('02'O), // RFC 4187 cl. 8.1 + O1_Type id, // RFC 3748 cl. 4 + O2_Type len, // RFC 3748 cl. 4 - To be computed by the encoder + O1_Type type_ ('32'O), // RFC 5448 cl. 6.1 + O1_Type subtype, // To be set as in RFC 4187 cl. 11 + O2_Type reserved, // Set to 0 when sending, ignored by the receiver + EAP_Attributes attributes optional // @sic R5-201116 sic@ + }; + + type record EAP_Success_Type { + O1_Type code ('03'O), // RFC 3748 cl. 4.2 + O1_Type id, + O2_Type len ('0004'O) // RFC 3748 cl. 4.1 + }; + + type record EAP_Failure_Type { + O1_Type code ('04'O), // RFC 3748 cl. 4.2 + O1_Type id, + O2_Type len ('0004'O) // RFC 3748 cl. 4.1 + }; + + + type set EAP_Attributes { + EAP_AT_RAND rand optional, + EAP_AT_AUTN autn optional, + EAP_AT_RES res optional, + EAP_AT_AUTS auts optional, + EAP_AT_PADDING padd optional, + EAP_AT_PERMANENT_ID_REQ permIdReq optional, + EAP_AT_MAC mac optional, + EAP_AT_NOTIFICATION notification optional, + EAP_AT_ANY_ID_REQ anyIdReq optional, + EAP_AT_IDENTITY id optional, + EAP_AT_VERSION_LIST versionList optional, + EAP_AT_SELECTED_VERSION selectedVersion optional, + EAP_AT_FULLAUTH_ID_REQ fullauthIdReq optional, + EAP_AT_COUNTER counter optional, + EAP_AT_COUNTER_TOO_SMALL counterTooSmall optional, + EAP_AT_NONCE_S nonceS optional, + EAP_AT_CLIENT_ERROR_CODE clientErrorCode optional, + EAP_AT_IV iv optional, + EAP_AT_NEXT_PSEUDONYM nextPseudonym optional, + EAP_AT_NEXT_REAUTH_ID nextReauthId optional, + EAP_AT_CHECKCODE checkCode optional, + EAP_AT_RESULT_IND resultInd optional, + EAP_AT_KDF_INPUT kdfInput optional, + EAP_AT_KDF kdf optional + }; + + type record EAP_AT_PERMANENT_ID_REQ { + // RFC 4187 cl. 10.2 + O1_Type attributeType ('0A'O), + O1_Type len ('01'O), + O2_Type reserved + }; + type record EAP_AT_ANY_ID_REQ { + // RFC 4187 cl. 10.3 + O1_Type attributeType ('0D'O), + O1_Type len ('01'O), + O2_Type reserved + }; + type record EAP_AT_FULLAUTH_ID_REQ { + // RFC 4187 cl. 10.4 + O1_Type attributeType ('11'O), + O1_Type len ('01'O), + O2_Type reserved + }; + type record EAP_AT_IDENTITY { + // RFC 4187 cl. 10.5 + O1_Type attributeType ('0E'O), + O1_Type len, + O2_Type actualIdlen, + octetstring id + }; + type record EAP_AT_RAND { + // RFC 4187 cl. 10.6 + O1_Type attributeType ('01'O), + O1_Type len ('05'O), + O2_Type reserved, + O16_Type rand + }; + type record EAP_AT_AUTN { + // RFC 4187 cl. 10.7 + O1_Type attributeType ('02'O), + O1_Type len ('05'O), + O2_Type reserved, + O16_Type autn + }; + type record EAP_AT_RES { + // RFC 4187 cl. 10.8 + O1_Type attributeType ('03'O), + O1_Type len, + O2_Type reslen, + octetstring res + }; + type record EAP_AT_AUTS { + // RFC 4187 cl. 10.9 + O1_Type attributeType ('04'O), + O1_Type len ('04'O), + O14_Type auts + }; + type record EAP_AT_NEXT_PSEUDONYM { + // RFC 4187 cl. 10.10 + O1_Type attributeType ('84'O), + O1_Type len, + O2_Type actualPseudonymlen, + octetstring nextPseudonym + }; + type record EAP_AT_NEXT_REAUTH_ID { + // RFC 4187 cl. 10.11 + O1_Type attributeType ('85'O), + O1_Type len, + O2_Type actualReAuthIdlen, + octetstring actualReAuthId + }; + type record EAP_AT_IV { + // RFC 4187 cl. 10.12 + O1_Type attributeType ('81'O), + O1_Type len ('05'O), + O2_Type reserved, + O16_Type autn + }; + type record EAP_AT_ENCR_DATA { + // RFC 4187 cl. 10.12 + O1_Type attributeType ('82'O), + O1_Type len, + O2_Type reserved, + octetstring encrData + }; + type record EAP_AT_PADDING { + // RFC 4187 cl. 10.12 + O1_Type attributeType ('06'O), + O1_Type len, + octetstring padding + }; + type record EAP_AT_CHECKCODE { + // RFC 4187 cl. 10.13 + O1_Type attributeType ('86'O), + O1_Type len, + O2_Type reserved, + octetstring checkCode optional + }; + type record EAP_AT_RESULT_IND { + // RFC 4187 cl. 10.14 + O1_Type attributeType ('87'O), + O1_Type len ('01'O), + O2_Type reserved + }; + type record EAP_AT_MAC { + // RFC 4187 cl. 10.15 + O1_Type attributeType ('0B'O), + O1_Type len ('05'O), + O2_Type reserved, + O16_Type mac + }; + type record EAP_AT_COUNTER { + // RFC 4187 cl. 10.16 + O1_Type attributeType ('13'O), + O1_Type len ('01'O), + O2_Type counter + }; + type record EAP_AT_COUNTER_TOO_SMALL { + // RFC 4187 cl. 10.17 + O1_Type attributeType ('14'O), + O1_Type len ('01'O), + O2_Type reserved + }; + type record EAP_AT_NONCE_S { + // RFC 4187 cl. 10.18 + O1_Type attributeType ('15'O), + O1_Type len ('05'O), + O2_Type reserved, + O16_Type nonceS + }; + type record EAP_AT_NOTIFICATION { + // RFC 4187 cl. 10.19 + O1_Type attributeType ('0C'O), + O1_Type len ('01'O), + B1_Type s, + B1_Type p, + B14_Type notificationCode + }; + type record EAP_AT_CLIENT_ERROR_CODE { + // RFC 4187 cl. 10.20 + O1_Type attributeType ('16'O), + O1_Type len ('01'O), + O2_Type clientErrorCode + }; + type record EAP_AT_VERSION_LIST { + // RFC 4187 cl. 11 + O1_Type attributeType ('0F'O), + O1_Type len, + octetstring versionList + }; + type record EAP_AT_SELECTED_VERSION { + // RFC 4187 cl. 11 + O1_Type attributeType ('10'O), + O1_Type len, + octetstring selectedVersion + }; + + type record EAP_AT_KDF_INPUT { + // RFC 5448 cl. 3.1 + O1_Type attributeType ('17'O), + O1_Type len, + O2_Type actualNetworkNamelen, + octetstring networkName + }; + + type record EAP_AT_KDF { + // RFC 5448 cl. 3.2 + O1_Type attributeType ('18'O), + O1_Type len ('01'O), + O2_Type keyDerivationFunction // Should be '01'O for EAP-AKA' which is the one used in this protocol + }; + +} with { encode "EAP Types"} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NASTemplateFunctions.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NASTemplateFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..de2c4eee8dd0ca90f2f52dbfefeecd543ee6309e --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NASTemplateFunctions.ttcn @@ -0,0 +1,2697 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-09-14 09:54:06 +0200 (Thu, 14 Sep 2023) $ +// $Rev: 37128 $ +/******************************************************************************/ + +module NG_NASTemplateFunctions { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NG_NAS_MsgContainers all; + import from NG_NAS_TypeDefs all; + import from NG_NAS_Templates all; + import from NG_NAS_Common all; + import from NAS_CommonTemplates all; + import from NG_NAS_SecurityFunctions all; + import from NAS_AuthenticationCommon all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from CommonIP all; + import from NAS_5GC_Parameters all; + import from Parameters all; + import from NR_Parameters all; + import from EAP_TypeDefs all; + import from TestcaseProperties all; + + //---------------------------------------------------------------------------- + /* + * @desc check the REGISTRATION REQUEST + * @param p_GMM_MobilityInfo (by reference) + * @param p_ReceivedMsgs + * @param p_RegType + * @param p_GUTI (default value: ?) + * @param p_KeySetId (default value: ?) + * @param p_Tsc (default value: ?) + * @param p_NonCurrentKSI (default value: *) + * @param p_GMM_Cap (default value: *) + * @param p_UESecurityCap (default value: *) + * @param p_ReqNSSAI (default value: *) + * @param p_TAI (default value: *) + * @param p_UE_NetworkCap (default value: *) + * @param p_ULDataStatus (default value: *) + * @param p_PDU_SessionStatus (default value: *) + * @param p_MICO_Ind (default value: *) + * @param p_UE_Status (default value: *) + * @param p_AddGUTI (default value: *) + * @param p_AllowedPDU_SessionStatus (default value: *) + * @param p_UE_UsageSetting (default value: *) + * @param p_DRXparam (default value: *) + * @param p_EPSMsg (default value: *) + * @param p_LADN_Ind (default value: *) + * @param p_Payload (default value: *) + * @param p_ContainerType (default value: cr_PayloadContainerType ('0101'B) ifpresent + * @param + * @param p_NetworkSlicingInd (default value: *) + * @param p_NG_UpdateType (default value: *) + * @param p_MS_Clsmk2 (default value: *) + * @param p_SupportedCodecs (default value: *) + * @param p_EPS_BearerContextStatus (default value: *) + * @param p_ExtdDRXParams (default value: *) + * @param p_T3324 (default value: *) + * @param p_UERadioCapId (default value: *) + * @param p_MappedNSSAI (default value: *) + * @param p_AddInfoRequest (default value: *) + * @param p_WUSAssistInfo (default value: *) + * @param p_N5GCInd (default value: *) + * @param p_NB_N1ModeDRXParams (default value: *) + * @param p_UeRequestType (default value: *) + * @param p_PagingRestrict (default value: *) + * @param p_ServiceLvlAA (default value: *) + * @param p_NId (default value: *) + * @param p_MSPLMNwDisasterCondition (default value: *) + * @param p_RequestedPEIPS_AssistInfo (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_RegistrationReqMsg(out GMM_MobilityInfo_Type p_GMM_MobilityInfo, + NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) TypeOfRegistration_Type p_RegType, + template (present) NG_MobileIdentity p_GUTI := ?, + template (present) NAS_KsiValue p_KeySetId := ?, + template (present) B1_Type p_Tsc := ?, + template NAS_KeySetIdentifier p_NonCurrentKSI := *, + template NG_GMM_Cap p_GMM_Cap := *, + template NG_UE_SecurityCapability p_UESecurityCap := *, + template NSSAI p_ReqNSSAI := *, + template NG_TrackingAreaId p_TAI := *, + template UE_NetworkCap p_UE_NetworkCap := *, + template ULDataStatus p_ULDataStatus := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template MICO_Ind p_MICO_Ind := *, + template UE_Status p_UE_Status := *, + template NG_MobileIdentity p_AddGUTI := *, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := *, + template UE_UsageSetting p_UE_UsageSetting := *, + template NG_DRXparameter p_DRXparam := *, + template EPS_MessageContainer p_EPSMsg := *, + template LADN_Ind p_LADN_Ind := *, + template PayloadContainer p_Payload := *, + template PayloadContainerType p_ContainerType := cr_PayloadContainerType ('0101'B, '8'H) ifpresent, // @sic R5w190113, R5-216156 sic@ + template NetworkSlicingInd p_NetworkSlicingInd := *, + template NG_UpdateType p_NG_UpdateType := *, + template MS_Clsmk2 p_MS_Clsmk2 := *, + template CodecList p_SupportedCodecs := *, + template EPS_BearerContextStatus p_EPS_BearerContextStatus := *, // @sic R5s190543 sic@ + template ExtdDRXParams p_ExtdDRXParams := *, + template GPRS_Timer3 p_T3324 := *, + template UERadioCapId p_UERadioCapId := *, + template MappedNSSAI p_MappedNSSAI := *, + template AddInfoRequest p_AddInfoRequest := *, + template WUSAssistInfo p_WUSAssistInfo := *, + template N5GCInd p_N5GCInd := *, + template NB_N1ModeDRXParams p_NB_N1ModeDRXParams := *, + template UE_RequestType p_UeRequestType := *, + template NG_PagingRestriction p_PagingRestrict := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template NID p_NId := *, + template PLMN_IdIE p_MSPLMNwDisasterCondition := *, + template PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := *, + template GPRS_Timer3 p_T3512 := *) return boolean + { + var NG_NAS_UL_Message_Type v_NASMsg; + var boolean v_Result := false; + var template (present) RegistrationType v_RegistrationType; + + v_NASMsg := p_ReceivedMsgs.Msg; + + if (isvalue(p_RegType)) { // @sic R5s200436 sic@ + select (valueof(p_RegType)) { // @sic R5-201143 sic@ + case (Mobility) { + v_RegistrationType := cr_RegistrationType(tsc_NG_RegistrationMobility, ?); + } + case (Periodic) { + v_RegistrationType := cr_RegistrationType(tsc_NG_RegistrationPeriodic, ?); + } + case (Emergency) { + v_RegistrationType := cr_RegistrationType(tsc_NG_RegistrationEmergency, '1'B); + } + case (SNPN_Onboarding) { // @sic R5-233987 sic@ + v_RegistrationType := cr_RegistrationType(tsc_NG_RegistrationSNPN, ?); + } + case else { + v_RegistrationType := cr_RegistrationType(tsc_NG_RegistrationInitial, ?); + // Check the 'first' message to make sure it only includes cleartext IEs + if (not match (v_NASMsg, cr_NG_REGISTRATION_REQUEST(v_RegistrationType, // @sic R5-196637 sic@ + p_KeySetId, + p_Tsc, + p_GUTI, + omit, + omit, + p_UESecurityCap, + omit, + omit, + omit, + omit, + omit, + omit, + p_UE_Status, // default * + p_AddGUTI, // default * + omit, + omit, + omit, + p_EPSMsg, // default * + omit, + omit, + omit, + omit, + omit, + omit, + omit, // @sic R5s201387 Baseline Moving sic@ + omit, // @sic R5s201387 Baseline Moving sic@ + *, + omit, // @sic R5s201387 Baseline Moving sic@ + omit, + omit, + omit, + omit, + omit, + omit, + omit, + omit, // @sic R5s221179 Baseline Moving sic@ + omit, // @sic R5s221179 Baseline Moving sic@ + omit, // @sic R5s221179 Baseline Moving sic@ + omit, // @sic R5s221179 Baseline Moving sic@ + omit, // @sic R5s221179 Baseline Moving sic@ + omit, // @sic R5s230533 sic@ + omit))) { + FatalError(__FILE__, __LINE__, "Initial Registration Req included non-cleartext IEs"); + } + } // @sic R5s200309 sic@ + } + } else { // @sic R5s200436 sic@ + v_RegistrationType := cr_RegistrationType((tsc_NG_RegistrationInitial, tsc_NG_RegistrationMobility), ?); + } + if (isvalue(p_ReceivedMsgs.PiggybackedPduList)) { + /* this will be the un-ciphered message from the NAS Container + if the SS couldn't decipher the message (because it doesn't have the security context, e.g. at the start of a test) + this field will be set to omit + */ + v_NASMsg := valueof(p_ReceivedMsgs.PiggybackedPduList[0].Msg); + } + + // Now check the full message, if present, against all expected values + if (match (v_NASMsg, cr_NG_REGISTRATION_REQUEST(v_RegistrationType, // @sic R5-196637 sic@ + p_KeySetId, + p_Tsc, + p_GUTI, + p_NonCurrentKSI, + p_GMM_Cap, + p_UESecurityCap, + p_ReqNSSAI, + p_TAI, + p_UE_NetworkCap, + p_ULDataStatus, + p_PDU_SessionStatus, + p_MICO_Ind, + p_UE_Status, + p_AddGUTI, + p_AllowedPDU_SessionStatus, + p_UE_UsageSetting, + p_DRXparam, + p_EPSMsg, + p_LADN_Ind, + p_ContainerType, + p_Payload, + p_NetworkSlicingInd, + p_NG_UpdateType, + p_MS_Clsmk2, // @sic R5s201387 Baseline Moving sic@ + p_SupportedCodecs, // @sic R5s201387 Baseline Moving sic@ + p_EPS_BearerContextStatus, + *, + p_ExtdDRXParams, // @sic R5s201387 Baseline Moving sic@ + p_T3324, + p_UERadioCapId, + p_MappedNSSAI, + p_AddInfoRequest, + p_WUSAssistInfo, + p_N5GCInd, + p_NB_N1ModeDRXParams, + p_UeRequestType, // @sic R5s221179 Baseline Moving sic@ + p_PagingRestrict, + p_ServiceLvlAA, + p_NId, + p_MSPLMNwDisasterCondition, + p_RequestedPEIPS_AssistInfo, + p_T3512))) { // @sic R5s230533 sic@ + v_Result := true; + } + // Finally, store the values received + p_GMM_MobilityInfo.Guti := v_NASMsg.registration_Request.ngMobileId; + if (ispresent(v_NASMsg.registration_Request.gmmCapability)) { + p_GMM_MobilityInfo.GMMCap := v_NASMsg.registration_Request.gmmCapability; + } else { + p_GMM_MobilityInfo.GMMCap := omit; + } + if (ispresent(v_NASMsg.registration_Request.ueSecurityCapability)) { + p_GMM_MobilityInfo.UECap := v_NASMsg.registration_Request.ueSecurityCapability; + } else { + p_GMM_MobilityInfo.UECap := omit; + } + if (ispresent(v_NASMsg.registration_Request.s1_UE_Capability)) { // @sic R5s190285 sic@ + p_GMM_MobilityInfo.S1NwkCap := v_NASMsg.registration_Request.s1_UE_Capability; + } else { + p_GMM_MobilityInfo.S1NwkCap := omit; + } + if (ispresent(v_NASMsg.registration_Request.pduSessionStatus)) { + p_GMM_MobilityInfo.SessionStatus := v_NASMsg.registration_Request.pduSessionStatus; + } else { + p_GMM_MobilityInfo.SessionStatus := omit; + } + if (ispresent(v_NASMsg.registration_Request.epsBearerContextStatus)) { // @sic R5-206426 sic@ + p_GMM_MobilityInfo.EPSBearerStatus := v_NASMsg.registration_Request.epsBearerContextStatus; + } else { + p_GMM_MobilityInfo.EPSBearerStatus := omit; + } + if (ispresent(v_NASMsg.registration_Request.ueRadioCapabilityId)) { // @sic R5-206419 sic@ + p_GMM_MobilityInfo.UERadioCapId := v_NASMsg.registration_Request.ueRadioCapabilityId; + } else { + p_GMM_MobilityInfo.UERadioCapId := omit; + } + return v_Result; + } + + /* + * @desc build the REGISTRATION ACCEPT + * @param p_RegType + * @param p_GMM_MobilityInfo + * @param p_GUTI + * @param p_TAIList + * @param p_EPLMNs (default value: omit) + * @param p_AllowedNSSAI (default value: cs_NSSAI_Allowed_Def) + * @param p_RejectedNSSAI (default value: omit) + * @param p_ConfiguredNSSAI (default value: omit) + * @param p_NwkFeatureSupport (default value: cs_NG_NetworkFeatureSupport_Def) + * @param p_PDU_SessionStatus (default value: omit) + * @param p_PDU_SessionReactResult (default value: omit) + * @param p_PDU_SessionReactError (default value: omit) + * @param p_LADN_Info (default value: omit) + * @param p_MICO_Ind (default value: omit) + * @param p_NetworkSlicingInd (default value: omit) + * @param p_SAIList (default value: omit) + * @param p_T3512 (default value: omit) + * @param p_Non3GPPDereg (default value: omit) + * @param p_T3502 (default value: omit) + * @param p_EmergNumList (default value: omit) + * @param p_ExtdEmergNumList (default value: omit) + * @param p_SOR (default value: omit) + * @param p_EAP (default value: omit) + * @param p_InclusionModeNSSAI (default value: omit) + * @param p_AccessCatDefinition (default value: omit) + * @param p_NG_DRXparameter (default value: omit) + * @param p_Non3GPP_NW_ProvidedPolicies (default value: omit) + * @param p_EPS_BearerContextStatus (default value: omit) + * @param p_Access (default value: Access_3GPP) + * @param p_SMSOverNAS (default value: '0'B) + * @param p_EmergencyRegistered (default value: '0'B) + * @param p_NssaaPerformed (default value: '0'B) + * @param p_NegotiatedExtdDRXParams (default value: omit) + * @param p_T3447 (default value: omit) + * @param p_T3448 (default value: omit) + * @param p_T3324 (default value: omit) + * @param p_UERadioCapId (default value: omit) + * @param p_UERadioCapIdDeletion (default value: omit) + * @param p_PendingNSSAI (default value: omit) + * @param p_CipheringKeyData (default value: omit) + * @param p_CAGInfoList (default value: omit) + * @param p_TruncatedS_TMSIConfig (default value: omit) + * @param p_WUSAssistInfo (default value: omit) + * @param p_NB_N1ModeDRXParams (default value: omit) + * @param p_ExtdRejectedNSSAI (default value: omit) + * @param p_ServiceLvlAA (default value: omit) + * @param p_NegotiatedPEIPS_AssistInfo (default value: omit) + * @param p_AddRequestResult (default value: omit) + * @param p_NssrgInfo (default value: omit) + * @param p_DisasterRoamingWaitRange (default value: omit) + * @param p_DisasterReturnWaitRange (default value: omit) + * @param p_DisasterPLMNList (default value: omit) + * @param p_ForbidTAIList_Roaming (default value: omit) + * @param p_ForbidTAIList_RegProvService (default value: omit) + * @param p_ExtdCAGInfoList (default value: omit) + * @param p_NsagInfo (default value: omit) + * @param p_DisasterRoamingResult (default value: '0'B) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_RegistrationAcceptMsg(TypeOfRegistration_Type p_RegType, + GMM_MobilityInfo_Type p_GMM_MobilityInfo, // @sic R5-206426 sic@ + template (omit) NG_MobileIdentity p_GUTI, // @sic R5s190719 sic@ + template (omit) NG_TrackingAreaIdList p_TAIList, + template (omit) PLMN_List p_EPLMNs := omit, + template (omit) NSSAI p_AllowedNSSAI := cs_NSSAI_Allowed_Def, // @sic R5s190109, R5-216256 sic@ + template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + template (omit) NSSAI p_ConfiguredNSSAI := omit, + template (omit) NG_NetworkFeatureSupport p_NwkFeatureSupport := cs_NG_NetworkFeatureSupport_Def, + template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + template (omit) PDU_SessionReactivationResult p_PDU_SessionReactResult := omit, + template (omit) PDU_SessionReactivationError p_PDU_SessionReactError := omit, + template (omit) LADN_Info p_LADN_Info := omit, + template (omit) MICO_Ind p_MICO_Ind := omit, + template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + template (omit) ServiceAreaIdList p_SAIList := omit, + template (omit) GPRS_Timer3 p_T3512 := omit, + template (omit) GPRS_Timer2 p_Non3GPPDereg := omit, + template (omit) GPRS_Timer2 p_T3502 := omit, + template (omit) EmergNumList p_EmergNumList := omit, + template (omit) ExtdEmergNumList p_ExtdEmergNumList := omit, + template (omit) SORTransparentContainer p_SOR := omit, + template (omit) EAP_Message p_EAP := omit, + template (omit) InclusionModeNSSAI p_InclusionModeNSSAI := omit, + template (omit) OperatorAccessCatDefinitions p_AccessCatDefinition := omit, + template (omit) NG_DRXparameter p_NG_DRXparameter := omit, + template (omit) Non3GPP_NW_ProvidedPolicies p_Non3GPP_NW_ProvidedPolicies := omit, + template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + RegistrationAccessType p_Access := Access_3GPP, + B1_Type p_SMSOverNAS := '0'B, + B1_Type p_EmergencyRegistered := '0'B, // @sic R5s201387 Baseline Moving sic@ + B1_Type p_NssaaPerformed := '0'B, // @sic R5s201387 Baseline Moving sic@ + template (omit) ExtdDRXParams p_NegotiatedExtdDRXParams := omit, // @sic R5s201387 Baseline Moving sic@ + template (omit) GPRS_Timer3 p_T3447 := omit, // @sic R5s201387 Baseline Moving sic@ + template (omit) GPRS_Timer3 p_T3448 := omit, + template (omit) GPRS_Timer3 p_T3324 := omit, + template (omit) UERadioCapId p_UERadioCapId := omit, + template (omit) UERadioCapIdDeletion p_UERadioCapIdDeletion := omit, + template (omit) NSSAI p_PendingNSSAI := omit, + template (omit) NG_CipheringKeyData p_CipheringKeyData := omit, + template (omit) CAGInfoList p_CAGInfoList := omit, + template (omit) TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig := omit, + template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + template (omit) PEIPS_AssistInfo p_NegotiatedPEIPS_AssistInfo := omit, + template (omit) NG_AddReqResult p_AddRequestResult := omit, + template (omit) NSSRG_Info p_NssrgInfo := omit, + template (omit) RegistrationWaitRange p_DisasterRoamingWaitRange := omit, + template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + template (omit) DisasterPLMNList p_DisasterPLMNList := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit, + template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + template (omit) NSAG_Info p_NsagInfo := omit, + B1_Type p_DisasterRoamingResult := '0'B) return template (value) NG_NAS_DL_Message_Type + { + var template (value) NG_NAS_DL_Message_Type v_NASMsg; + var B3_Type v_Access; + var template (omit) NG_NetworkFeatureSupport v_NwkFeatureSupport := p_NwkFeatureSupport; + var template (omit) GPRS_Timer3 v_T3512 := omit; + var template (omit) PDU_SessionStatus v_PDU_SessionStatus; + var template (omit) EPS_BearerContextStatus v_EPS_BearerContextStatus; + var template (omit) UERadioCapId v_UERadioCapId := omit; + + select (p_Access) { + case (Access_3GPP) { + v_Access := tsc_NG_RegResult_3GPP; + } + case (Non3GPP) { + v_Access := tsc_NG_RegResult_Non3GPP; + } + case (Both_3GPP_Non3GPP) { + v_Access := tsc_NG_RegResult_Both; + } + case else { + FatalError(__FILE__, __LINE__, "invalid access type"); + } + } + if (isvalue(p_T3512)) { + v_T3512 := p_T3512; + } else { + select (p_RegType) { + case (Mobility, Periodic) { // Do nothing + } + case (Emergency) { // @sic R5-196637 R5-198540 sic@ + } + case (Initial_NoSecurity, Initial_Secure) { + v_T3512 := cs_GPRS_Timer2_3_IEI ('5E'O, '111'B, '00000'B); + } + } + } + if (isvalue(p_PDU_SessionStatus)) { // @sic R5-206426 sic@ + v_PDU_SessionStatus := p_PDU_SessionStatus; + } else { + v_PDU_SessionStatus := p_GMM_MobilityInfo.SessionStatus; + } + if (isvalue(p_EPS_BearerContextStatus)) { // @sic R5-206426 sic@ + v_EPS_BearerContextStatus := p_EPS_BearerContextStatus; + } else { + v_EPS_BearerContextStatus := p_GMM_MobilityInfo.EPSBearerStatus; + } + + if (isvalue(p_UERadioCapId)) { // @sic R5-206419 sic@ + v_UERadioCapId := p_UERadioCapId; + } else if (pc_5GC_RACS) { + v_UERadioCapId := p_GMM_MobilityInfo.UERadioCapId; + } + + // if (p_GSM_MobilityInfo.PDUType == SST_URLLC or SST_V2X ) v_NwkFeatureSupport := omit FFS + v_NASMsg := cs_NG_REGISTRATION_ACCEPT(cs_RegistrationResult (v_Access, p_SMSOverNAS, p_EmergencyRegistered, p_NssaaPerformed, p_DisasterRoamingResult), // @sic R5s221179 Baseline Moving sic@ + p_GUTI, + p_EPLMNs, + p_TAIList, + p_AllowedNSSAI, + p_RejectedNSSAI, + p_ConfiguredNSSAI, + v_NwkFeatureSupport, + v_PDU_SessionStatus, + p_PDU_SessionReactResult, + p_PDU_SessionReactError, + p_LADN_Info, + p_MICO_Ind, + p_NetworkSlicingInd, + p_SAIList, + v_T3512, + p_Non3GPPDereg, + p_T3502, + p_EmergNumList, + p_ExtdEmergNumList, + p_SOR, + p_EAP, + p_InclusionModeNSSAI, + p_AccessCatDefinition, + p_NG_DRXparameter, + p_Non3GPP_NW_ProvidedPolicies, + v_EPS_BearerContextStatus, + p_NegotiatedExtdDRXParams, // @sic R5s201387 Baseline Moving sic@ + p_T3447, + p_T3448, + p_T3324, + v_UERadioCapId, + p_UERadioCapIdDeletion, + p_PendingNSSAI, + p_CipheringKeyData, + p_CAGInfoList, + p_TruncatedS_TMSIConfig, + p_WUSAssistInfo, + p_NB_N1ModeDRXParams, + p_ExtdRejectedNSSAI, // @sic R5s221179 Baseline Moving sic@ + p_ServiceLvlAA, + p_NegotiatedPEIPS_AssistInfo, + p_AddRequestResult, + p_NssrgInfo, + p_DisasterRoamingWaitRange, + p_DisasterReturnWaitRange, + p_DisasterPLMNList, + p_ForbidTAIList_Roaming, + p_ForbidTAIList_RegProvService, + p_ExtdCAGInfoList, + p_NsagInfo); + return v_NASMsg; + } + + /* + * @desc build the SECURITY MODE COMMAND + * @param p_SecurityParams + * @param p_RegType + * @param p_GMM_MobilityInfo + * @param p_IMEISVReq (default value: false) + * @param p_AddInfo (default value: omit) + * @param p_EAP (default value: omit) + * @param p_ABBA (default value: omit) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_SecurityModeCmdMsg(NG_NAS_SecurityParams_Type p_SecurityParams, + TypeOfRegistration_Type p_RegType, + GMM_MobilityInfo_Type p_GMM_MobilityInfo, + boolean p_IMEISVReq := false, + template (omit) AdditionalSecurityInfo p_AddInfo := omit, + template (omit) EAP_Message p_EAP := omit, + template (omit) ABBA p_ABBA := omit) return template (value) NG_NAS_DL_Message_Type + { + var template (value) NG_NAS_DL_Message_Type v_NASMsg; + var template (omit) AdditionalSecurityInfo v_AddInfo := p_AddInfo; + var template (omit) IMEISV_Request v_IMEISV_Request := omit; + var template (omit) NAS_SecurityAlgorithms v_EPSAlgs := omit; + var NG_UE_SecurityCapability v_NG_UE_SecurityCapability; + var template (omit) S1_UE_SecurityCapability v_ReplayedCap := omit; + + if (isvalue(p_GMM_MobilityInfo.UECap)) { // @sic R5s190109 sic@ + v_NG_UE_SecurityCapability := p_GMM_MobilityInfo.UECap; + v_NG_UE_SecurityCapability.iei := omit; + } else { + FatalError(__FILE__, __LINE__, "UE Capabilities not included in Registration Request"); + } + + if (isvalue(p_GMM_MobilityInfo.GMMCap)) { + if (match('1'B, p_GMM_MobilityInfo.GMMCap.s1Cap)) { + v_EPSAlgs := cs_NAS_SecurityAlgorithms(px_NAS_CipheringAlgorithm, px_NAS_IntegrityProtAlgorithm, '57'O); // @sic R5s190285 sic@ + if (isvalue(p_GMM_MobilityInfo.S1NwkCap)) { + v_ReplayedCap.ieValue := f_EPS_FillNAS_SecurityCapability_Common(p_GMM_MobilityInfo.S1NwkCap, omit); // @sic R5s190421 sic@ + v_ReplayedCap.iei := '19'O; // @sic R5s190421 sic@ + } + } + } + + if (p_IMEISVReq) { + v_IMEISV_Request := cds_NG_IMEISV_Request; + } + + if (p_RegType == Initial_NoSecurity) { + // Must ensure UE sends complete initial message if SS doesn't have security + if (isvalue(v_AddInfo)) { + v_AddInfo.rinmr := '1'B; + } else { + v_AddInfo := cs_AdditionalSecurityInfo('1'B); + } + } + v_NASMsg := cs_NG_SECURITY_MODE_COMMAND(cs_NG_NAS_SecurityAlgorithms (p_SecurityParams.NAS_Ciphering.Algorithm, p_SecurityParams.NAS_Integrity.Algorithm), + p_SecurityParams.KSIamf, + v_NG_UE_SecurityCapability, + v_IMEISV_Request, + v_EPSAlgs, + v_AddInfo, + p_EAP, + p_ABBA, + v_ReplayedCap); + return v_NASMsg; + } + + /* + * @desc Check the SECURITY MODE COMPLETE + * @param p_NASMsgs + * @param p_RegType + * @param p_IMEISVReq (default value: false) + * @param p_NonIMEISV_PEI (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_SecurityModeCompleteMsg(NG_NAS_UL_Pdu_Type p_NASMsgs, + TypeOfRegistration_Type p_RegType, + boolean p_IMEISVReq := false, + template NG_MobileIdentity p_NonIMEISV_PEI := *) return boolean + { + var template NG_MobileIdentity v_IMEISV := omit; + var template ReplayedNASMessageContainer v_ExpectedMsg := omit; + + if (p_IMEISVReq) { // if IMEISV is requested + v_IMEISV := f_NG_Imeisv2MobileIdentity (px_IMEISV_Def); + v_IMEISV.iei := '77'O; + } + if (p_RegType == Initial_NoSecurity) { + // don't check the contents here as it's encoded, but it should be present + v_ExpectedMsg := ?; + } + return match(p_NASMsgs.Msg, cr_NG_SECURITY_MODE_COMPLETE (v_IMEISV, v_ExpectedMsg, p_NonIMEISV_PEI)); // @sic R5s201387 Baseline Moving sic@ + } + + /* + * @desc Check the SERVICE REQUEST message + * @param p_ReceivedMsgs + * @param p_KSI + * @param p_S_TMSI + * @param p_ServiceType (default value: '0010'B) + * @param p_ConnectionType (default value: STATE_IDLE_1A) + * @param p_ULDataStatus (default value: *) + * @param p_PDU_SessionStatus (default value: *) + * @param p_AllowedPDU_SessionStatus (default value: *) + * @param p_UeRequestType (default value: *) + * @param p_PagingRestrict (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_ServiceReqMsg(NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) NAS_KeySetIdentifier p_KSI, + template (present) NG_MobileIdentity p_S_TMSI, + template (present) B4_Type p_ServiceType := '0010'B, // @sic R5s190109 sic@ + NG_STATE_Type p_ConnectionType := STATE_IDLE_1A, + template ULDataStatus p_ULDataStatus := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := *, + template UE_RequestType p_UeRequestType := *, + template NG_PagingRestriction p_PagingRestrict := *) return boolean + { + var NG_NAS_UL_Message_Type v_NASMsg; + + v_NASMsg := p_ReceivedMsgs.Msg; + + if (p_ConnectionType == STATE_IDLE_1A) { + // If this is an initial NAS message check the 'first' message to make sure it only includes cleartext IEs + if (not match (v_NASMsg, cr_NG_SERVICE_REQUEST (p_ServiceType, + p_KSI, + p_S_TMSI, + omit, + omit, + omit, + *, + omit, + omit))) { + FatalError(__FILE__, __LINE__, "Initial Service Req included non-cleartext IEs"); + } + if (isvalue(p_ReceivedMsgs.PiggybackedPduList)) { + /* this will be the un-ciphered message from the NAS Container + if the SS couldn't decipher the message (because it doesn't have the security context, e.g. at the start of a test) + this field will be set to omit + */ + v_NASMsg := valueof(p_ReceivedMsgs.PiggybackedPduList[0].Msg); + } + } + // Now check the full message, if present, against all expected values + return match(v_NASMsg, cr_NG_SERVICE_REQUEST (p_ServiceType, + p_KSI, + p_S_TMSI, + p_ULDataStatus, + p_PDU_SessionStatus, + p_AllowedPDU_SessionStatus, + *, + p_UeRequestType, // @sic R5s221179 Baseline Moving sic@ + p_PagingRestrict)); + } + + /* + * @desc Check the CONTROL PLANE SERVICE REQUEST message + * @param p_ReceivedMsgs + * @param p_KSI + * @param p_CP_ServiceType + * @param p_CIoTSmallDataContainer (default value: false) If this is expected, the value must be checked outside this function + * @param p_PayloadContainerType (default value: *) + * @param p_PayloadContainer (default value: *) + * @param p_NG_PDU_SessionId (default value: *) + * @param p_PDU_SessionStatus (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @param p_ULDataStatus (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_ConnectionType (default value: STATE_IDLE_1A) + * @param p_UeRequestType (default value: *) + * @param p_PagingRestrict (default value: *) + * @return boolean + */ + function f_Check_NG_ControlPlaneServiceReqMsg(NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) NAS_KeySetIdentifier p_KSI, + template (present) CP_ServiceType p_CP_ServiceType, + boolean p_CIoTSmallDataContainer := false, + template PayloadContainerType p_PayloadContainerType := *, + template PayloadContainer p_PayloadContainer := *, + template NG_PDU_SessionId p_NG_PDU_SessionId := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *, + template ULDataStatus p_ULDataStatus := omit, + template AdditionalInformation p_AdditionalInfo := *, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus, + template UE_RequestType p_UeRequestType := *, + template NG_PagingRestriction p_PagingRestrict := *, + NG_STATE_Type p_ConnectionType := STATE_IDLE_1A) return boolean + { + var NG_NAS_UL_Message_Type v_NASMsg; + var template CIoTSmallDataRxdString v_SmallData := omit; + + if (p_CIoTSmallDataContainer) { + v_SmallData := ?; + } + v_NASMsg := p_ReceivedMsgs.Msg; + + if (p_ConnectionType == STATE_IDLE_1A) { + // If this is an initial NAS message check the 'first' message to make sure it only includes cleartext IEs + if (not match (v_NASMsg, cr_NG_CP_SERVICE_REQUEST (p_KSI, + p_CP_ServiceType, + v_SmallData, // The small data container may be present, but still ciphered + omit, + omit, + omit, + omit, + omit, + omit, + omit, + omit, + *, + omit, + omit))) { + FatalError(__FILE__, __LINE__, "Initial Service Req included non-cleartext IEs"); + } + if (isvalue(p_ReceivedMsgs.PiggybackedPduList)) { + /* this will be the un-ciphered message + if the SS couldn't decipher the message (because it doesn't have the security context, e.g. at the start of a test) + this field will be set to omit + + This will either be cleartext IEs + unciphered small data container, + or cleartext + noncleartext IEs (but not small data container) + */ + v_NASMsg := valueof(p_ReceivedMsgs.PiggybackedPduList[0].Msg); + } + } + // Now check the full message, if present, against all expected values + return match(v_NASMsg, cr_NG_CP_SERVICE_REQUEST (p_KSI, + p_CP_ServiceType, + v_SmallData, + p_PayloadContainerType, + p_PayloadContainer, + p_NG_PDU_SessionId, + p_PDU_SessionStatus, + p_ReleaseAssistanceInd, + p_ULDataStatus, + p_AdditionalInfo, + p_AllowedPDU_SessionStatus, + *, + p_UeRequestType, // @sic R5s221179 Baseline Moving sic@ + p_PagingRestrict)); + } + + /* + * @desc Check the CIoT Small Data Container in the CONTROL PLANE SERVICE REQUEST message + * @param p_ReceivedIE + * @param p_IEL + * @param p_DataType + * @param p_DDX + * @param p_PduSessionId + * @param p_DataContents + * @param p_LengthOfAddInfo (default value: omit) + * @param p_AddInfo (default value: omit) + * @return boolean + */ + function f_Check_CIoTSmallDataContainer(CIoTSmallDataRxdString p_ReceivedIE, + template (present) B3_Type p_DataType, + template (present) B2_Type p_DDX, /* set to 00 for dataType = 001 */ + template (present) B3_Type p_PduSessionId, /* set to 00 for dataType = 010 or 001 */ + octetstring p_DataContents, + template Type4Length_Type p_LengthOfAddInfo := omit, + template octetstring p_AddInfo := omit) return boolean + { + var template (omit) CIoTSmallDataContainer v_SmallData := fl_Decode_CIoTSmallDataContainer (p_ReceivedIE); + + if (not (isvalue(v_SmallData))){ + return false; + } else { + return match (valueof(v_SmallData), cr_CIoTSmallDataContainer (p_DataType, + p_DDX, + p_PduSessionId, + p_LengthOfAddInfo, + p_AddInfo, + p_DataContents)); + } + } + + /* + * @desc Decode the CIoT Small Data Container in the CONTROL PLANE SERVICE REQUEST message + * @param p_ReceivedIE + * @return template (omit) CIoTSmallDataContainer + */ + function fl_Decode_CIoTSmallDataContainer(CIoTSmallDataRxdString p_ReceivedIE) return template (omit) CIoTSmallDataContainer + { + var template (omit) CIoTSmallDataContainer v_ReturnOmit := omit; + var CIoTSmallDataContainer v_SmallData; + var octetstring v_OctetString := p_ReceivedIE.encodedstring; + var bitstring v_Bitstring := oct2bit(v_OctetString); + + if (decvalue(v_Bitstring, v_SmallData) != 0) { + return v_ReturnOmit; + } else if (p_ReceivedIE.iei != '6F'O) { // check iei separately + return v_ReturnOmit; + } else { + return v_SmallData; + } + } + + /* + * @desc Get the SERVICE ACCEPT message + * @param p_PDU_SessionStatus (default value: omit) + * @param p_PDU_SessionReactivationResult (default value: omit) + * @param p_PDU_SessionReactivationError (default value: omit) + * @param p_EAP (default value: omit) + * @param p_T3448 (default value: omit) + * @param p_AddRequestResult (default value: omit) + * @param p_ForbidTAIList_Roaming (default value: omit) + * @param p_ForbidTAIList_RegProvService (default value: omit) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_ServiceAcceptMsg(template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + template (omit) PDU_SessionReactivationResult p_PDU_SessionReactivationResult := omit, + template (omit) PDU_SessionReactivationError p_PDU_SessionReactivationError := omit, + template (omit) EAP_Message p_EAP := omit, + template (omit) GPRS_Timer2 p_T3448 := omit, + template (omit) NG_AddReqResult p_AddRequestResult := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit) return template (value) NG_NAS_DL_Message_Type + { + return cs_NG_SERVICE_ACCEPT (p_PDU_SessionStatus, + p_PDU_SessionReactivationResult, + p_PDU_SessionReactivationError, + p_EAP, + p_T3448, // @sic R5s201387 Baseline Moving sic@ + p_AddRequestResult, // @sic R5s221179 Baseline Moving sic@ + p_ForbidTAIList_Roaming, + p_ForbidTAIList_RegProvService); + } + + /* + * @desc Check the DEREGISTRATION REQUEST MO message + * @param p_NASMsg + * @param p_DeregisterType + * @param p_MobileId (default value: ?) + * @param p_KSI (default value: ?) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_DeregistrationReqMOMsg(NG_NAS_UL_Message_Type p_NASMsg, + template (present) DeregisterType p_DeregisterType, + template (present) NG_MobileIdentity p_MobileId := ?, + template (present) NAS_KeySetIdentifier p_KSI := ?) return boolean + { + return match (p_NASMsg, cr_NG_DEREGISTRATION_REQUEST_MO (p_DeregisterType, p_KSI, p_MobileId)); + } + + /* + * @desc Get the DEREGISTRATION REQUEST MT message + * @param p_DeregisterType + * @param p_Cause + * @param p_T3346 (default value: omit) + * @param p_RejectedNSSAI (default value: omit) + * @param p_CAGInfoList (default value: omit) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_DeregistrationReqMTMsg(template (value) DeregisterType p_DeregisterType, + template (omit) GMM_GSM_Cause p_Cause, + template (omit) GPRS_Timer2 p_T3346 := omit, + template (omit) RejectedNSSAI p_RejectedNSSAI := omit, // @sic R5s201387 Baseline Moving sic@ + template (omit) CAGInfoList p_CAGInfoList := omit) return template (value) NG_NAS_DL_Message_Type + { + return cs_NG_DEREGISTRATION_REQUEST_MT (p_DeregisterType, p_Cause, p_T3346, p_RejectedNSSAI, p_CAGInfoList); // @sic R5s201387 Baseline Moving sic@ + } + + /* + * @desc build the AUTHENTICATION REQUEST for 5G AKA + * @param p_SecurityParams (by reference) + * @param p_PLMN + * @param p_AuthenticationError (default value: noError) + * @param p_NID (default value: omit) + * @param p_Identity (default value: := px_IMSI_Def) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_5GAKA_AuthenticationReqMsg(inout NG_NAS_SecurityParams_Type p_SecurityParams, + NAS_PlmnId p_PLMN, + AuthenticationError_Type p_AuthenticationError := noError, + template (omit) hexstring p_NID := omit, + hexstring p_Identity := px_IMSI_Def) return template (value) NG_NAS_DL_Message_Type + { + var template (value) NG_NAS_DL_Message_Type v_NASMsg; + + // Evaluate Authentication parameters and generate new keys + p_SecurityParams := f_NG_NAS_AuthenticationInit(p_SecurityParams, p_PLMN, p_Identity, p_AuthenticationError, -, p_NID); // @sic R5-197217, R5s220753, R5s230215 sic@ + v_NASMsg := cs_NG_AUTHENTICATION_REQUEST (p_SecurityParams.KSIamf, + cs_ABBA (p_SecurityParams.ABBA, omit), // @sic R5s190109 sic@ + cs_GMM_AuthRAND(p_SecurityParams.AuthParams.RandValue), + cs_GSM_AUTN(p_SecurityParams.AuthParams.AUTN)); + return v_NASMsg; + } + + /* + * @desc build the AUTHENTICATION REQUEST for EAP AKA + * @param p_SecurityParams (by reference) + * @param p_PLMN + * @param p_NID (default value: omit) + * @param p_Identity (default value: := px_IMSI_Def) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_EAP_AuthenticationReqMsg(inout NG_NAS_SecurityParams_Type p_SecurityParams, + NAS_PlmnId p_PLMN, + template (omit) hexstring p_NID := omit, + hexstring p_Identity := px_IMSI_Def) return template (value) NG_NAS_DL_Message_Type + { + var template (value) NG_NAS_DL_Message_Type v_NASMsg; + var template (value) EAP_Message v_EAP; + + // Evaluate Authentication parameters and generate new keys + p_SecurityParams := f_NG_EAP_AuthenticationInit(p_SecurityParams, p_PLMN, hex2str(p_Identity), -, -, p_NID); // @sic R5s220753, R5s230215 sic@ + v_EAP := cs_EAP_Message (f_NG_EAP_ChallengeReq (p_SecurityParams, p_PLMN, -, p_NID)); // @sic R5s230229 sic@ + v_NASMsg := cs_NG_AUTHENTICATION_REQUEST (p_SecurityParams.KSIamf, + cs_ABBA (p_SecurityParams.ABBA, omit), // @sic R5s190109 sic@ + -, + -, + v_EAP); + return v_NASMsg; + } + //---------------------------------------------------------------------------- + /* + * @desc Check if received message is either an Authentication Response or an Authenticationfailure + * @param p_SecurityParams (by reference) + * @param p_ReceivedMsg + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_5GAKA_AuthenticationResponseFailure(inout NG_NAS_SecurityParams_Type p_SecurityParams, + NG_NAS_UL_Message_Type p_ReceivedMsg) return boolean + { + var boolean v_Result := false; + var B32_128_Type v_ReceivedRES; + + if (match (p_ReceivedMsg, cr_NG_AUTHENTICATION_RESPONSE)) { + v_ReceivedRES := p_ReceivedMsg.authentication_Response.authResponseParam.res; + if (v_ReceivedRES == substr(p_SecurityParams.AuthParams.XRES, 0, lengthof(v_ReceivedRES))) { + v_Result := true; + } else { + v_Result := false; + } + p_SecurityParams.AuthParams.XRESLength := px_NAS_5GC_XRES_Length; // @sic R5w190117 sic@ + } else if (match (p_ReceivedMsg, cr_NG_AUTHENTICATION_FAILURE)) { + v_Result := false; + } + return v_Result; + } + + /* + * @desc Check received Authentication Response message + * @param p_SecurityParams (by reference) + * @param p_ReceivedMsg + * @param p_ResultInd (default value: *) + * @param p_Id (default value: '00'O) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_EAPAKA_AuthenticationResponse (inout NG_NAS_SecurityParams_Type p_SecurityParams, + NG_NAS_UL_Message_Type p_ReceivedMsg, + template EAP_AT_RESULT_IND p_ResultInd := *, + O1_Type p_Id := '00'O) return boolean + { + if (not match (p_ReceivedMsg, cr_NG_AUTHENTICATION_RESPONSE (omit, cr_EAP_Message()))) { // @sic R5-201142 sic@ + return false; + } + return f_NG_EAP_SuccessfulAuthenticationResponse(p_SecurityParams, p_ReceivedMsg.authentication_Response.eapMessage.eapMsg, p_ResultInd, p_Id); // @sic R5-201142, R5s201483 sic@ + } + + /* + * @desc build the AUTHENTICATION RESULT + * @param p_SecurityParams + * @param p_EAP_Msg (default: cs_EAP_Success) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (NR5GC) + */ + function f_Get_NG_AuthenticationResultMsg(NG_NAS_SecurityParams_Type p_SecurityParams, + template (value) EAP_Message_Type p_EAP_Msg := cs_EAP_Success) return template (value) NG_NAS_DL_Message_Type + { + return cs_NG_AUTHENTICATION_RESULT(p_SecurityParams.KSIamf, + cs_EAP_Message(bit2oct(encvalue(p_EAP_Msg)), omit), // @sic R5s201223, R5-205579 sic@ + cs_ABBA (p_SecurityParams.ABBA)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Check the PDU SESSION ESTABLISHMENT REQUEST, Piggybacked into the UL NAS Transport + * @param p_GSM_MobilityInfo (by reference) + * @param p_ReceivedMsgs + * @param p_PDU_SessionId (default value: ?) + * @param p_PTI (default value: omit) + * @param p_IntegrityProtMaxDataRate (default value: ?) + * @param p_PDU_SessionType (default value: omit) + * @param p_SSC_Mode (default value: *) + * @param p_UECap (default value: *) + * @param p_MaxNumPacketFilters (default value: *) + * @param p_AlwaysOnPDUSessionReq (default value: *) + * @param p_PDUReq (default value: *) + * @param p_ExtdPCO (default value: *) + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: cr_NG_Request_Type('001'B)) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @param p_IPHeaderCompConfig (default value: *) + * @param p_DS_TT_EthernetPortMACAddr (default value: *) + * @param p_UE_DS_TT_ResidenceTime (default value: *) + * @param p_PortManagementInfoContainer (default value: *) + * @param p_EthernetHeaderCompConfig (default value: *) + * @param p_SuggestedInterfaceId (default value: *) + * @param p_ServiceLvlAA (default value: *) + * @param p_RequestedMBS (default value: *) + * @param p_PduSessionPairId (default value: *) + * @param p_RSN (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_PDUSessionEstablishmentReq(out GSM_MobilityInfo_Type p_GSM_MobilityInfo, + NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) O1_Type p_PDU_SessionId := ?, + template ProcedureTransactionIdentifier p_PTI := omit, + template IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := ?, + template PDU_SessionType p_PDU_SessionType := omit, + template SSC_Mode p_SSC_Mode := *, // @sic R5s200162 sic@ + template NG_UE_SM_Cap p_UECap := *, // @sic R5s200162 sic@ + template MaxNumPacketFilters p_MaxNumPacketFilters := *, // @sic R5s200162 sic@ + template AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := *, // @sic R5s200106 sic@ + template SM_PDU_DN_RequestContainer p_PDUReq := *, // @sic R5s200162 sic@ + template ExtdProtocolConfigOptions p_ExtdPCO := *, // @sic R5s200162 sic@ + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := cr_NG_Request_Type('001'B), + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *, + template IPHeaderCompressionConfig p_IPHeaderCompConfig := *, + template DS_TT_EthernetPortMACAddr p_DS_TT_EthernetPortMACAddr := *, + template UE_DS_TT_ResidenceTime p_UE_DS_TT_ResidenceTime := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := *, + template PDU_Address p_SuggestedInterfaceId := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template RequestedMBSContainer p_RequestedMBS := *, + template PDUSessionPairId p_PduSessionPairId := *, + template RSN p_RSN := *) return boolean + { + var boolean v_Result := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + var template (present) ProcedureTransactionIdentifier v_PTI; + var template (present) PDU_SessionType v_SessionType; + + if (ispresent(p_PTI)) { + v_PTI := p_PTI; + } else { + v_PTI := complement('00'O, 'FF'O); + } + if (ispresent(p_PDU_SessionType)) { + v_SessionType := p_PDU_SessionType; + } else { + v_SessionType := cr_PDU_SessionType(('001'B, '010'B, '011'B, '101'B)); // @sic R5s190704, R5-221493 sic@ + } + // Check NAS Transport msg first + v_Result := f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd); + if (not v_Result) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_PDU_SESSION_ESTABLISHMENT_REQUEST (cr_NG_PDU_SessionId(omit, p_ReceivedMsgs.Msg.ul_Nas_Transport.pduSessionId.sessionId), // @sic R5-191222 sic@ + v_PTI, + v_SessionType, + p_SSC_Mode, + p_UECap, + p_MaxNumPacketFilters, + p_IntegrityProtMaxDataRate, + p_AlwaysOnPDUSessionReq, + p_PDUReq, + p_ExtdPCO, + p_IPHeaderCompConfig, // @sic R5s201387 Baseline Moving sic@ + p_DS_TT_EthernetPortMACAddr, + p_UE_DS_TT_ResidenceTime, + p_PortManagementInfoContainer, + p_EthernetHeaderCompConfig, + p_SuggestedInterfaceId, + p_ServiceLvlAA, // @sic R5s221179 Baseline Moving sic@ + p_RequestedMBS, + p_PduSessionPairId, + p_RSN))) { + v_Result := true; + } else { // @sic R5s190944 sic@ + v_Result := false; + } + p_GSM_MobilityInfo.SessionId := v_GSMMsg.pdu_Session_Establishment_Request.pduSessionId.sessionId; // @sic R5s00564 sic@ + p_GSM_MobilityInfo.PTI := v_GSMMsg.pdu_Session_Establishment_Request.procedureTransactionIdentifier; + p_GSM_MobilityInfo.SessionType := v_GSMMsg.pdu_Session_Establishment_Request.pduSessionType.typeValue; + p_GSM_MobilityInfo.EPS_Bearer := omit; // these will be set in the Accept message @sic R5-204400 sic@ + p_GSM_MobilityInfo.PdnIndex := omit; // these will be set in the Accept message @sic R5-204400 sic@ + + if (ispresent (p_ReceivedMsgs.Msg.ul_Nas_Transport.dnn)) { + p_GSM_MobilityInfo.DNN := p_ReceivedMsgs.Msg.ul_Nas_Transport.dnn; + } else { + p_GSM_MobilityInfo.DNN := omit; + } + p_GSM_MobilityInfo.PDUType := f_GetPDNTypeFromDNN(p_GSM_MobilityInfo.DNN); // @sic R5-206296 sic@ + + if (isvalue(p_PDU_SessionType)) { // @sic R5-227473 sic@ + if (match ('101'B, p_PDU_SessionType.typeValue)) { + // make sure the correct PDU Type is set as this is used to decide other IE values + p_GSM_MobilityInfo.PDUType := Ethernet_DNN; + } + } + + if (ispresent (v_GSMMsg.pdu_Session_Establishment_Request.alwaysOnPDUSessionReq)) { + p_GSM_MobilityInfo.AlwaysOn := v_GSMMsg.pdu_Session_Establishment_Request.alwaysOnPDUSessionReq; + } else { + p_GSM_MobilityInfo.AlwaysOn := omit; + } + if (match(p_GSM_MobilityInfo.PDUType, (URLLC_DNN, Ethernet_DNN))) { // @sic R5s221179, R5-227473 sic@ + if (not match(p_GSM_MobilityInfo.AlwaysOn, cr_AlwaysOnRequested)) { + v_Result := false; + } + } + + if (ispresent (v_GSMMsg.pdu_Session_Establishment_Request.extdProtocolConfigurationOptions)) { + p_GSM_MobilityInfo.PCO := v_GSMMsg.pdu_Session_Establishment_Request.extdProtocolConfigurationOptions; + } else { + p_GSM_MobilityInfo.PCO := omit; + } + if (pc_PS_data_off) { // @sic R5-216155 sic@ + v_Result := f_ExtdProtocolConfigOptions_CheckPSDataOff(p_GSM_MobilityInfo.PCO); + } + if (ispresent (p_ReceivedMsgs.Msg.ul_Nas_Transport.s_NSSAI)) { // @sic R5s210148 sic@ + p_GSM_MobilityInfo.NSSAI := p_ReceivedMsgs.Msg.ul_Nas_Transport.s_NSSAI; + } else { + p_GSM_MobilityInfo.NSSAI := omit; + } + return v_Result; + } + + /* + * @desc function to get/initialise p_DNN + * @param p_PLMN + * @param p_PDUType + * @param p_DNN + * @return template (value) DNN + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_GetDNN(NAS_PlmnId p_PLMN, + PDU_PDN_DNN_Type p_PDUType, + template (omit) DNN p_DNN) return template (value) DNN + { // @sic R5-221467 sic@ + var octetstring v_DNNValue; + + if (isvalue (p_DNN)) { // @sic R5s210130 sic@ + v_DNNValue := valueof(p_DNN.dnnValue); + } else if (p_PDUType == IMS_DNN) { + v_DNNValue := f_NG_GetDNNForIMS(p_PLMN); + } else { + v_DNNValue := f_DomainName_Encode(f_GetDNNStringFromPICS(p_PDUType)); + } + return cs_DNN(-, v_DNNValue); + } + + /* + * @desc function to get PDN Type from p_DNN + * @param p_DNN + * @return PDU_PDN_DNN_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_GetPDNTypeFromDNN(template (omit) DNN p_DNN) return PDU_PDN_DNN_Type + { + var PDU_PDN_DNN_Type v_PDUType; + + if (ispresent(p_DNN)) { + v_PDUType := f_GetPDN_DNNTypeFromAPN (valueof(p_DNN.dnnValue)); + } else { // APN/DNN not present so check what to use as default + v_PDUType := f_GetDefaultAPN_DNNType_FromPICS(); + } + + return v_PDUType; + } + + /* + * @desc Get the PDU Session which uses a particular DNN + * @param p_PDUSessionInfo + * @param p_DNNType + * @return template (omit) GSM_MobilityInfo_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT) + */ + function f_Get_PDUSessionForDNNType(PDUSessionInfoList_Type p_PDUSessionInfo, template (present) PDU_PDN_DNN_Type p_DNNType) return template (omit) GSM_MobilityInfo_Type + { + var GSM_MobilityInfo_Type v_GSM_MobilityInfo; + var integer i; + + for (i :=0; i < lengthof(p_PDUSessionInfo); i := i+1) { // @sic R5s200548 sic@ + v_GSM_MobilityInfo := p_PDUSessionInfo[i]; + if (match (v_GSM_MobilityInfo.PDUType, p_DNNType)) { // @sic R5-206296 sic@ + return v_GSM_MobilityInfo; + } + } + return omit; + } + + /* + * @desc Get the DNN for PDU Session id + * @param p_PDUSessionInfo + * @param p_PDUSessionId + * @return template (omit) DNN + * @status APPROVED (NR5GC) + */ + function f_Get_DNNForPDUSessionId(PDUSessionInfoList_Type p_PDUSessionInfo, O1_Type p_PDUSessionId) return template (omit) DNN + { + var GSM_MobilityInfo_Type v_GSM_MobilityInfo; + var integer i; + + for (i :=0; i < lengthof(p_PDUSessionInfo); i := i+1) { + v_GSM_MobilityInfo := p_PDUSessionInfo[i]; + if (match (v_GSM_MobilityInfo.SessionId, p_PDUSessionId)) { // @sic R5s200564 sic@ + return v_GSM_MobilityInfo.DNN; + } + } + return omit; + } + + /* + * @desc Get the PDN Index for PDU Session id + * @param p_PDUSessionInfo + * @param p_PDUSessionId + * @return template (omit) PDN_Index_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_PDN_IndexForPDUSessionId(PDUSessionInfoList_Type p_PDUSessionInfo, O1_Type p_PDUSessionId) return template (omit) PDN_Index_Type + { + var GSM_MobilityInfo_Type v_GSM_MobilityInfo; + var integer i; + + for (i :=0; i < lengthof(p_PDUSessionInfo); i := i+1) { + v_GSM_MobilityInfo := p_PDUSessionInfo[i]; + if (match (v_GSM_MobilityInfo.SessionId, p_PDUSessionId)) { + return v_GSM_MobilityInfo.PdnIndex; + } + } + return omit; + } + + /* + * @desc Get the PDU Session Id which uses a particular DNN + * @param p_PDUSessionInfo + * @param p_DNNType + * @return integer + * @status APPROVED (NR5GC) + */ + function f_Get_PDUSessionIdForDNNType(PDUSessionInfoList_Type p_PDUSessionInfo, template (present) PDU_PDN_DNN_Type p_DNNType) return integer + { + var GSM_MobilityInfo_Type v_GSM_MobilityInfo; + var integer i; + + for (i :=0; i < lengthof(p_PDUSessionInfo); i := i+1) { // @sic R5s200548 sic@ + v_GSM_MobilityInfo := p_PDUSessionInfo[i]; + if (match (v_GSM_MobilityInfo.PDUType, p_DNNType)) { // @sic R5-206296 sic@ + return oct2int(v_GSM_MobilityInfo.SessionId); // @sic R5s200564 sic@ + } + } + return -1; + } + + /* + * @desc build the PDU SESSION AUTHENTICATION COMMAND, Piggybacked into the DL NAS Transport + * @param p_SecurityParams (by reference) + * @param p_GSM_MobilityInfo + * @param p_PLMN + * @param p_BackOff (default value: omit) + * @param p_Identity (default value: := px_IMSI_Def) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_PDUSessionAuthenticationCmd(inout NG_NAS_SecurityParams_Type p_SecurityParams, + GSM_MobilityInfo_Type p_GSM_MobilityInfo, + NAS_PlmnId p_PLMN, + template (omit) GPRS_Timer3 p_BackOff := omit, + hexstring p_Identity := px_IMSI_Def) return template (value) NG_NAS_DL_Pdu_Type + { + var template (value) NG_NAS_DL_Message_Type v_GSMMsg; + var template (value) EAP_Message v_EAP; + + // Evaluate Authentication parameters and generate new keys + p_SecurityParams := f_NG_EAP_AuthenticationInit(p_SecurityParams, p_PLMN, hex2str(p_Identity)); // @sic R5s230215 sic@ + v_EAP := cs_EAP_Message (f_NG_EAP_ChallengeReq (p_SecurityParams, p_PLMN), omit); // @sic R5s201382 sic@ + v_GSMMsg := cs_NG_PDU_SESSION_AUTHENTICATION_COMMAND (cs_NG_PDU_SessionId(p_GSM_MobilityInfo.SessionId, omit), // @sic R5s00564 sic + tsc_PTI_Unassigned, + v_EAP, + omit); + return f_Get_NG_DLNASTransport (cs_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + v_GSMMsg, + -, + p_GSM_MobilityInfo.SessionId, // @sic R5s190626, R5s200564 sic@ + omit, + omit, + p_BackOff); } + + /* + * @desc Check the PDU SESSION AUTHENTICATION COMPLETE, Piggybacked into the UL NAS Transport + * @param p_GSM_MobilityInfo + * @param p_SecurityParams + * @param p_ReceivedMsgs + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_PDUSessionAuthenticationComplete(GSM_MobilityInfo_Type p_GSM_MobilityInfo, + NG_NAS_SecurityParams_Type p_SecurityParams, + NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *) return boolean + { + var boolean v_Result := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + // Check NAS Transport msg first + if (not f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_GSM_MobilityInfo.SessionId, + omit, + omit, + p_S_NSSAI, + p_DNN, + omit, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd)) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_PDU_SESSION_AUTHENTICATION_COMPLETE (cr_NG_PDU_SessionId(-, p_GSM_MobilityInfo.SessionId), // @sic R5s00564 sic@ + tsc_PTI_Unassigned, + cr_EAP_Message(omit), + cr_ExtdPCOAny ifpresent))) { + // Check received EAP Msg + v_Result := f_NG_EAP_SuccessfulAuthenticationResponse(p_SecurityParams, v_GSMMsg.pdu_Session_Authentication_Complete.eapMessage.eapMsg); + } + return v_Result; + } + + /* + * @desc build the PDU SESSION AUTHENTICATION RESULT, Piggybacked into the DL NAS Transport + * @param p_GSM_MobilityInfo + * @param p_EAP + * @param p_BackOff (default value: omit) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (NR5GC) + */ + function f_Get_PDUSessionAuthenticationResult(GSM_MobilityInfo_Type p_GSM_MobilityInfo, + template (value) EAP_Message p_EAP, + template (omit) GPRS_Timer3 p_BackOff := omit) return template (value) NG_NAS_DL_Pdu_Type + { + var template (value) NG_NAS_DL_Message_Type v_GSMMsg; + + v_GSMMsg := cs_NG_PDU_SESSION_AUTHENTICATION_RESULT (cs_NG_PDU_SessionId(p_GSM_MobilityInfo.SessionId, omit), // @sic R5s00564 sic@ + tsc_PTI_Unassigned, + p_EAP, + omit); + return f_Get_NG_DLNASTransport (cs_PayloadContainerType(tsc_PayloadContainerESMMsg), + v_GSMMsg, + -, + p_GSM_MobilityInfo.SessionId, + omit, + omit, + p_BackOff); + } + + /* + * @desc build the PDU SESSION ESTABLISHMENT ACCEPT, Piggybacked into the DL NAS Transport + * @param p_GSM_MobilityInfo + * @param p_GMM_MobilityInfo + * @param p_DNN + * @param p_SSC_Mode (default value: crs_SSC_Mode(-, '001'B) + * @param p_Session_AMBR (default value: cs_Session_AMBR ('06'O, '05'O, '0004'O, '05'O, '0004'O) + * @param p_PDU_SessionType (default value: omit) + * @param p_Cause (default value: omit) + * @param p_RQTimer (default value: omit) + * @param p_S_NSSAI (default value: cs_S_NSSAI_SST1eMBB_WithIEI) + * @param p_AlwaysOnPDUSessionInd (default value: omit) + * @param p_EAP (default value: omit) + * @param p_QoS_Rules (default value: omit) + * @param p_QoSFlowDescr (default value: omit) + * @param p_ExtdPCO (default value: omit) + * @param p_BackOff (default value: omit) + * @param p_BuildQosFlow (default value: omit) set to required value if a specific QoSFlow must be built (with interworkingWithEPS parameters) + * @param p_InterworkWithEPS (default value: true) only set to false when called from f_MultipleQoSPreamble_Part2 + * @param p_NGSM_NtwkFeatSupport (default value: omit) + * @param p_ServingPLMNRateCtrl (default value: omit) + * @param p_ATSSSContainer (default value: omit) + * @param p_ControlPlaneInd (default value: omit) + * @param p_IPHeaderCompConfig (default value: omit) + * @param p_EthernetHeaderCompConfig (default value: omit) + * @param p_ExtraPDN_Address (default value: omit) + * @param p_ServiceLvlAA (default value: omit) + * @param p_ReceivedMBS (default value: omit) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_PDUSessionEstablishmentAccept(GSM_MobilityInfo_Type p_GSM_MobilityInfo, + GMM_MobilityInfo_Type p_GMM_MobilityInfo, + template (value) DNN p_DNN, // @sic R5-205939 sic@ + template (value) SSC_Mode p_SSC_Mode := crs_SSC_Mode(-, '001'B), + template (value) Session_AMBR p_Session_AMBR := cs_Session_AMBR ('06'O, '05'O, '0004'O, '05'O, '0004'O), + template (omit) PDU_SessionType p_PDU_SessionType := omit, + template (omit) GMM_GSM_Cause p_Cause := omit, + template (omit) GPRS_Timer p_RQTimer := omit, + template (omit) S_NSSAI_Type p_S_NSSAI := omit, // @sic R5s190919, R5-211168 sic@ + template (omit) AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd := omit, + template (omit) EAP_Message p_EAP := omit, + template (omit) QoS_Rules p_QoS_Rules := omit, + template (omit) QoSFlowDescr p_QoSFlowDescr := omit, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + template (omit) GPRS_Timer3 p_BackOff := omit, + template (omit) charstring p_BuildQosFlow := omit, + boolean p_InterworkWithEPS := true, + template (omit) NGSM_NetworkFeatureSupport p_NGSM_NtwkFeatSupport := omit, // @sic R5s201387 Baseline Moving sic@ + template (omit) ServingPLMNRateControl p_ServingPLMNRateCtrl := omit, + template (omit) ATSSSContainer p_ATSSSContainer := omit, + template (omit) ControlPlaneInd p_ControlPlaneInd := omit, + template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + template (omit) PDN_AddressInfo_Type p_ExtraPDN_Address := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + template (omit) ReceivedMBSContainer p_ReceivedMBS := omit) return template (value) NG_NAS_DL_Pdu_Type + { + var template (value) NG_NAS_DL_Message_Type v_GSMMsg; + var template (value) PDU_SessionType v_PDU_SessionType; + var B3_Type v_PDN_TypeToBeUsed; + var ListOfPDN_AddressInfo_Type v_PDN_Addresses := {}; + var template (omit) PDU_Address v_PDU_Address := omit; + var template (omit) AlwaysOnPDUSessionInd v_AlwaysOn := omit; + var template (value) QoS_Rules v_QoS_Rules := f_BuildDefaultQoSRules ("1"); // @sic R5-202585 sic@ + var template (value) QoSFlowDescr v_QoSFlowDescr; + var template (omit) ExtdProtocolConfigOptions v_ExtdPCO; + var template (omit) MappedEPSBearerContexts v_MappedEPSBearerContexts := omit; + var template (value) MappedEPSContext v_MappedEPSContext; + var bitstring v_EPSParam; // If used + var O1_Type v_EPSBearerId := '00'O; // If used + var boolean v_InterworkWithEPS := false; + var template (value) QoS_Flow v_QoS_Flow; + var octetstring v_ParamOctets; + var template (value) S_NSSAI_Type v_S_NSSAI; + + if (isvalue(p_PDU_SessionType)) { + v_PDU_SessionType := valueof(p_PDU_SessionType); + } else { + v_PDU_SessionType := cs_PDU_SessionType (p_GSM_MobilityInfo.SessionType); + } + + if (isvalue(p_GMM_MobilityInfo.GMMCap) and p_InterworkWithEPS) { // @sic R5s190464 R5s191172, R5s201367 sic@ + if (p_GMM_MobilityInfo.GMMCap.s1Cap == '1'B) { // @sic R5-195328 sic@ + v_InterworkWithEPS := true; + if (isvalue(p_GSM_MobilityInfo.EPS_Bearer)) { // @sic R5-204400 sic@ + v_EPSBearerId := hex2oct(int2hex(valueof(p_GSM_MobilityInfo.EPS_Bearer), 1) & '0'H); + } else { + FatalError(__FILE__, __LINE__, "EPS Supported but no bearer id calculated"); + } + if (p_GSM_MobilityInfo.PDUType == IMS_DNN) { // @sic R5-205939 sic@ + v_EPSParam := encvalue(f_Get_508_EPSQoS(DEF_2)); + } else { + v_EPSParam := encvalue(f_Get_508_EPSQoS(DEF_1)); + } + v_ParamOctets := bit2oct(v_EPSParam); // @sic R5s210302 sic@ + // This is only correct if the mappedEPSContext contains EPSQoS + v_MappedEPSContext := cs_OneMappedEPSContext(v_EPSBearerId, lengthof(v_ParamOctets), cs_EPSParameter_QoS(v_ParamOctets)); // @sic R5s210302 sic@ + v_MappedEPSBearerContexts := cs_OneMappedEPSBearerContextList (v_MappedEPSContext); + } + } + + if (isvalue(p_QoS_Rules)) { + v_QoS_Rules := valueof(p_QoS_Rules); + } else { + select(p_GSM_MobilityInfo.PDUType) { // @sic R5-221467 sic@ + case (IMS_DNN) { // @sic R5-205939 sic@ + v_QoS_Rules := f_BuildDefaultQoSRules ("2"); // @sic R5-202585 sic@ + } + case (URLLC_DNN) { // @sic R5-221467 sic@ + v_QoS_Rules := f_BuildDefaultQoSRules ("8"); + } + } + } // else use QoS 1 already defined above + + if (isvalue(p_QoSFlowDescr)) { // @sic R5-194896 sic@ + v_QoSFlowDescr := valueof(p_QoSFlowDescr); + } else { + if (isvalue(p_BuildQosFlow)) { // @sic R5-202550 sic@ + // need to build a specific QoS flow + v_QoS_Flow := f_BuildDefaultQosFlow(valueof(p_BuildQosFlow), v_InterworkWithEPS, v_EPSBearerId); + } else { + select(p_GSM_MobilityInfo.PDUType) { // @sic R5-221467 sic@ + case (IMS_DNN) { // @sic R5-205939 sic@ + v_QoS_Flow := cs_QoS_Flow2(v_InterworkWithEPS, v_EPSBearerId); // @sic R5-204400, R5s201323 sic@ + } + case (URLLC_DNN) { // @sic R5-221467 sic@ + v_QoS_Flow := f_BuildDefaultQosFlow ("7"); + } case else { + v_QoS_Flow := cs_QoS_Flow1(v_InterworkWithEPS, v_EPSBearerId); // @sic R5-204400, R5s201323 sic@ + } + } + } + v_QoSFlowDescr := cs_QoSFlowDescr ({v_QoS_Flow}); // @sic R5s220471 sic@ + } + + if (isvalue(p_S_NSSAI)) { // @sic R5-211168 sic@ + v_S_NSSAI := p_S_NSSAI; // compiler warning may be ignored due to check + } else { + // 38.508-1 table 4.8.4-1 specifies SST_eMMB for both Config#1 and #2, but there is currently no other option + // This to be updated when another Config is specified. FFS + select (p_GSM_MobilityInfo.PDUType) { // @sic R5s221179 sic@ + case (URLLC_DNN, Ethernet_DNN) { // @sic R5-227473 sic@ + v_S_NSSAI := cs_S_NSSAI_WithIEI('22'O, cs_S_NSSAI_SST2_URLLC); + } + case (MIOT_DNN) { + v_S_NSSAI := cs_S_NSSAI_WithIEI('22'O, cs_S_NSSAI_SST3_MIoT); + } + case (V2X_DNN) { + v_S_NSSAI := cs_S_NSSAI_WithIEI('22'O, cs_S_NSSAI_SST4_V2X); + } + case else { + v_S_NSSAI := cs_S_NSSAI_SST1eMBB_WithIEI; + } + } + } + + if (isvalue(p_AlwaysOnPDUSessionInd)) { + v_AlwaysOn := p_AlwaysOnPDUSessionInd; + } else if (isvalue(p_GSM_MobilityInfo.AlwaysOn)) { + v_AlwaysOn := cs_AlwaysOnNotAllowed; + if (match(p_GSM_MobilityInfo.PDUType, (URLLC_DNN, Ethernet_DNN))) { // @sic R5s221179, R5-227473 sic@ + v_AlwaysOn := cs_AlwaysOnAllowed; + } + } + + v_PDN_TypeToBeUsed := valueof(v_PDU_SessionType.typeValue); + select (v_PDN_TypeToBeUsed){ + case (tsc_PdnType_IPv4, tsc_PdnType_IPv6, tsc_PdnType_IPv4v6) { + v_PDN_Addresses[0] := f_PDN_AddressInfo_Get (f_NR5GC_GetPdnIndex(p_GSM_MobilityInfo)); // @sic R5s200643 sic@ + v_PDU_Address := f_NG_GetPDNAddress(f_CheckExtdPCOforIPallocationViaNas(p_GSM_MobilityInfo.PCO), v_PDN_TypeToBeUsed, v_PDN_Addresses[0]); // @sic R5s200571, R5s200643 sic@ + } + } + + if (isvalue(p_ExtdPCO)) { + v_ExtdPCO := p_ExtdPCO; + } else { + if (isvalue(p_ExtraPDN_Address)) { // @sic R5-213400, R5-217830 sic@ + v_PDN_Addresses[1] := valueof(p_ExtraPDN_Address); + } + v_ExtdPCO := f_NG_GetDefaultExtdProtocolConfigOptions (p_GSM_MobilityInfo.PCO, v_PDN_Addresses); // @sic R5s200643, R5-213400 sic@ + } + + v_GSMMsg := cs_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT (cr_NG_PDU_SessionId(-, p_GSM_MobilityInfo.SessionId), // @sic R5s00564 sic@ + p_GSM_MobilityInfo.PTI, + p_SSC_Mode, + v_PDU_SessionType, + v_QoS_Rules, + p_Session_AMBR, + p_Cause, + v_PDU_Address, + p_RQTimer, + v_S_NSSAI, + v_AlwaysOn, + v_MappedEPSBearerContexts, // @sic R5-195328 sic@ + p_EAP, + v_QoSFlowDescr, + v_ExtdPCO, + p_DNN, // @sic R5-205939 sic@ + p_NGSM_NtwkFeatSupport, // @sic R5s201387 Baseline Moving sic@ + p_ServingPLMNRateCtrl, + p_ATSSSContainer, + p_ControlPlaneInd, + p_IPHeaderCompConfig, + p_EthernetHeaderCompConfig, + p_ServiceLvlAA, // @sic R5s221179 Baseline Moving sic@ + p_ReceivedMBS); + return f_Get_NG_DLNASTransport (cs_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + v_GSMMsg, + -, + p_GSM_MobilityInfo.SessionId, // @sic R5s190338, R5s190626, R5s200564 sic@ + omit, + omit, + p_BackOff); + } + + /* + * @desc Check the PDU SESSION RELEASE REQUEST, Piggybacked into the UL NAS Transport + * @param p_GSM_MobilityInfo (by reference) + * @param p_PDUSessionGlobalInfo + * @param p_ReceivedMsgs + * @param p_PDU_SessionId + * @param p_PTI (default value: ?) + * @param p_Cause (default value: *) + * @param p_ExtdPCO (default value: *) + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: *) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_PDUSessionReleaseReq( out GSM_MobilityInfo_Type p_GSM_MobilityInfo, + PDUSessionInfoList_Type p_PDUSessionGlobalInfo, + NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) O1_Type p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template GMM_GSM_Cause p_Cause := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *) return boolean + { + var boolean v_Result := false; + var boolean v_ExistingId := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + var integer i; + + // Check NAS Transport msg first + v_Result := f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd); + if (not v_Result) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_PDU_SESSION_RELEASE_REQUEST (cr_NG_PDU_SessionId(-, p_PDU_SessionId), // @sic R5s200564 sic@ + p_PTI, + p_Cause, + p_ExtdPCO))) { + v_Result := true; + } else { // @sic R5s190944 sic@ + return false; // @sic R5s220989 sic@ + } + // Default message contents specifies this must match an existing session establishment id + for (i := 0; i < lengthof(p_PDUSessionGlobalInfo); i := i+1) { + if (match (v_GSMMsg.pdu_Session_Release_Request.pduSessionId.sessionId, p_PDUSessionGlobalInfo[i].SessionId)) { + v_ExistingId := true; + } + } + if (not v_ExistingId) { + v_Result := v_ExistingId; + } + + // Store info for this release + p_GSM_MobilityInfo.SessionId := v_GSMMsg.pdu_Session_Release_Request.pduSessionId.sessionId; // @sic R5s200564 sic@ + p_GSM_MobilityInfo.PTI := v_GSMMsg.pdu_Session_Release_Request.procedureTransactionIdentifier; + p_GSM_MobilityInfo.SessionType := omit; + p_GSM_MobilityInfo.EPS_Bearer := omit; // @sic R5s201533 sic@ + p_GSM_MobilityInfo.PdnIndex := omit; // @sic R5s201533 sic@ + + if (ispresent (p_ReceivedMsgs.Msg.ul_Nas_Transport.dnn)) { + p_GSM_MobilityInfo.DNN := p_ReceivedMsgs.Msg.ul_Nas_Transport.dnn; + } else { + p_GSM_MobilityInfo.DNN := omit; + } + p_GSM_MobilityInfo.PDUType := f_GetPDNTypeFromDNN(p_GSM_MobilityInfo.DNN); // @sic R5-206296 sic@ + p_GSM_MobilityInfo.AlwaysOn := omit; + + if (ispresent (v_GSMMsg.pdu_Session_Release_Request.extdProtocolConfigurationOptions)) { + p_GSM_MobilityInfo.PCO := v_GSMMsg.pdu_Session_Release_Request.extdProtocolConfigurationOptions; + } else { + p_GSM_MobilityInfo.PCO := omit; + } + p_GSM_MobilityInfo.NSSAI := omit; // @sic R5s210408 sic@ + return v_Result; + } + + /* + * @desc build the PDU SESSION RELEASE COMMAND, Piggybacked into the DL NAS Transport + * @param p_PDU_SessionId + * @param p_Cause (default value: cs_GMM_GSM_Cause (omit, '00011010'B) + * @param p_BackOff (default value: omit) + * @param p_NGSM_CongestionReattemptInd (default value: omit) + * @param p_ExtdPCO (default value: omit) + * @param p_EAP (default value: omit) + * @param p_PTI (default value: '00'O) + * @param p_AccessType (default value: '00'O) + * @param p_ServiceLvlAA (default value: '00'O) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_PDUSessionReleaseCommand(template (value) O1_Type p_PDU_SessionId, + template (value) GMM_GSM_Cause p_Cause := cs_GMM_GSM_Cause (omit, '00011010'B), + template (omit) GPRS_Timer3 p_BackOff := omit, + template (omit) NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd := omit, // @sic R5s190543 sic@, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + template (omit) EAP_Message p_EAP := omit, + ProcedureTransactionIdentifier p_PTI := '00'O, + template (omit) AccessType p_AccessType := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit) return template (value) NG_NAS_DL_Pdu_Type // @sic R5s201063 sic@, + { + var template (value) NG_NAS_DL_Message_Type v_GSMMsg; + + v_GSMMsg := cs_NG_PDU_SESSION_RELEASE_COMMAND (cs_NG_PDU_SessionId (p_PDU_SessionId, omit), // @sic R5s200564 sic@ + p_PTI, + p_Cause, + p_BackOff, + p_EAP, + p_NGSM_CongestionReattemptInd, + p_ExtdPCO, + p_AccessType, // @sic R5s201387 Baseline Moving sic@ + p_ServiceLvlAA); // @sic R5s221179 Baseline Moving sic@ + return f_Get_NG_DLNASTransport (cs_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + v_GSMMsg, + -, + p_PDU_SessionId, // @sic R5s190626, R5s200564 sic@ + omit, + omit, + p_BackOff); + } + + /* + * @desc Check the PDU SESSION RELEASE COMPLETE, Piggybacked into the UL NAS Transport + * @param p_PDUSessionGlobalInfo (by reference) + * @param p_ReceivedMsgs + * @param p_PDU_SessionId + * @param p_PTI (default value: ?) + * @param p_Cause (default value: *) + * @param p_ExtdPCO (default value: *) + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: *) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_PDUSessionReleaseComplete( inout PDUSessionInfoList_Type p_PDUSessionGlobalInfo, + NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) O1_Type p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template GMM_GSM_Cause p_Cause := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *) return boolean + { + var boolean v_Result := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + var PDUSessionInfoList_Type v_NewList := {}; // @sic R5s190626 sic@ + var integer i; + var integer j := 0; + + // Check NAS Transport msg first + v_Result := f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd); + if (not v_Result) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_PDU_SESSION_RELEASE_COMPLETE (cr_NG_PDU_SessionId(-, p_PDU_SessionId), // @sic R5s200564 sic@ + p_PTI, + p_Cause, + p_ExtdPCO))) { + v_Result := true; + } else { // @sic R5s190944 sic@ + v_Result := false; + } + // Delete any stored info for this Session Id as it's now released + for (i := 0; i < lengthof(p_PDUSessionGlobalInfo); i := i+1) { // @sic R5s190388 sic@ + if (not (v_GSMMsg.pdu_Session_Release_Complete.pduSessionId.sessionId == p_PDUSessionGlobalInfo[i].SessionId)) { // @sic R5s190388, R5s200564 sic@ + v_NewList[j] := p_PDUSessionGlobalInfo[i]; + j := j+ 1; + } + } + + p_PDUSessionGlobalInfo := v_NewList; + + return v_Result; + } + + /* + * @desc Check the PDU SESSION MODIFICATION REQUEST, Piggybacked into the UL NAS Transport + * @param p_GSM_MobilityInfo (by reference) + * @param p_PDUSessionGlobalInfo + * @param p_ReceivedMsgs + * @param p_PDU_SessionId (default value: ?) + * @param p_PTI (default value: ?) + * @param p_NG_UE_SM_Cap (default value: *) + * @param p_Cause (default value: *) + * @param p_MaxNumPacketFilters (default value: *) + * @param p_AlwaysOnPDUSessionReq (default value: *) + * @param p_IntegrityProtMaxDataRate (default value: *) + * @param p_QoS_Rules (default value: *) + * @param p_QoSFlowDescr (default value: *) + * @param p_MappedEPSBearerContexts (default value: *) + * @param p_ExtdPCO (default value: *) + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: *) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @param p_PortManagementInfoContainer (default value: *) + * @param p_IPHeaderCompConfig (default value: *) + * @param p_EthernetHeaderCompConfig (default value: *) + * @param p_RequestedMBS (default value: *) + * @param p_ServiceLvlAA (default value: *) + * @return boolean + * @status APPROVED (NR5GC, NR5GC_IRAT) + */ + function f_Check_NG_PDUSessionModificationReq( out GSM_MobilityInfo_Type p_GSM_MobilityInfo, + PDUSessionInfoList_Type p_PDUSessionGlobalInfo, + NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) O1_Type p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template NG_UE_SM_Cap p_NG_UE_SM_Cap := *, + template GMM_GSM_Cause p_Cause := *, + template MaxNumPacketFilters p_MaxNumPacketFilters := *, + template AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := *, + template IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := *, + template QoS_Rules p_QoS_Rules := *, + template QoSFlowDescr p_QoSFlowDescr := *, + template MappedEPSBearerContexts p_MappedEPSBearerContexts := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *, + template IPHeaderCompressionConfig p_IPHeaderCompConfig := *, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := *, + template RequestedMBSContainer p_RequestedMBS := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *) return boolean + { + var boolean v_Result := false; + var boolean v_ExistingId := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + var integer i; + + // Check NAS Transport msg first + v_Result := f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd); + if (not v_Result) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_PDU_SESSION_MODIFICATION_REQUEST (cr_NG_PDU_SessionId(-, p_PDU_SessionId), // @sic R5s200564 sic@ + p_PTI, + p_NG_UE_SM_Cap, + p_Cause, + p_MaxNumPacketFilters, + p_AlwaysOnPDUSessionReq, + p_IntegrityProtMaxDataRate, + p_QoS_Rules, + p_QoSFlowDescr, + p_MappedEPSBearerContexts, + p_ExtdPCO, + p_PortManagementInfoContainer, // @sic R5s201387 Baseline Moving sic@ + p_IPHeaderCompConfig, + p_EthernetHeaderCompConfig, + p_RequestedMBS, // @sic R5s221179 Baseline Moving sic@ + p_ServiceLvlAA))) { + v_Result := true; + } else { // @sic R5s190944 sic@ + return false; // @sic R5s220989 sic@ + } + // Default message contents specifies this must match an existing session establishment id + for (i := 0; i < lengthof(p_PDUSessionGlobalInfo); i := i+1) { + if (match (v_GSMMsg.pdu_Session_Modification_Request.pduSessionId.sessionId, p_PDUSessionGlobalInfo[i].SessionId)) { // @sic R5s200564 sic@ + v_ExistingId := true; + p_GSM_MobilityInfo := p_PDUSessionGlobalInfo[i]; // @sic R5s220577 sic@ + } + } + if (not v_ExistingId) { + v_Result := v_ExistingId; + } + + // Store info for this modification + p_GSM_MobilityInfo.SessionId := v_GSMMsg.pdu_Session_Modification_Request.pduSessionId.sessionId; // @sic R5s200564 sic@ + p_GSM_MobilityInfo.PTI := v_GSMMsg.pdu_Session_Modification_Request.procedureTransactionIdentifier; + p_GSM_MobilityInfo.SessionType := omit; + p_GSM_MobilityInfo.EPS_Bearer := omit; // @sic R5s201533 sic@ + p_GSM_MobilityInfo.PdnIndex := omit; // @sic R5s201533 sic@ + + // @sic R5s220577 sic@ + if (ispresent (p_ReceivedMsgs.Msg.ul_Nas_Transport.dnn)) { + p_GSM_MobilityInfo.DNN := p_ReceivedMsgs.Msg.ul_Nas_Transport.dnn; + p_GSM_MobilityInfo.PDUType := f_GetPDNTypeFromDNN(p_GSM_MobilityInfo.DNN); // @sic R5-206296 sic@ + } + if (ispresent (v_GSMMsg.pdu_Session_Modification_Request.alwaysOnPDUSessionReq)) { + p_GSM_MobilityInfo.AlwaysOn := v_GSMMsg.pdu_Session_Modification_Request.alwaysOnPDUSessionReq; + } + if (ispresent (v_GSMMsg.pdu_Session_Modification_Request.extdProtocolConfigurationOptions)) { + p_GSM_MobilityInfo.PCO := v_GSMMsg.pdu_Session_Modification_Request.extdProtocolConfigurationOptions; + } + return v_Result; + } + + /* + * @desc build the PDU SESSION MODIFICATION COMMAND, Piggybacked into the DL NAS Transport + * @param p_PDU_SessionId + * @param p_GSM_MobilityInfo (default value: omit) + * @param p_Cause (default value: omit) + * @param p_Session_AMBR (default value: omit) + * @param p_RQTimer (default value: omit) + * @param p_AlwaysOnPDUSessionInd (default value: omit) + * @param p_QoS_Rules (default value: omit) + * @param p_QoSFlowDescr (default value: omit) + * @param p_MappedEPSBearerContexts (default value: omit) + * @param p_ExtdPCO (default value: omit) + * @param p_ATSSSContainer (default value: omit) + * @param p_IPHeaderCompConfig (default value: omit) + * @param p_PortManagementInfoContainer (default value: omit) + * @param p_ServingPLMNRateCtrl (default value: omit) + * @param p_EthernetHeaderCompConfig (default value: omit) + * @param p_ReceivedMBS (default value: omit) + * @param p_ServiceLvlAA (default value: omit) + * @param p_BackOff (default value: omit) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT) + */ + function f_Get_NG_PDUSessionModificationCommand(template (value) O1_Type p_PDU_SessionId, + template (omit) GSM_MobilityInfo_Type p_GSM_MobilityInfo := omit, + template (omit) GMM_GSM_Cause p_Cause := omit, + template (omit) Session_AMBR p_Session_AMBR := omit, + template (omit) GPRS_Timer p_RQTimer := omit, + template (omit) AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd := omit, + template (omit) QoS_Rules p_QoS_Rules := omit, + template (omit) QoSFlowDescr p_QoSFlowDescr := omit, + template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts := omit, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + template (omit) ATSSSContainer p_ATSSSContainer := omit, // @sic R5s201387 Baseline Moving sic@ + template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + template (omit) PortManagementInfoContainer p_PortManagementInfoContainer := omit, + template (omit) ServingPLMNRateControl p_ServingPLMNRateCtrl := omit, + template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + template (omit) ReceivedMBSContainer p_ReceivedMBS := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + template (omit) GPRS_Timer3 p_BackOff := omit) return template (value) NG_NAS_DL_Pdu_Type + { + var template (value) NG_NAS_DL_Message_Type v_GSMMsg; + var template (value) O1_Type v_PDU_SessionId := p_PDU_SessionId; + var ProcedureTransactionIdentifier v_PTI := '00'O; + var template (omit) AlwaysOnPDUSessionInd v_AlwaysOn := omit; + + if (isvalue(p_GSM_MobilityInfo)) { // Modification was triggered by UE sending Request message + v_PDU_SessionId := p_GSM_MobilityInfo.SessionId; + v_PTI := valueof(p_GSM_MobilityInfo.PTI); + if (isvalue(p_GSM_MobilityInfo.AlwaysOn)) { + v_AlwaysOn := cs_AlwaysOnNotAllowed; + if (valueof(p_GSM_MobilityInfo.PDUType) == URLLC_DNN) { // @sic R5s221179 sic@ + v_AlwaysOn := cs_AlwaysOnAllowed; + } + } + } + if (isvalue(p_AlwaysOnPDUSessionInd)) { + v_AlwaysOn := p_AlwaysOnPDUSessionInd; + } + + v_GSMMsg := cs_NG_PDU_SESSION_MODIFICATION_COMMAND (cs_NG_PDU_SessionId(v_PDU_SessionId, omit), // @sic R5s200564 sic@ + v_PTI, + p_Cause, + p_Session_AMBR, + p_RQTimer, + v_AlwaysOn, + p_QoS_Rules, + p_QoSFlowDescr, + p_MappedEPSBearerContexts, + p_ExtdPCO, + p_ATSSSContainer, // @sic R5s201387 Baseline Moving sic@ + p_IPHeaderCompConfig, + p_PortManagementInfoContainer, + p_ServingPLMNRateCtrl, + p_EthernetHeaderCompConfig, + p_ReceivedMBS, // @sic R5s221179 Baseline Moving sic@ + p_ServiceLvlAA); // @sic R5s221179 Baseline Moving sic@ + return f_Get_NG_DLNASTransport (cs_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + v_GSMMsg, + -, + v_PDU_SessionId, // @sic R5s190626 sic@ + omit, + omit, + p_BackOff); + } + + /* + * @desc Check the PDU SESSION MODIFICATION COMPLETE, Piggybacked into the UL NAS Transport + * @param p_ReceivedMsgs + * @param p_PDU_SessionId + * @param p_PTI (default value: ?) + * @param p_ExtdPCO (default value: *) + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: *) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @param p_PortManagementInfoContainer (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT) + */ + function f_Check_NG_PDUSessionModificationComplete( NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) O1_Type p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *) return boolean + { + var boolean v_Result := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + + // Check NAS Transport msg first + v_Result := f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd); + if (not v_Result) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_PDU_SESSION_MODIFICATION_COMPLETE (cr_NG_PDU_SessionId(-, p_PDU_SessionId), // @sic R5s200564 sic@ + p_PTI, + p_ExtdPCO, + p_PortManagementInfoContainer))) { // @sic R5s201387 Baseline Moving sic@ + v_Result := true; + } else { // @sic R5s190944 sic@ + v_Result := false; + } + return v_Result; + } + + /* + * @desc build the PDU SESSION ESTABLISHMENT REJECT COMMAND, Piggybacked into the DL NAS Transport + * @param p_PDU_SessionId + * @param p_PTI + * @param p_Cause (default value: cs_GMM_GSM_Cause (omit, '00011010'B) + * @param p_BackOff (default value: omit) + * @param p_SSC_Mode (default value: omit) + * @param p_EAP (default value: omit) + * @param p_ExtdPCO (default value: omit) + * @param p_ReAttemptIndicator (default value: omit) + * @param p_NGSM_CongestionReattemptInd (default value: omit) + * @param p_ServiceLvlAA (default value: omit) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (NR5GC) + */ + function f_Get_NG_PDUSessionEstablishmentReject(template (value) O1_Type p_PDU_SessionId, + template (value) ProcedureTransactionIdentifier p_PTI, + template (value) GMM_GSM_Cause p_Cause := cs_GMM_GSM_Cause (omit, '00011010'B), + template (omit) GPRS_Timer3 p_BackOff := omit, + template (omit) AllowedSSCMode p_SSC_Mode := omit, + template (omit) EAP_Message p_EAP := omit, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + template (omit) ReAttemptIndicator p_ReAttemptIndicator := omit, + template (omit) NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit) return template (value) NG_NAS_DL_Pdu_Type + { + // @sic R5-198184 sic@ + var template (value) NG_NAS_DL_Message_Type v_GSMMsg; + v_GSMMsg := cs_NG_PDU_SESSION_ESTABLISHMENT_REJECT (cs_NG_PDU_SessionId (p_PDU_SessionId, omit), + p_PTI, + p_Cause, + p_BackOff, + p_SSC_Mode, + p_EAP, + p_ExtdPCO, + p_ReAttemptIndicator, + p_NGSM_CongestionReattemptInd, // @sic R5s201387 Baseline Moving sic@ + p_ServiceLvlAA); // @sic R5s221179 Baseline Moving sic@ + return f_Get_NG_DLNASTransport (cs_PayloadContainerType(tsc_PayloadContainerESMMsg), + v_GSMMsg, + -, + p_PDU_SessionId, + omit, + omit, + p_BackOff); + } + + /* + * @desc Check the GSM STATUS, Piggybacked into the UL NAS Transport + * @param p_ReceivedMsgs + * @param p_PDU_SessionId + * @param p_PTI (default value: ?) + * @param p_Cause + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: *) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @return boolean + * @status APPROVED (NR5GC) + */ + function f_Check_NG_GSMStatus(NG_NAS_UL_Pdu_Type p_ReceivedMsgs, + template (present) O1_Type p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) GMM_GSM_Cause p_Cause, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *) return boolean + { + var boolean v_Result := false; + var NG_NAS_UL_Message_Type v_GSMMsg := p_ReceivedMsgs.PiggybackedPduList[0].Msg; + + // Check NAS Transport msg first + v_Result := f_Check_NG_ULNASTransport (p_ReceivedMsgs.Msg, + cr_PayloadContainerType(tsc_PayloadContainerESMMsg), // @sic R5w190208 sic@ + p_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd); + if (not v_Result) { + return v_Result; + } else if (match (v_GSMMsg, cr_NG_GSM_STATUS (cr_NG_PDU_SessionId(-, p_PDU_SessionId), // @sic R5s200564 sic@ + p_PTI, + p_Cause))) { + v_Result := true; + } else { // @sic R5s190944 sic@ + v_Result := false; + } + return v_Result; + } + + /* + * @desc check the UL NAS TRANSPORT + * @param p_NASTransport + * @param p_PayloadContainerType + * @param p_PDU_SessionId (default value: *) + * @param p_OldPDU_SessionId (default value: *) + * @param p_RequestType (default value: *) + * @param p_S_NSSAI (default value: *) + * @param p_DNN (default value: *) + * @param p_AdditionalInfo (default value: *) + * @param p_MA_PDUSessionInfo (default value: *) + * @param p_ReleaseAssistanceInd (default value: *) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Check_NG_ULNASTransport(NG_NAS_UL_Message_Type p_NASTransport, + template (present) PayloadContainerType p_PayloadContainerType, + template O1_Type p_PDU_SessionId := *, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, // @sic R5s201387 Baseline Moving sic@ + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *) return boolean + { + var template NG_PDU_SessionId v_PDU_SessionId := omit; + if (match(tsc_PayloadContainerESMMsg, p_PayloadContainerType.container) or match(tsc_PayloadContainerCIoTUserData, p_PayloadContainerType.container)) { // @sic R5s201387 Baseline Moving sic@ + if(ispresent(p_PDU_SessionId)) { // @sic R5s190626, R5s200564 sic@ + v_PDU_SessionId := cr_NG_PDU_SessionId ('12'O, p_PDU_SessionId); // @sic R5s200564 sic@ + } + } + + return match(p_NASTransport, cr_NG_UL_NAS_TRANSPORT(p_PayloadContainerType, + v_PDU_SessionId, + p_OldPDU_SessionId, + p_RequestType, + p_S_NSSAI, + p_DNN, + p_AdditionalInfo, + p_MA_PDUSessionInfo, // @sic R5s201387 Baseline Moving sic@ + p_ReleaseAssistanceInd)); + } + + /* + * @desc build the DL NAS TRANSPORT + * @param p_PayloadContainerType + * @param p_PiggyBackedGSMMsg + * @param p_Payload (default value: cs_DummyPayloadContainer) + * @param p_PDU_SessionId (default value: omit) + * @param p_AdditionalInfo (default value: omit) + * @param p_Cause (default value: omit) + * @param p_BackOff (default value: omit) + * @param p_LowerBoundTimerValue (default value: omit) + * @return template (value) NG_NAS_DL_Pdu_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_Get_NG_DLNASTransport(template (value) PayloadContainerType p_PayloadContainerType, + template (omit) NG_NAS_DL_Message_Type p_PiggyBackedGSMMsg, + template (value) PayloadContainer p_Payload := cs_DummyPayloadContainer, // dummy value for p_PiggyBackedGSMMsg is encoded in emulator + template (omit) O1_Type p_PDU_SessionId := omit, + template (omit) AdditionalInformation p_AdditionalInfo := omit, + template (omit) GMM_GSM_Cause p_Cause := omit, + template (omit) GPRS_Timer3 p_BackOff := omit, + template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit) return template (value) NG_NAS_DL_Pdu_Type + { + var template (omit) NG_PDU_SessionId v_PDU_SessionId := omit; + var template (value) NG_NAS_DL_Message_Type v_GMMMsg; + + if (match(tsc_PayloadContainerESMMsg, p_PayloadContainerType.container) and isvalue(p_PDU_SessionId)) { // @sic R5s190626 sic@ + v_PDU_SessionId := cs_NG_PDU_SessionId(p_PDU_SessionId); + } + + v_GMMMsg := cs_NG_DL_NAS_TRANSPORT (p_PayloadContainerType, + p_Payload, + v_PDU_SessionId, + p_AdditionalInfo, + p_Cause, + p_BackOff, + p_LowerBoundTimerValue); // @sic R5s221179 Baseline Moving sic@ + if (isvalue(p_PiggyBackedGSMMsg)) { // @sic R5s210234 sic@ + return cs_NG_NAS_DL_PduWithPiggybacking (v_GMMMsg, p_PiggyBackedGSMMsg); + } else { + return cs_NG_NAS_DL_PduWithoutPiggyback (v_GMMMsg); + } + } + + /* + * @desc build the NSSAI_DELETE_REQUEST test mode message + * @param p_DeleteType + * @param p_PLMN (default value: omit) + * @param p_AccessType (default value: omit) + * @return template (value) NG_NAS_DL_Message_Type + * @status APPROVED (NR5GC) + */ + function f_Get_NSSAI_DELETE_REQUEST(DeleteNSSAI_Type p_DeleteType, + template (omit) NAS_PlmnId p_PLMN := omit, + template (omit) B2_Type p_AccessType := omit) return template (value) NG_NAS_DL_Message_Type + { + var template (omit) NAS_PlmnId v_PLMN := omit; // compiler warning may be ignored due to check + var B2_Type v_AccessType := '10'B; // must set to a valid value, so assume for both if not specified + var template (omit) AllowedNSSAI v_AllowedNSSAI := omit; + var B8_Type v_DeleteNSSAIType; + + select (p_DeleteType) { + case (Delete_Default_Configured) { + v_DeleteNSSAIType := tsc_DeleteNSSAI_DefaultConfiguredNSSAI; + } + case (Delete_Configured) { + v_DeleteNSSAIType := tsc_DeleteNSSAI_ConfiguredNSSAI; + if (isvalue(p_PLMN)){ + v_PLMN := p_PLMN; + } else { + v_PLMN := '000000'O + } + } + case (Delete_Allowed) { + v_DeleteNSSAIType := tsc_DeleteNSSAI_AllowedNSSAI; + if (isvalue(p_PLMN)){ + v_PLMN := p_PLMN; + } else { + v_PLMN := '000000'O + } + if (isvalue(p_AccessType)) { + v_AccessType := valueof(p_AccessType); + } + v_AllowedNSSAI := cs_AllowedNSSAI (v_PLMN, v_AccessType); // compiler warning may be ignored due to check + } + } + return cs_NSSAI_DELETE_REQUEST (v_DeleteNSSAIType, + v_PLMN, + v_AllowedNSSAI); + } + + // =========================================================================== + + /* + * @desc NR5GC GetPdnIndex + * @param p_GSM_MobilityInfo + * @return PDN_Index_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NR5GC_GetPdnIndex(GSM_MobilityInfo_Type p_GSM_MobilityInfo) return PDN_Index_Type + { + // @sic R5-200256, R5-202550, R5-206296 sic@ + // Make sure the PDN is the same in both EUTRA and NR @sic R5s210149 sic@ + return f_GetMultiPdnIndex(p_GSM_MobilityInfo.PDUType); + } + + //---------------------------------------------------------------------------- + /* + * @desc PDN Address TS 24.501 clause 9.11.4.10 + * Default value according to TS 36.508 table 6.6.1-1 (which requires a 'static' value) and table 4.7.3-6 + * Based on f_EUTRA_NB_GetPDNAddress + * @param p_IPv4AllocationViaNas + * @param p_PDN_TypeToBeUsed + * @param p_PDN_Address + * @return PDU_Address + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_GetPDNAddress(boolean p_IPv4AllocationViaNas, + B3_Type p_PDN_TypeToBeUsed, + PDN_AddressInfo_Type p_PDN_Address) return PDU_Address + { + var O4_Type v_Addr4 := f_Convert_IPv4Addr2OctString(p_PDN_Address.UE_IPAddressIPv4); // @sic R5s200643 sic@ + var octetstring v_Addr6:= f_Convert_IPv6Addr2OctString(p_PDN_Address.UE_IPAddressIPv6); // @sic R5s200643 sic@ + var Type4Length_Type v_IeLength; + var octetstring v_AddressInfo; + var PDU_Address v_PDU_Address; + + // set IP addresses + v_Addr6 := substr(v_Addr6, 8, 8); // Use only the IPv6 interface identifier, which are the 8 least significant octets of theIPv6 address + + if (not p_IPv4AllocationViaNas) { // => IPv4 address via DHCP signalling (if IPv4) + v_Addr4 := '00000000'O; + } + + // set IE + select (p_PDN_TypeToBeUsed) { + case (tsc_PdnType_IPv4) { + if (not pc_IPv4) { + FatalError(__FILE__, __LINE__, "IPv4 selected but is not supported"); + } + v_IeLength := '05'O; + v_AddressInfo := v_Addr4; + } + case (tsc_PdnType_IPv6) { + if (not pc_IPv6) { + FatalError(__FILE__, __LINE__, "IPv6 selected but is not supported"); + } + v_IeLength := '09'O; + v_AddressInfo := v_Addr6; + } + case (tsc_PdnType_IPv4v6) { + if (not pc_IPv4 or not pc_IPv6) { + FatalError(__FILE__, __LINE__, "IPv4v6 selected but at least one is not supported"); + } + v_IeLength := '0D'O; + v_AddressInfo := v_Addr6 & v_Addr4; + } + } + + v_PDU_Address := { + iei := '29'O, + iel := v_IeLength, + spare := tsc_Spare4, // @sic R5s201526 sic@ + si16LLA := '0'B, // @sic R5s201526 sic@ + typeValue := p_PDN_TypeToBeUsed, + adressInfo := v_AddressInfo, + ipv6Address := omit // @sic R5s210267 sic@ + }; + + return v_PDU_Address; + } + + /* + * @desc Checks DNN to see if it requests IMS, based on f_EUTRA_GetAPNForIMS + * @param p_DNNFromReq + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT) + */ + /* + function f_NG_IsDNNForIMS(DNN p_DNNFromReq) return boolean + { + return match(IMS_DNN, f_GetPDNTypeFromDNN (p_DNNFromReq)); + } +*/ + /* + * @desc Returns the DNN Name to be used in Accept message + * returns "IMS" and the operator id "mnc.mcc.gprs" + * @param p_PLMN + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_GetDNNForIMS(NAS_PlmnId p_PLMN) return octetstring + { // @sic R5s201327 sic@ : removed the test of the incoming DNN. Always return the IMS DNN + var hexstring v_PLMN_hexstring := oct2hex(p_PLMN); + var charstring v_MNC := ""; + var charstring v_MCC := ""; + var octetstring v_OperatorId; + var CharStringList_Type v_LabelList; + + v_MCC := int2str(hex2int(v_PLMN_hexstring[1])) & int2str(hex2int(v_PLMN_hexstring[0])) & int2str(hex2int(v_PLMN_hexstring[3])); + v_MNC := int2str(hex2int(v_PLMN_hexstring[5])) & int2str(hex2int(v_PLMN_hexstring[4])); + if (v_PLMN_hexstring[2] != 'F'H) { + v_MNC := v_MNC & int2str(hex2int(v_PLMN_hexstring[2])); + } + + v_LabelList := {f_APN_MccMncLabel("mnc", v_MNC), f_APN_MccMncLabel("mcc", v_MCC), "gprs" }; + v_OperatorId := f_DomainName_EncodeLabels(v_LabelList); + + return f_DomainName_EncodeLabels({"IMS"}) & v_OperatorId; + } + + //---------------------------------------------------------------------------- + type record of PDN_AddressInfo_Type ListOfPDN_AddressInfo_Type; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + /* + * @desc Function used to check whether the UE requests a P-CSCF address in its PCO + * If the UE does not support IMS, or doesn't request a P-CSCF address, the function returns omit + * @param p_ConfigOptionsRX + * @param p_PDN_AddressInfo + * @return template (omit) NAS_ExtdProtocolConfigOptions_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NAS_GetExtdProtocolConfigOptionList(NAS_ExtdProtocolConfigOptions_Type p_ConfigOptionsRX, + ListOfPDN_AddressInfo_Type p_PDN_AddressInfo) return template (omit) NAS_ExtdProtocolConfigOptions_Type + { + var template (omit) NAS_ExtdProtocolConfigOptions_Type v_ProtocolContainerList := omit; + var integer v_PcoCnt := 0; + var O2_Type v_ProtocolId; + var octetstring v_Contents; + var integer i; + var integer j; + + for (j := 0; j < lengthof(p_PDN_AddressInfo); j := j + 1) { // @sic R5-213400 sic@ + for (i := 0; i < lengthof(p_ConfigOptionsRX); i := i + 1) { + + v_ProtocolId := p_ConfigOptionsRX[i].protocolID; + v_Contents := ''O; + + select (v_ProtocolId) { // See 24.008 Table 10.5.154 + case ('0001'O) { // P-CSCF IPv6 address + v_Contents := f_Convert_IPv6Addr2OctString(p_PDN_AddressInfo[j].PCSCF_IPAddressIPv6); // @sic R5s200643 sic@ + } + case ('000C'O) { // P-CSCF IPv4 address + v_Contents := f_Convert_IPv4Addr2OctString(p_PDN_AddressInfo[j].PCSCF_IPAddressIPv4); // @sic R5s200643 sic@ + } + case ('0003'O) { // DNS Server IPv6 address @sic R5-224166 sic@ + if (f_GetTestcaseAttrib_XCAP(testcasename())) { // @sic R5-231185 sic@ + v_Contents := f_Convert_IPv6Addr2OctString(p_PDN_AddressInfo[j].DNS_ServerAddressIPv6); + } + } + case ('000D'O) { // DNS Server IPv4 address @sic R5-224166 sic@ + if (f_GetTestcaseAttrib_XCAP(testcasename())) { // @sic R5-231185 sic@ + v_Contents := f_Convert_IPv4Addr2OctString(p_PDN_AddressInfo[j].DNS_ServerAddressIPv4); + } + } + } + + if (lengthof(v_Contents) > 0) { + v_ProtocolContainerList[v_PcoCnt] := cs_ProtocolContainer(v_ProtocolId, v_Contents); + v_PcoCnt := v_PcoCnt + 1; + } + } + } + return v_ProtocolContainerList; + } + + /* + * @desc check PS Data Off is deactivated if included in the given list, or omit otherwise + * @param p_Pco + * @param p_Status (default value: '01'O) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_ExtdProtocolConfigOptions_CheckPSDataOff(template (omit) ExtdProtocolConfigOptions p_Pco, + O1_Type p_Status:='01'O) return boolean + { + var template (omit) octetstring v_Content := f_ExtdProtocolConfigOptions_Get(p_Pco, '0017'O); + var boolean v_Result := false; + + if (isvalue(v_Content)) { + if (lengthof(v_Content) > 0) { + v_Result := match (p_Status, v_Content); //@sic R5s220424 R5s220828 sic@ + } + } + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc wrapper for f_NG_NAS_GetExtdProtocolConfigOptionList + * @param p_Pco + * @param p_PDN_AddressInfo + * @return template (omit) ExtdProtocolConfigOptions + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_GetDefaultExtdProtocolConfigOptions(template (omit) ExtdProtocolConfigOptions p_Pco, + ListOfPDN_AddressInfo_Type p_PDN_AddressInfo) return template (omit) ExtdProtocolConfigOptions + { + var template (omit) NAS_ExtdProtocolConfigOptions_Type v_ProtocolContainerList := omit; + var ExtdProtocolConfigOptions v_ProtocolConfigOptionsRX; + + if (isvalue(p_Pco)) { + v_ProtocolConfigOptionsRX := valueof(p_Pco); + if (ispresent(p_Pco.pco)) { + v_ProtocolContainerList := f_NG_NAS_GetExtdProtocolConfigOptionList(v_ProtocolConfigOptionsRX.pco, p_PDN_AddressInfo); // @sic R5s200643 sic@ + } + } + + return f_NG_NAS_ExtdProtocolConfigOptionsTX(v_ProtocolContainerList); + } + + /* + * @desc Common function to build up ProtocolConfigOptions + * @param p_ProtocolContainers + * @return template (omit) ExtdProtocolConfigOptions + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NAS_ExtdProtocolConfigOptionsTX(template (omit) NAS_ExtdProtocolConfigOptions_Type p_ProtocolContainers) return template (omit) ExtdProtocolConfigOptions + { + if (isvalue(p_ProtocolContainers)) { + + return f_NAS_ExtdProtocolConfigOptionsTX (p_ProtocolContainers); // @sic R5s200643 sic@ + } else { + return omit; + } + } + + /* + * @desc To calculate the Bit Rate for 5G QoSFlow for the UT command + * @param p_Unit - 1st octet of Qos Parameter + * @param p_Value - 2nd & 3rd octets of Qos Parameter + * @return integer + * @status APPROVED (NR5GC) + */ + function fl_Calculate5G_BitRate(integer p_Unit, integer p_Value) return integer + { + var integer v_BitRate := p_Value; + var integer v_Exponent := 0; + + if (p_Unit > 0) { // Do nothing if 0 + v_Exponent := ((p_Unit-1) mod 5); // multiply by either 1, 4, 16, 64 or 256 + if (v_Exponent > 0) { + v_BitRate := v_BitRate * f_Power(4, v_Exponent); + } + v_Exponent := (((p_Unit-1) / 5) * 3); // multiply by multiples of 1000 + if (v_Exponent > 0) { + v_BitRate := v_BitRate * f_Power(10, v_Exponent); + } + } + return v_BitRate; + } + + /* + * @desc To convert a 5G QoSFlow into a charstring for the UT command + * @param p_QoSFlow + * @return charstring + * @status APPROVED (NR5GC) + */ + function f_Convert5G_QoSFlow_ForATCommand(template (value) QoS_Flow p_QoSFlow) return charstring + { + var QoS_Flow v_QoSFlow := valueof(p_QoSFlow); + var charstring v_QoSstring := ""; + var integer i; + var O1_Type v_Identifier; + var octetstring v_Contents; + var integer v_QI5 := 0; + var integer v_Unit := 0; + var integer v_DL_GFBR := 0; + var integer v_UL_GFBR := 0; + var integer v_DL_MFBR := 0; + var integer v_UL_MFBR := 0; + + for (i := 0; i < bit2int(v_QoSFlow.numOfParameters); i := i+1){ + v_Identifier := v_QoSFlow.parameterList[i].id; // @sic R5s190673 sic@ + v_Contents := v_QoSFlow.parameterList[i].qosParam; + select (v_Identifier) { // check the 1st octet of each parameter + case ('01'O){ + v_QI5 := oct2int(v_Contents); + } + case ('03'O){ + v_Unit := oct2int(substr(v_Contents, 0, 1)); + v_DL_GFBR := oct2int(substr(v_Contents, 1, 2)); + v_DL_GFBR := fl_Calculate5G_BitRate(v_Unit, v_DL_GFBR); + } + case ('02'O){ + v_Unit := oct2int(substr(v_Contents, 0, 1)); + v_UL_GFBR := oct2int(substr(v_Contents, 1, 2)); + v_UL_GFBR := fl_Calculate5G_BitRate(v_Unit, v_UL_GFBR); + } + case ('05'O){ + v_Unit := oct2int(substr(v_Contents, 0, 1)); + v_DL_MFBR := oct2int(substr(v_Contents, 1, 2)); + v_DL_MFBR := fl_Calculate5G_BitRate(v_Unit, v_DL_MFBR); + } + case ('04'O){ + v_Unit := oct2int(substr(v_Contents, 0, 1)); + v_UL_MFBR := oct2int(substr(v_Contents, 1, 2)); + v_UL_MFBR := fl_Calculate5G_BitRate(v_Unit, v_UL_MFBR); + } + } + } + if (v_QI5 != 0) { + v_QoSstring := v_QoSstring & int2str(v_QI5); + } else { + FatalError(__FILE__, __LINE__, "There must be a 5QI in the QosFlow"); + } + if (v_DL_GFBR != 0) { + v_QoSstring := v_QoSstring &","& int2str(v_DL_GFBR); + } + if (v_UL_GFBR != 0) { + v_QoSstring := v_QoSstring &","& int2str(v_UL_GFBR); + } + if (v_DL_MFBR != 0) { + v_QoSstring := v_QoSstring &","& int2str(v_DL_MFBR); + } + if (v_UL_MFBR != 0) { + v_QoSstring := v_QoSstring &","& int2str(v_UL_MFBR); + } + return v_QoSstring; + } + + /* + * @desc to convert the PDU_SessionStatus into an integer list of transferred session ids + * @param p_SessionStatus + * @return IntegerList_Type + * @status APPROVED (NR5GC_IRAT) + */ + function f_NG_ConvertPDU_SessionStatus (PDU_SessionStatus p_SessionStatus) return IntegerList_Type + { + var IntegerList_Type v_List := {}; + var integer v_ListPosition := 0; + var integer v_TypePosition; + var integer v_SessionId; + + // check ids 7 - 0 + v_SessionId := 7; + for (v_TypePosition := 0; v_TypePosition < 8; v_TypePosition := v_TypePosition + 1) { + if (p_SessionStatus.psi0_7[v_TypePosition] == '1'B) { + v_List[v_ListPosition] := v_SessionId; + v_ListPosition := v_ListPosition + 1; + } + v_SessionId := v_SessionId - 1; + } + + // check ids 15 to 8 + v_SessionId := 15; + for (v_TypePosition := 0; v_TypePosition < 8; v_TypePosition := v_TypePosition + 1) { + if (p_SessionStatus.psi8_15[v_TypePosition] == '1'B) { + v_List[v_ListPosition] := v_SessionId; + v_ListPosition := v_ListPosition + 1; + } + v_SessionId := v_SessionId - 1; + } + + return v_List; + } + + +} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NAS_Common.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NAS_Common.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eadcbe258cbd72edcee1288c0eb55037f996bbbb --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NAS_Common.ttcn @@ -0,0 +1,723 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-09-14 09:54:06 +0200 (Thu, 14 Sep 2023) $ +// $Rev: 37128 $ +/******************************************************************************/ + +module NG_NAS_Common { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NG_NAS_TypeDefs all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from NAS_CommonTemplates all; + import from Parameters all; + import from CommonIP all; + import from LoopbackIP_PacketFilterTest all; + + type record GMM_MobilityInfo_Type { /* structured type to be stored & passed in/out of GMM Msgs + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + NG_MobileIdentity Guti, + NG_GMM_Cap GMMCap optional, + NG_UE_SecurityCapability UECap optional, + UE_NetworkCap S1NwkCap optional, + PDU_SessionStatus SessionStatus optional, + EPS_BearerContextStatus EPSBearerStatus optional, // @sic R5-206426 sic@ + UERadioCapId UERadioCapId optional // @sic R5-206419 sic@ + }; + + type record GSM_MobilityInfo_Type { /* structured type to be stored & passed in/out of GSM Msgs + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + O1_Type SessionId, // @sic R5s200564 sic@ + ProcedureTransactionIdentifier PTI, + PDU_PDN_DNN_Type PDUType, // @sic R5-206296 sic@ + B3_Type SessionType optional, + DNN DNN optional, + AlwaysOnPDUSessionInd AlwaysOn optional, + ExtdProtocolConfigOptions PCO optional, + integer EPS_Bearer optional, // @sic R5s201094 sic@ + PDN_Index_Type PdnIndex optional, // @sic R5s201094 sic@ + S_NSSAI_Type NSSAI optional // @sic R5s210148 sic@ + }; + + type record of GSM_MobilityInfo_Type PDUSessionInfoList_Type; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + type enumerated DeleteNSSAI_Type {Delete_Default_Configured, Delete_Configured, Delete_Allowed}; /* @status APPROVED (NR5GC) */ + + const ExtdProtocolDiscriminator tsc_EPD_GMM := '01111110'B; // from 24.007 /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const ExtdProtocolDiscriminator tsc_EPD_GSM := '00101110'B; // from 24.007 /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + // NAS message types acc. 24.501 cl.9.7 + const MessageType tsc_MT_NG_RegistrationRequest := '01000001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_RegistrationAccept := '01000010'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_RegistrationComplete := '01000011'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_RegistrationReject := '01000100'B; /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + const MessageType tsc_MT_NG_DeregistrationRequest_MO := '01000101'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_DeregistrationAccept_MO := '01000110'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_DeregistrationRequest_MT := '01000111'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_DeregistrationAccept_MT := '01001000'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_ServiceRequest := '01001100'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_ServiceReject := '01001101'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_ServiceAccept := '01001110'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_CP_Service_Request := '01001111'B; + const MessageType tsc_MT_NG_NetworkSliceSpecificAuthenticationCommand := '01010000'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_NetworkSliceSpecificAuthenticationComplete:= '01010001'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_NetworkSliceSpecificAuthenticationResult := '01010010'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_ConfigurationUpdateCommand := '01010100'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_ConfigurationUpdateComplete := '01010101'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_AuthenticationRequest := '01010110'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_AuthenticationResponse := '01010111'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_AuthenticationReject := '01011000'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_AuthenticationFailure := '01011001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_AuthenticationResult := '01011010'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_IdentityRequest := '01011011'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_IdentityResponse := '01011100'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_SecurityModeCommand := '01011101'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_SecurityModeComplete := '01011110'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_SecurityModeReject := '01011111'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_GMM_Status := '01100100'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_Notification := '01100101'B; + const MessageType tsc_MT_NG_NotificationResponse := '01100110'B; + const MessageType tsc_MT_NG_UL_NASTransport := '01100111'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_DL_NASTransport := '01101000'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const MessageType tsc_MT_NG_PDUSessionEstablishmentRequest := '11000001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_PDUSessionEstablishmentAccept := '11000010'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_PDUSessionEstablishmentReject := '11000011'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_PDUSessionAuthenticationCommand := '11000101'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_PDUSessionAuthenticationComplete:= '11000110'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_PDUSessionAuthenticationResult := '11000111'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_PDUSessionModificationRequest := '11001001'B; /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + const MessageType tsc_MT_NG_PDUSessionModificationReject := '11001010'B; + const MessageType tsc_MT_NG_PDUSessionModificationCommand := '11001011'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT) */ + const MessageType tsc_MT_NG_PDUSessionModificationComplete := '11001100'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT) */ + const MessageType tsc_MT_NG_PDUSessionModificationCommandReject := '11001101'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MT_NG_PDUSessionReleaseRequest := '11010001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_PDUSessionReleaseReject := '11010010'B; + const MessageType tsc_MT_NG_PDUSessionReleaseCommand := '11010011'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_PDUSessionReleaseComplete := '11010100'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const MessageType tsc_MT_NG_GSM_Status := '11010110'B; /* @status APPROVED (NR5GC) */ + + const MessageType tsc_MsgType_NSSAI_DeleteReq := '10100110'B; /* @sic R5-201207 sic@ + @status APPROVED (NR5GC) */ + const MessageType tsc_MsgType_NSSAI_DeleteResp := '10100111'B; /* @sic R5s200339 sic@ + @status APPROVED (NR5GC) */ + const MessageType tsc_MsgType_SetUAIReq := '10101000'B; /* @status APPROVED (NR5GC) */ + const MessageType tsc_MsgType_SetUAIResp := '10101001'B; /* @status APPROVED (NR5GC) */ + + const B8_Type tsc_DeleteNSSAI_DefaultConfiguredNSSAI := '00000000'B; /* @status APPROVED (NR5GC) */ + const B8_Type tsc_DeleteNSSAI_ConfiguredNSSAI := '00000001'B; /* @sic R5s200339 sic@ + @status APPROVED (NR5GC) */ + const B8_Type tsc_DeleteNSSAI_AllowedNSSAI := '00000010'B; /* @sic R5s200339 sic@ + @status APPROVED (NR5GC) */ + + type enumerated TypeOfRegistration_Type {Initial_NoSecurity, Initial_Secure, Mobility, Periodic, Emergency, SNPN_Onboarding}; /* @sic R5-233987 sic@ @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + type enumerated RegistrationAccessType {Access_3GPP, Non3GPP, Both_3GPP_Non3GPP}; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + type enumerated NG_ALL_STATE_Type {STATE_OFF_0A, STATE_OFF_0B, STATE_IDLE_1A, STATE_INACTIVE_2A, STATE_CONNECTED_3A, STATE_CONNECTED_3A_T3540, /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + STATE_DEREGISTERED, STATE_EMERGENCY_RELEASE_CONNECTED, STATE_EMERGENCY_RELEASE_IDLE}; // Used for Postamble @sic R5-214620 sic@ + type NG_ALL_STATE_Type NG_STATE_Type (STATE_OFF_0A, STATE_OFF_0B, STATE_IDLE_1A, STATE_INACTIVE_2A, STATE_CONNECTED_3A, STATE_CONNECTED_3A_T3540); // Used for Preamble /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const B3_Type tsc_NG_RegistrationInitial := '001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegistrationMobility := '010'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegistrationPeriodic := '011'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegistrationEmergency := '100'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegistrationSNPN := '101'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegResult_3GPP := '001'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegResult_Non3GPP := '010'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const B3_Type tsc_NG_RegResult_Both := '011'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const B4_Type tsc_PayloadContainerSMSMsg := '0010'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_PayloadContainerLPPMsg := '0011'B; /* @status APPROVED (POS) */ + const B4_Type tsc_PayloadContainerSORMsg := '0100'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_PayloadContainerUEPolicyMsg := '0101'B; + const B4_Type tsc_PayloadContainerCIoTUserData := '1000'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const O1_Type tsc_QoSFlowParameter_5QI := '01'O; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + const O1_Type tsc_QoSFlowParameter_GFBR_UL := '02'O; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + const O1_Type tsc_QoSFlowParameter_GFBR_DL := '03'O; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + const O1_Type tsc_QoSFlowParameter_MFBR_UL := '04'O; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + const O1_Type tsc_QoSFlowParameter_MFBR_DL := '05'O; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + const O1_Type tsc_QoSFlowParameter_AvWindow := '06'O; + const O1_Type tsc_QoSFlowParameter_EPSBearerId := '07'O; /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + + type enumerated NG_NAS_NumOfPLMN_Type {NG_AllCellsOnSamePLMN, NG_CellsOnDifferentPLMN}; /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + + const B32_Type tsc_NG_TMSI1 := oct2bit('C2345678'O); /* Maps to EUTRA M-TMSI + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const NAS_IdType tsc_IdType_NG_Noidentity := '000'B; /* @status APPROVED (NR5GC) */ + const NAS_IdType tsc_IdType_NG_SUCI := '001'B; /* @status APPROVED (NR5GC) */ + const NAS_IdType tsc_IdType_NG_GUTI := '010'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const NAS_IdType tsc_IdType_NG_IMEI := '011'B; /* @status APPROVED (NR5GC) */ + const NAS_IdType tsc_IdType_NG_STMSI := '100'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + const NAS_IdType tsc_IdType_NG_IMEISV := '101'B; /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + const NAS_CauseValue_Type tsc_NR5GCCause_ServNetNotAuthorized := '01001001'B; /* @status APPROVED (NR5GC) */ + const NAS_CauseValue_Type tsc_NR5GCCause_InvalidPDUSessionIdentity := '00101011'B; /* @status APPROVED (NR5GC) */ + const NAS_CauseValue_Type tsc_NR5GCCause_NoSuitableCellsInTA := '00001111'B; /* @status APPROVED (NR5GC) */ + const NAS_CauseValue_Type tsc_NR5GCCause_Congestion := '00010110'B; /* @status APPROVED (NR5GC) */ + + type record NG_NAS_GutiParameters_Type { /* to be stored in component + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + B8_Type AMF_RegionId, + B10_Type AMF_SetId, + B6_Type AMF_Pointer, + B32_Type NG_TMSI + }; + + template (value) NG_PacketFilterList cs_PacketFilterList_RemoteAddress (B4_Type p_Id, octetstring p_Component) := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + new := {{ + spare := tsc_Spare2, + direction := '11'B, // bi-directional + packetFilterId := p_Id, + len := int2oct(lengthof(p_Component), 1), + contents := p_Component + + }} + }; + + template (value) QoS_Rule cs_QoS_RuleRemoteAccess (O1_Type p_Id, + B1_Type p_DQR, + O1_Type p_Precedence, + B6_Type p_FlowId, + octetstring p_Component, + O2_Type p_Length, + B4_Type p_FilterId) := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + identifier := p_Id, + iel := p_Length, + ruleOperationCode := '001'B, + dqrBit := p_DQR, + numOfPacketFilters := '0001'B, + packetFilterList := cs_PacketFilterList_RemoteAddress (p_FilterId, p_Component), + precedence := p_Precedence, + spare := tsc_Spare1, + segregation := tsc_Spare1, + flowIdentifier := p_FlowId + }; + + template (value) NG_NAS_GutiParameters_Type cs_NG_NAS_GutiParameters(B8_Type p_AMF_RegionId, + B32_Type p_NG_TMSI) := + { // to be stored in component + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + AMF_RegionId := p_AMF_RegionId, + AMF_SetId := int2bit(1, 10), + AMF_Pointer := int2bit(1,6), + NG_TMSI := p_NG_TMSI + }; + + template (value) NG_MobileIdentity cs_NG_MobileIdentity_Guti(template (omit) IEI8_Type p_IEI, + octetstring p_Guti) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := int2oct(lengthof(p_Guti) + 1, 2), // 11 octets in case of GUTI + idDigit1 := '1111'B, // in case of the GUTI + oddEvenInd := '0'B, // in case of the GUTI + typeOfId := tsc_IdType_NG_GUTI, + otherDigits := p_Guti + }; + + template (value) NG_MobileIdentity cs_NG_MobileIdentity_STMSI(template (omit) IEI8_Type p_IEI, + octetstring p_Guti) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := int2oct(lengthof(p_Guti) + 1, 2), // 11 octets in case of GUTI + idDigit1 := '1111'B, // in case of the GUTI + oddEvenInd := '0'B, // in case of the GUTI + typeOfId := tsc_IdType_NG_STMSI, + otherDigits := p_Guti + }; + + template (present) NG_MobileIdentity cr_NG_MobileIdentity_TypeOfId(template (present) B4_Type p_FirstDigit, + template (present) B1_Type p_OddEvenInd, + template (present) octetstring p_OtherDigits, + template (present) NAS_IdType p_TypeOfId := tsc_IdType_NG_IMEISV + ) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, + iel := ?, // @sic R5s190719 sic@ + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := p_TypeOfId, // 3 bits + otherDigits := p_OtherDigits + }; + + template (present) NG_MobileIdentity cr_NG_MobileIdentitySUCI(template (present) B4_Type p_SUPIFormat, + template (present) octetstring p_OtherDigits) := + { /* @status APPROVED (NR5GC) */ + iei := omit, + iel := ?, // @sic R5s190719 sic@ + idDigit1 := p_SUPIFormat, // 4 bits + oddEvenInd := '0'B, // 1 bit + typeOfId := tsc_IdType_NG_SUCI, // 3 bits + otherDigits := p_OtherDigits + }; + + template (present) NG_MobileIdentity cr_NG_MobileIdentityNoIdentity := + { /* @status APPROVED (NR5GC) */ + iei := omit, + iel := '0001'O, + idDigit1 := tsc_Spare4, // 4 bits + oddEvenInd := tsc_Spare1, // 1 bit + typeOfId := tsc_IdType_NG_Noidentity, // 3 bits + otherDigits := omit + }; + + //------------------------------------------------------------------------------------------ + /* + * @desc convert from PLMN and GutiParameters_Type to NAS NG_MobileIdentity + * @param p_NasPLMN + * @param p_GutiParams + * @param p_IEI (default value: '77'O) + * @return template (value) NG_MobileIdentity + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_GutiParameters2MobileIdentity(NAS_PlmnId p_NasPLMN, + NG_NAS_GutiParameters_Type p_GutiParams, + template (omit) IEI8_Type p_IEI := '77'O) return template (value) NG_MobileIdentity + { + var bitstring v_AMFId := p_GutiParams.AMF_RegionId & p_GutiParams.AMF_SetId & p_GutiParams.AMF_Pointer; + var octetstring v_GutiString := p_NasPLMN & bit2oct(v_AMFId) & bit2oct(p_GutiParams.NG_TMSI); + return cs_NG_MobileIdentity_Guti(p_IEI, v_GutiString); + } + + //------------------------------------------------------------------------------------------ + /* + * @desc convert from GutiParameters_Type to NAS NG_MobileIdentity + * @param p_IEI + * @param p_GutiParams + * @return template (value) NG_MobileIdentity + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_S_TMSI2MobileIdentity(template (omit) IEI8_Type p_IEI, + NG_NAS_GutiParameters_Type p_GutiParams) return template (value) NG_MobileIdentity + { + var bitstring v_AMFId := p_GutiParams.AMF_SetId & p_GutiParams.AMF_Pointer; + var octetstring v_STMSIString := bit2oct(v_AMFId) & bit2oct(p_GutiParams.NG_TMSI); + return cs_NG_MobileIdentity_STMSI(p_IEI, v_STMSIString); + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMEISV of type hexstring to NAS NG_MobileIdentity + * @param p_IMEISV + * @return template (present) NG_MobileIdentity + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Imeisv2MobileIdentity(hexstring p_IMEISV) return template (present) NG_MobileIdentity + { + var integer v_ImeiLength := lengthof(p_IMEISV); + var integer v_Odd := (v_ImeiLength rem 2); + var octetstring v_Other := f_ImsiImei2Octetstring (p_IMEISV); + var B4_Type v_FirstDigit := hex2bit(p_IMEISV[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cr_NG_MobileIdentity_TypeOfId(v_FirstDigit, v_OddEvenInd, v_Other); + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert the RejectedS_NSSAI into a charstring for the AT command + * @param p_S_NSSAI + * @return charstring + * @status APPROVED (NR5GC) + */ + function f_ConvertRejectedS_NSSAI_ForATCommand(template (value) RejectedS_NSSAI p_S_NSSAI) return charstring + { + var RejectedS_NSSAI v_S_NSSAI := valueof(p_S_NSSAI); + var charstring v_S_NSSAIstring := ""; + + v_S_NSSAIstring := oct2str(v_S_NSSAI.sst); + if (ispresent(v_S_NSSAI.sd)) { + v_S_NSSAIstring := v_S_NSSAIstring & "." & oct2str(v_S_NSSAI.sd); + } + v_S_NSSAIstring := v_S_NSSAIstring & "#" & int2str(bit2int(v_S_NSSAI.causeValue)); // @sic R5s201142 sic@ + return v_S_NSSAIstring; + } + + /* + * @desc To convert the NSSAI (list of S_NSSAI_Type) into a charstring for the AT command + * @param p_NSSAI + * @return charstring + * @status APPROVED (NR5GC) + */ + function f_Convert_ListOfRejectedNSSAI_ForATCommand(template (value) RejectedNSSAI p_NSSAI) return charstring + { + var integer i; + var integer v_Length := lengthof(p_NSSAI.rejectS_NSSAI); + var charstring v_ListOfNSSAI := ""; + var charstring v_S_NSSAI := ""; + + for (i := 0; i < v_Length; i := i+1) { + v_S_NSSAI := f_ConvertRejectedS_NSSAI_ForATCommand(p_NSSAI.rejectS_NSSAI[i]); + v_ListOfNSSAI := v_ListOfNSSAI & v_S_NSSAI; + if (i < (v_Length-1)) { // add a colon to all but the last one + v_ListOfNSSAI := v_ListOfNSSAI & ":"; + } + } + return v_ListOfNSSAI; + } + + /* + * @desc To convert the NSSAI (list of ExtdRejectedNSSAI) into a charstring for the MMI command + * @param p_NSSAI + * @return charstring + */ + function f_Convert_ListOfExtdRejectedNSSAI_ForMMICommand(template (value) ExtdRejectedNSSAI p_NSSAI) return charstring + { + var integer i; + var integer v_Length := lengthof(p_NSSAI.partialXtd); + var charstring v_ListOfNSSAI := ""; + var charstring v_S_NSSAI := ""; + + for (i := 0; i < v_Length; i := i+1) { + v_S_NSSAI := f_ConvertPartialXtdRejectedS_NSSAI_ForMMICommand(p_NSSAI.partialXtd[i]); + v_ListOfNSSAI := v_ListOfNSSAI & v_S_NSSAI; + if (i < (v_Length-1)) { // add a colon to all but the last one + v_ListOfNSSAI := v_ListOfNSSAI & ":"; + } + } + return v_ListOfNSSAI; + } + + /* + * @desc To convert the PartialXtdRejectedNSSAI into a charstring for the AT command + * @param p_Partial_NSSAI + * @return charstring + */ + function f_ConvertPartialXtdRejectedS_NSSAI_ForMMICommand(template (value) PartialXtdRejectedNSSAI p_Partial_NSSAI) return charstring + { + var PartialXtdRejectedNSSAI v_Partial_NSSAI := valueof(p_Partial_NSSAI); + var XtdRejectedS_NSSAI_List v_Xtd_List; + var XtdRejectedS_NSSAI v_XtdRejectedS_NSSAI; + var integer v_NumOfElements; + var integer i; + var charstring v_S_NSSAIstring := ""; + + if (ischosen (v_Partial_NSSAI.type0)) { + v_NumOfElements := bit2int(v_Partial_NSSAI.type0.numOfElements); + v_Xtd_List := v_Partial_NSSAI.type0.rejectS_NSSAI; + } else { // must be type 1 + // ignore extra field: back off timer + v_NumOfElements := bit2int(v_Partial_NSSAI.type1.numOfElements); + v_Xtd_List := v_Partial_NSSAI.type1.rejectS_NSSAI; + } + + for (i := 0; i < v_NumOfElements; i := i+1) { + v_XtdRejectedS_NSSAI := v_Xtd_List[i]; + v_S_NSSAIstring := v_S_NSSAIstring & f_ConvertXtdRejectedS_NSSAI_ForMMICommand(v_XtdRejectedS_NSSAI); + if (i < (v_NumOfElements-1)) { // add a colon to all but the last one + v_S_NSSAIstring := v_S_NSSAIstring & ":"; + } + } + return v_S_NSSAIstring; + } + + /* + * @desc To convert the XtdRejectedS_NSSAI into a charstring for the AT command + * @param p_Xtd_NSSAI + * @return charstring + */ + function f_ConvertXtdRejectedS_NSSAI_ForMMICommand(XtdRejectedS_NSSAI p_Xtd_NSSAI) return charstring + { + var charstring v_S_NSSAIstring := ""; + + v_S_NSSAIstring := f_ConvertS_NSSAI_VForMMICommand(p_Xtd_NSSAI.snssai); + v_S_NSSAIstring := v_S_NSSAIstring & "#" & int2str(bit2int(p_Xtd_NSSAI.causeValue)); + return v_S_NSSAIstring; + } + + /* + * @desc To convert the S_NSSAI_V into a charstring for the AT command + * @param p_S_NSSAI + * @return charstring + */ + function f_ConvertS_NSSAI_VForMMICommand(S_NSSAI_V p_S_NSSAI) return charstring + { + var charstring v_S_NSSAIstring := ""; + + v_S_NSSAIstring := oct2str(p_S_NSSAI.sst); + if (ispresent(p_S_NSSAI.sd)) { + v_S_NSSAIstring := v_S_NSSAIstring & "." & oct2str(p_S_NSSAI.sd); + } + if (ispresent(p_S_NSSAI.mappedSST)) { + v_S_NSSAIstring := v_S_NSSAIstring & "." & oct2str(p_S_NSSAI.mappedSST); + } + if (ispresent(p_S_NSSAI.mappedSD)) { + v_S_NSSAIstring := v_S_NSSAIstring & "." & oct2str(p_S_NSSAI.mappedSD); + } + return v_S_NSSAIstring; + } + + /* + * @desc To convert the S_NSSAI into a charstring for the AT command + * @param p_S_NSSAI + * @return charstring + * @status APPROVED (IMS, NR5GC) + */ + function f_ConvertS_NSSAI_ForATCommand(template (value) S_NSSAI_LV p_S_NSSAI) return charstring + { + var S_NSSAI_LV v_S_NSSAI := valueof(p_S_NSSAI); + var charstring v_S_NSSAIstring := ""; + + v_S_NSSAIstring := oct2str(v_S_NSSAI.vPart.sst); // @sic R5s221179 Baseline Moving sic@ + if (ispresent(v_S_NSSAI.vPart.sd)) { + v_S_NSSAIstring := v_S_NSSAIstring & "." & oct2str(v_S_NSSAI.vPart.sd); // @sic R5s221179 Baseline Moving sic@ + } + if (ispresent(v_S_NSSAI.vPart.mappedSST)) { + v_S_NSSAIstring := v_S_NSSAIstring & ";" & oct2str(v_S_NSSAI.vPart.mappedSST); // @sic R5s221179 Baseline Moving sic@ + } + if (ispresent(v_S_NSSAI.vPart.mappedSD)) { + v_S_NSSAIstring := v_S_NSSAIstring & "." & oct2str(v_S_NSSAI.vPart.mappedSD); // @sic R5s221179 Baseline Moving sic@ + } + return v_S_NSSAIstring; + } + + /* + * @desc To convert the NSSAI (list of S_NSSAI_Type) into a charstring for the AT command + * @param p_NSSAI + * @return charstring + * @status APPROVED (NR5GC) + */ + function f_Convert_ListOfNSSAI_ForATCommand(template (value) NSSAI p_NSSAI) return charstring + { + var integer i; + var integer v_Length := lengthof(p_NSSAI.lvPart.s_nssai); // @sic R5s221179 Baseline Moving sic@ + var charstring v_ListOfNSSAI := ""; + var charstring v_S_NSSAI := ""; + + for (i := 0; i < v_Length; i := i+1) { + v_S_NSSAI := f_ConvertS_NSSAI_ForATCommand(p_NSSAI.lvPart.s_nssai[i]); // @sic R5s221179 Baseline Moving sic@ + v_ListOfNSSAI := v_ListOfNSSAI & v_S_NSSAI; // @sic R5s200339 sic@ + if (i < (v_Length-1)) { // add a colon to all but the last one + v_ListOfNSSAI := v_ListOfNSSAI & ":"; + } + } + return v_ListOfNSSAI; + } + + /* + * @desc To build QoS Rule for Remote Access + * @param p_RuleNum + * @return template (value) QoS_Rule + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_BuildQoSRuleRemoteAccess (charstring p_RuleNum) return template (value) QoS_Rule + { + var O1_Type v_Id; + var B1_Type v_DQR; + var O1_Type v_Precedence; + var B6_Type v_FlowId; + var octetstring v_Component; + var O2_Type v_Length; + var B4_Type v_FilterId; + + select (p_RuleNum) { + case ("3") { + v_Id := int2oct(str2int(p_RuleNum),1); + v_DQR := '0'B; + v_Precedence := int2oct(str2int(p_RuleNum),1); + v_FlowId := '000001'B; + v_FilterId := '0010'B; + v_Component := fl_BuildRemoteAddressPacketFilter("2"); + } + case ("4") { + v_Id := int2oct(str2int(p_RuleNum),1); + v_DQR := '1'B; + v_Precedence := int2oct(str2int(p_RuleNum),1); + v_FlowId := '000010'B; + v_FilterId := '0011'B; + v_Component := fl_BuildRemoteAddressPacketFilter("3"); + } + case ("4a") { + v_Id := '0F'O; + v_DQR := '0'B; + v_Precedence := '0F'O; + v_FlowId := '000100'B; + v_FilterId := '1111'B; + v_Component := fl_BuildRemoteAddressPacketFilter("3a"); + } + case ("5") { + v_Id := int2oct(str2int(p_RuleNum),1); + v_DQR := '0'B; + v_Precedence := int2oct(str2int(p_RuleNum),1); + v_FlowId := '000101'B; + v_FilterId := '0100'B; + v_Component := fl_BuildRemoteAddressPacketFilter("4"); + } + case ("6") { + v_Id := int2oct(str2int(p_RuleNum),1); + v_DQR := '0'B; + v_Precedence := int2oct(str2int(p_RuleNum),1); + v_FlowId := '000110'B; + v_FilterId := '0101'B; + v_Component := fl_BuildRemoteAddressPacketFilter("5"); + } + } + v_Length := int2oct(lengthof(v_Component) + 5, 2); // @sic R5s190944 sic@ + return cs_QoS_RuleRemoteAccess(v_Id, v_DQR, v_Precedence, v_FlowId, v_Component, v_Length, v_FilterId); + } + + /* + * @desc Build a Remote Address Packet Filter according to 38.508-1 cl. 4.8.2 + * @param p_FilterNum + * @return octetstring + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_BuildRemoteAddressPacketFilter (charstring p_FilterNum) return octetstring + { + if (pc_IPv6) { + return fl_BuildRemoteAddressPrefixLengthIPv6 (p_FilterNum); + } else { // Must be IPv4 only + return fl_BuildRemoteAddressPacketFilterIPv4 (p_FilterNum); + } + } + + /* + * @desc Build a Remote Address Packet Filter for IPv4 according to 38.508-1 cl. 4.8.2 + * @param p_FilterNum + * @return octetstring + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_BuildRemoteAddressPacketFilterIPv4 (charstring p_FilterNum) return octetstring + { + var template (value) PacketFilterComponent v_Component; + var bitstring v_EncodedComponent; + + v_Component := cs_PktFilterCompIPv4RemoteAddress(fl_GetIPv4Address(p_FilterNum), tsc_IPv4Mask); + v_EncodedComponent := encvalue(v_Component); + return bit2oct(v_EncodedComponent); + } + + /* + * @desc Build a Remote Address Packet Filter for IPv6 according to 38.508-1 cl. 4.8.2 + * @param p_FilterNum + * @return octetstring + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_BuildRemoteAddressPrefixLengthIPv6 (charstring p_FilterNum) return octetstring + { + var O1_Type v_PrefixLength := '64'O; + var octetstring v_PacketFilter; + + v_PacketFilter := '21'O; // id = IPv6 remote address / Prefix length + v_PacketFilter := v_PacketFilter & f_Convert_IPv6Addr2OctString(fl_GetIPv6Address(p_FilterNum)); + v_PacketFilter := v_PacketFilter & v_PrefixLength; + return v_PacketFilter; + } + + /* + * @desc Build an IPv4 address according to 38.508-1 cl. 4.8.2 + * @param p_FilterNum + * @return charstring + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_GetIPv4Address (charstring p_FilterNum) return charstring + { + var charstring v_IPv4_Address := "10.10.10."; + select (p_FilterNum) { + case ("2") { + v_IPv4_Address := v_IPv4_Address & "2"; + } + case ("3") { + v_IPv4_Address := v_IPv4_Address & "3"; + } + case ("3a") { + v_IPv4_Address := v_IPv4_Address & "30"; + } + case ("4") { + v_IPv4_Address := v_IPv4_Address & "4"; + } + case ("5") { + v_IPv4_Address := v_IPv4_Address & "5"; + } + case else { + // out of supported range + FatalError(__FILE__, __LINE__, "unsupported packet filter"); + } + } + return v_IPv4_Address; + } + + /* + * @desc Build an IPv4 address according to 38.508-1 cl. 4.8.2 + * @param p_FilterNum + * @return charstring + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_GetIPv6Address (charstring p_FilterNum) return charstring + { + var charstring v_IPv6_Address; + select (p_FilterNum) { + case ("2") { + v_IPv6_Address := "C0C0:C0C0:C0C0:C002:C0C0:C0C0:C0C0:C0C0"; + } + case ("3") { + v_IPv6_Address := "C0C0:C0C0:C0C0:C003:C0C0:C0C0:C0C0:C0C0"; + } + case ("3a") { + v_IPv6_Address := "C0C0:C0C0:C0C0:C030:C0C0:C0C0:C0C0:C0C0"; + } + case ("4") { + v_IPv6_Address := "C0C0:C0C0:C0C0:C004:C0C0:C0C0:C0C0:C0C0"; + } + case ("5") { + v_IPv6_Address := "C0C0:C0C0:C0C0:C005:C0C0:C0C0:C0C0:C0C0"; + } + case else { + // out of supported range + FatalError(__FILE__, __LINE__, "unsupported packet filter"); + } + } + return v_IPv6_Address; + } + + //---------------------------------------------------------------------------- + /* + * @desc Create a datagram that will fit the packet filter indicated in the parameter + * @param p_FilterNum + * @return octetstring + * @status APPROVED (NR5GC) + */ + function f_SdapTests_CreateDatagram(charstring p_FilterNum) return octetstring + { + var charstring v_IPv4_DestAddr := fl_GetIPv4Address(p_FilterNum); + var charstring v_IPv6_DestAddr := fl_GetIPv6Address(p_FilterNum); + var charstring v_IPv4_SourceAddr := "192.168.0.1"; + var charstring v_IPv6_SourceAddr := "fe80::1:1"; + var UInt20_Type v_IPv6_FlowLabel := 10; + var UInt16_Type v_SourcePort := 60001; + var UInt16_Type v_DestPort := 60350; + var O1_Type v_TOS_TC := 'A9'O; + var UInt8_Type v_Protocol := tsc_IP_Protocol_UDP; + var O4_Type v_IPSecSPI := '0F80F000'O; + var boolean v_IpTypeIsIPv4 := false; + + if (pc_IPv6) {} //variable initialised to false + else if (pc_IPv4) { + v_IpTypeIsIPv4 := true; + } + else { + FatalError(__FILE__, __LINE__, "Neither IPv4 nor IPv6 supported"); + } + + return f_PacketFilterTest_CreateDatagram(v_IpTypeIsIPv4, + v_Protocol, + v_IPv4_SourceAddr, + v_IPv4_DestAddr, + v_IPv6_SourceAddr, + v_IPv6_DestAddr, + v_IPv6_FlowLabel, + v_SourcePort, + v_DestPort, + v_IPSecSPI, + v_TOS_TC); + } + +} with { encode "RAW"/*"NAS Types"*/} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NAS_EncdecDeclarations.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NAS_EncdecDeclarations.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d8d7202ae29048046bbb7cd3ceb71f4f8fdf1b48 --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NAS_EncdecDeclarations.ttcn @@ -0,0 +1,46 @@ +module NG_NAS_EncdecDeclarations { + + import from NG_NAS_MsgContainers all; + import from NG_NAS_TypeDefs all; + import from EAP_TypeDefs all; + + + external function fx_enc_NG_NAS_UL_Message_Type (NG_NAS_UL_Message_Type p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_NG_NAS_UL_Message_Type (inout bitstring pdu, out NG_NAS_UL_Message_Type p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_NG_NAS_DL_Message_Type (NG_NAS_DL_Message_Type p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_NG_NAS_DL_Message_Type (inout bitstring pdu, out NG_NAS_DL_Message_Type p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + //external function fx_dec_NG_NAS_DL_Message_Type (in octetstring pdu) return NG_NAS_DL_Message_Type + //with {extension "prototype(convert)" + // extension "decode(RAW)" + // }; + + external function fx_enc_IntraN1TransparentContainer (IntraN1TransparentContainer p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_IntraN1TransparentContainer (inout bitstring pdu, out IntraN1TransparentContainer p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_CIoTSmallDataContainer (CIoTSmallDataContainer p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_CIoTSmallDataContainer (inout bitstring pdu, out CIoTSmallDataContainer p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + + external function fx_enc_EAP_Message_Type (EAP_Message_Type p) return bitstring + with {extension "prototype(convert) encode(EAP Types)"} + + external function fx_dec_EAP_Message_Type (inout bitstring pdu, out EAP_Message_Type p) return integer + with {extension "prototype(sliding) decode(EAP Types)"} + +} // End of module module NG_NAS_EncdecDeclarations diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NAS_MsgContainers.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NAS_MsgContainers.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7be34e7ff109a49996759d0667c995a7827a048d --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NAS_MsgContainers.ttcn @@ -0,0 +1,194 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-09-13 13:03:05 +0200 (Tue, 13 Sep 2022) $ +// $Rev: 34148 $ +/******************************************************************************/ + +module NG_NAS_MsgContainers +{ + // import from NR_RRC_ASN1_Definitions language "ASN.1:2002" all with {encode "UNALIGNED_PER_OctetAligned"}; // needed to get definition of maxDRB */ + import from NG_NAS_TypeDefs all; + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_LoopBack_TypeDefs all; + import from Common4G5G_LoopBack all; + import from EPS_NAS_TypeDefs all; + + type union NG_NAS_UL_Message_Type { /* NAS message with direction 'UE to network ' or 'both' */ + NG_SECURITY_PROTECTED_NAS_MESSAGE security_Protected_Nas_Message, + NG_AUTHENTICATION_FAILURE authentication_Failure, + NG_AUTHENTICATION_RESPONSE authentication_Response, + NG_CONFIGURATION_UPDATE_COMPLETE configuration_Update_Complete, + NG_CP_SERVICE_REQUEST cp_Service_Request, // @sic R5s201387 Baseline Moving sic@ + NG_DEREGISTRATION_ACCEPT deregistration_Accept, + NG_DEREGISTRATION_REQUEST_MO deregistration_RequestMO, + NG_GMM_STATUS gmm_Status, + NG_GSM_STATUS gsm_Status, + NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE network_Slice_Specific_Authentication_Complete, // @sic R5s201387 Baseline Moving sic@ + NG_IDENTITY_RESPONSE identity_Response, + NG_NOTIFICATION_RESPONSE notification_Response, + NG_PDU_SESSION_AUTHENTICATION_COMPLETE pdu_Session_Authentication_Complete, + NG_PDU_SESSION_ESTABLISHMENT_REQUEST pdu_Session_Establishment_Request, + NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT pdu_Session_Modification_Command_Reject, + NG_PDU_SESSION_MODIFICATION_COMPLETE pdu_Session_Modification_Complete, + NG_PDU_SESSION_MODIFICATION_REQUEST pdu_Session_Modification_Request, + NG_PDU_SESSION_RELEASE_COMPLETE pdu_Session_Release_Complete, + NG_PDU_SESSION_RELEASE_REQUEST pdu_Session_Release_Request, + NG_REGISTRATION_COMPLETE registration_Complete, + NG_REGISTRATION_REQUEST registration_Request, + NG_SECURITY_MODE_COMPLETE security_Mode_Complete, + NG_SECURITY_MODE_REJECT security_Mode_Reject, + NG_SERVICE_REQUEST service_Request, + NG_UL_NAS_TRANSPORT ul_Nas_Transport, + + ACTIVATE_TEST_MODE_COMPLETE activate_Test_Mode_Complete, + DEACTIVATE_TEST_MODE_COMPLETE deactivate_Test_Mode_Complete, + + CLOSE_UE_TEST_LOOP_COMPLETE close_Ue_Test_Loop_Complete, + OPEN_UE_TEST_LOOP_COMPLETE open_Ue_Test_Loop_Complete, + + NSSAI_DELETE_RESPONSE nssai_Delete_Response, + SET_UAI_RESPONSE set_UAI_Response, + SET_UL_MESSAGE_RESPONSE set_UL_Message_Response, + UE_TEST_LOOP_NR_SIDELINK_COUNTER_RESPONSE test_Loop_Sidelink_Counter_Response // @sic R5-225291 sic@ + } with { + variant "TAG( + security_Protected_Nas_Message, securityHeaderType = '0001'B; + security_Protected_Nas_Message, securityHeaderType = '0010'B; + security_Protected_Nas_Message, securityHeaderType = '0011'B; + security_Protected_Nas_Message, securityHeaderType = '0100'B; + registration_Request, messageType = '01000001'B; + registration_Complete, messageType = '01000011'B; + authentication_Response, messageType = '01010111'B; + security_Mode_Complete, messageType = '01011110'B; + ul_Nas_Transport, messageType = '01100111'B; + )" + + } + + type union NG_NAS_DL_Message_Type { /* NAS message with direction 'network to UE' or 'both' */ + NG_SECURITY_PROTECTED_NAS_MESSAGE security_Protected_Nas_Message, + NG_AUTHENTICATION_REJECT authentication_Reject, + NG_AUTHENTICATION_REQUEST authentication_Request, + NG_AUTHENTICATION_RESULT authentication_Result, + NG_CONFIGURATION_UPDATE_COMMAND configuration_Update_Command, + NG_DEREGISTRATION_ACCEPT deregistration_Accept, + NG_DEREGISTRATION_REQUEST_MT deregistration_RequestMT, + NG_DL_NAS_TRANSPORT dl_Nas_Transport, + NG_GMM_STATUS gmm_Status, + NG_GSM_STATUS gsm_Status, + NG_IDENTITY_REQUEST identity_Request, + NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND network_Slice_Specific_Authentication_Command, // @sic R5s201387 Baseline Moving sic@ + NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT network_Slice_Specific_Authentication_Result, // @sic R5s201387 Baseline Moving sic@ + NG_NOTIFICATION notification, + NG_PDU_SESSION_AUTHENTICATION_COMMAND pdu_Session_Authentication_Command, + NG_PDU_SESSION_AUTHENTICATION_RESULT pdu_Session_Authentication_Result, + NG_PDU_SESSION_ESTABLISHMENT_ACCEPT pdu_Session_Establishment_Accept, + NG_PDU_SESSION_ESTABLISHMENT_REJECT pdu_Session_Establishment_Reject, + NG_PDU_SESSION_MODIFICATION_COMMAND pdu_Session_Modification_Command, + NG_PDU_SESSION_MODIFICATION_REJECT pdu_Session_Modification_Reject, + NG_PDU_SESSION_RELEASE_COMMAND pdu_Session_Release_Command, + NG_PDU_SESSION_RELEASE_REJECT pdu_Session_Release_Reject, + NG_REGISTRATION_ACCEPT registration_Accept, + NG_REGISTRATION_REJECT registration_Reject, + NG_SECURITY_MODE_COMMAND security_Mode_Command, + NG_SERVICE_ACCEPT service_Accept, + NG_SERVICE_REJECT service_Reject, + + RESETUEPOSITIONINGSTOREDINFORMATION reset_UE_Positioning_Stored_Information, // For AGNSS + + ACTIVATE_TEST_MODE activate_Test_Mode, + DEACTIVATE_TEST_MODE deactivate_Test_Mode, + + NR_CLOSE_UE_TEST_LOOP close_Ue_Test_Loop, + OPEN_UE_TEST_LOOP open_Ue_Test_Loop, + + NSSAI_DELETE_REQUEST nssai_Delete_Request, + SET_UAI_REQUEST set_UAI_Request, + SET_UL_MESSAGE_REQUEST set_UL_Message_Request, // @sic R5-216275 sic@ + UE_TEST_LOOP_NR_SIDELINK_COUNTER_REQUEST test_Loop_Sidelink_Counter_Request, // @sic R5-225291 sic@ + + UPDATE_UE_LOCATION_INFORMATION update_Ue_Location_Information //@sic R5-213421 sic@ + + } with { + variant "TAG( + security_Protected_Nas_Message, securityHeaderType = '0001'B; + security_Protected_Nas_Message, securityHeaderType = '0010'B; + security_Protected_Nas_Message, securityHeaderType = '0011'B; + security_Protected_Nas_Message, securityHeaderType = '0100'B; + registration_Accept, messageType = '01000010'B; + authentication_Request, messageType = '01010110'B; + security_Mode_Command, messageType = '01011101'B; + configuration_Update_Command, messageType = '01010100'B; + dl_Nas_Transport, messageType = '01101000'B; + )" + } + + //**************************************************************************** + // NAS SECURITY PROTECTION + //**************************************************************************** + + type record NG_NAS_SecurityProtectionInfoUL_Type { + SecurityHeaderType Status, + NasCount_Type NasCount + }; + + type record NG_NAS_SecurityProtectionInfoDL_Type { + SecurityHeaderType Status, + boolean ForceMacError /* Force the NAS emulator to send NAS PDU with erroneous MAC */ + }; + + //**************************************************************************** + // Generic definition of NAS PDUs containing other piggy-backed PDUs + //**************************************************************************** + // Note: the type definition allows much more combinitions than being valid acc. to the NAS standard + // appropriate templates shall restrict the generic type definitions + // Working Assumptions: + // - acc. to DEC 08 ASN.1 in RRCConnectionReconfiguration there can be up to maxDRB times DedicatedInfoNAS + // => several EMM messages can be contained each having its own security protection + // - within any DedicatedInfoNAS there is one security protected NAS PDU + // (i.e. the assumption is that the security container contains just one PDU) + // - the EMM PDU being contained in the DedicatedInfoNAS may contain further piggy-backing: + // even though in 24.301 V8.0.0 it is stated that + // "The purpose of the ESM message container information element is to enable piggybacked transfer of + // a single ESM message within an EMM message" (cl. 9.9.3.15) + // the type definition allows even more than one piggy-backed PDU and as well further levels of piggybacking + // => type definitions can be applied even when the standard will be enhanced in the future + + // recursive type definition: + type record NG_NAS_UL_Pdu_Type { + NG_NAS_UL_Message_Type Msg, + NG_NAS_UL_PduList_Type PiggybackedPduList optional + }; + + type record of NG_NAS_UL_Pdu_Type NG_NAS_UL_PduList_Type; + + // recursive type definition: + type record NG_NAS_DL_Pdu_Type { + NG_NAS_DL_Message_Type Msg, + NG_NAS_DL_PduList_Type PiggybackedPduList optional + }; + + type record of NG_NAS_DL_Pdu_Type NG_NAS_DL_PduList_Type; + + type record NG_NAS_MSG_Indication_Type { + NG_NAS_SecurityProtectionInfoUL_Type SecurityProtection, /* contains security status and NAS COUNT */ + NG_NAS_UL_Pdu_Type Pdu /* => only one NAS PDU on top level */ + }; + + type record length(1) of NG_NAS_MSG_Indication_Type NG_NAS_MSG_IndicationList_Type; + + type record NG_NAS_MSG_Request_Type { + NG_NAS_SecurityProtectionInfoDL_Type SecurityProtection, /* contains security status */ + NG_NAS_DL_Pdu_Type Pdu /* => only one NAS PDU on top level */ + }; + + type record of NG_NAS_MSG_Request_Type NG_NAS_MSG_RequestList_Type; + +// The encoding rule is needed because the types in this file are part of the overall message sent over the air +} with { encode "RAW"/*"NAS Types"*/extension "errorbehavior(ALL:WARNING)"} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NAS_SecurityFunctions.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NAS_SecurityFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..f524609bb9fd500b4d4e31d063a8259c2507362e --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NAS_SecurityFunctions.ttcn @@ -0,0 +1,901 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-03-21 13:21:41 +0100 (Tue, 21 Mar 2023) $ +// $Rev: 35672 $ +/******************************************************************************/ +module NG_NAS_SecurityFunctions { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_AuthenticationCommon all; + import from NG_NasEmu_CtrlAspTypes all; + import from EUTRA_NR_SecurityFunctions all; + import from Parameters all; + import from NAS_5GC_Parameters all; + import from EAP_TypeDefs all; + + //============================================================================ + // constants and types + + type record NG_NAS_SecurityParams_Type { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // Keys shared with NR + KDF_Type KDF, + B3_Type KSIamf, // 3 bit KSIasme used when Authentication is performed by MME. + B256_Type Ks, // = Ck || IK + B256_Type KAMF, + // NAS keys + bitstring MK, // Master key MK in RFC 5448 to be used to derive other keys acc. TS 33.501 cl. 6.2.1 + B256_Type KAUSF, + B256_Type KSEAF, + octetstring ABBA, + // NAS Security structures + NG_NAS_SecurityInfo_Type NAS_Integrity, + NG_NAS_SecurityInfo_Type NAS_Ciphering, + Common_AuthenticationParams_Type AuthParams + }; + + //============================================================================ + // TEMPLATES + //---------------------------------------------------------------------------- + + const B4_Type tsc_NG_Integrity_Snow3G := '0001'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_NG_Integrity_AES := '0010'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_NG_Integrity_ZUC := '0011'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_NG_Encryption_Snow3G := '0001'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_NG_Encryption_AES := '0010'B; /* @status APPROVED (NR5GC) */ + const B4_Type tsc_NG_Encryption_ZUC := '0011'B; /* @status APPROVED (NR5GC) */ + + template (value) NG_NAS_SecurityParams_Type cs_NG_NAS_SecurityParamsInit := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + KDF := tsc_KDF_HMAC_SHA_256, + KSIamf := '111'B, //un initialised + Ks := tsc_AuthUndefinedB256, + KAMF := tsc_AuthUndefinedB256, + MK := tsc_AuthUndefinedB256, + KAUSF := tsc_AuthUndefinedB256, + KSEAF := tsc_AuthUndefinedB256, + ABBA := '0000'O, + NAS_Integrity := cs_NG_NAS_SecurityInfo (px_NAS_5GC_IntegrityAlgorithm, tsc_AuthUndefinedB128), + NAS_Ciphering := cs_NG_NAS_SecurityInfo (px_NAS_5GC_CipheringAlgorithm, tsc_AuthUndefinedB128), + AuthParams := cs_CommonAuthParams_Init (px_eAuthRAND) + }; + + template (value) NG_NAS_SecurityInfo_Type cs_NG_NAS_SecurityInfo(B4_Type p_Algo, + B128_Key_Type p_Key) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Algorithm := p_Algo, + K_NAS := p_Key + }; + + template (value) EAP_Message_Type cs_EAP_Request_AKAChallenge(O2_Type p_Length, + template (value) EAP_AT_RAND p_RAND, + template (value) EAP_AT_AUTN p_AUTN, + template (value) EAP_AT_KDF p_KDF, + template (value) EAP_AT_KDF_INPUT p_KDF_INPUT, + template (value) EAP_AT_MAC p_MAC, + O1_Type p_Id) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + akaChallenge_Req := { // @sic R5s200288 sic@ + code := '01'O, // Request - RFC 4187 cl. 8.1 + id := p_Id, // RFC 3748 cl. 4 @sic R5s201410 sic@ + len := p_Length, // RFC 3748 cl. 4 + type_ := '32'O, // RFC 5448 cl. 6.1 + subtype := '01'O, // AKA-Challenge as in RFC 4187 cl. 11 + reserved := '0000'O, // Set to 0 when sending, ignored by the receiver + attributes := { + rand := p_RAND, + autn := p_AUTN, + kdf := p_KDF, + kdfInput := p_KDF_INPUT, + mac := p_MAC, + res := omit, + auts := omit, + padd := omit, + permIdReq := omit, + notification := omit, + anyIdReq := omit, + id := omit, + versionList := omit, + selectedVersion := omit, + fullauthIdReq := omit, + counter := omit, + counterTooSmall := omit, + nonceS := omit, + clientErrorCode := omit, + iv := omit, + nextPseudonym := omit, + nextReauthId := omit, + checkCode := omit, + resultInd := omit + } + } + }; + + template (present) EAP_Message_Type cr_EAP_Response_AKAChallenge(O2_Type p_Length, + template (present) EAP_AT_RES p_RES, + template (present) EAP_AT_MAC p_MAC, + template EAP_AT_RESULT_IND p_ResultInd := *, + O1_Type p_Id) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + akaChallenge_Rsp := { // @sic R5200288, R5s200400 sic@ + code := '02'O, // Response - RFC 4187 cl. 8.1 + id := p_Id, // RFC 3748 cl. 4 @sic R5s201483 sic@ + len := p_Length, // RFC 3748 cl. 4 + type_ := '32'O, // RFC 5448 cl. 6.1 + subtype := '01'O, // AKA-Challenge as in RFC 4187 cl. 11 + reserved := ?, // Set to 0 when sending, ignored by the receiver + attributes := { + res := p_RES, + mac := p_MAC, + resultInd := p_ResultInd, // @sic R5-201142 sic@ + padd := *, + iv := *, + checkCode := *, + rand := omit, + autn := omit, + auts := omit, + permIdReq := omit, + notification := omit, + anyIdReq := omit, + id := omit, + versionList := omit, + selectedVersion := omit, + fullauthIdReq := omit, + counter := omit, + counterTooSmall := omit, + nonceS := omit, + clientErrorCode := omit, + nextPseudonym := omit, + nextReauthId := omit, + kdf := omit, + kdfInput := omit + } + } + }; + + template (value) EAP_Message_Type cs_EAP_Success (O1_Type p_Id := '00'O) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + success := { + code := '03'O, // Success + id := p_Id, // RFC 3748 cl. 4 + len := '0004'O // RFC 3748 cl. 4.1 + } + }; + + template (value) EAP_Message_Type cs_EAP_Failure (O1_Type p_Id := '00'O) := + { /* @status APPROVED (NR5GC) */ + failure := { + code := '04'O, // Failure + id := p_Id, // RFC 3748 cl. 4 + len := '0004'O // RFC 3748 cl. 4.1 + } + }; + + template (value) EAP_AT_RAND cs_EAP_AT_RAND (O16_Type p_Rand) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // RFC 4187 cl. 10.6 + attributeType := '01'O, + len := '05'O, + reserved := '0000'O, + rand := p_Rand + }; + template (value) EAP_AT_AUTN cs_EAP_AT_AUTN (O16_Type p_AUTN) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // RFC 4187 cl. 10.7 + attributeType := '02'O, + len := '05'O, + reserved := '0000'O, + autn := p_AUTN + }; + template (value) EAP_AT_KDF cs_EAP_AT_KDF := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // RFC 5448 cl. 3.2 + attributeType := '18'O, + len := '01'O, + keyDerivationFunction := '0001'O // RFC 5448 cl. 3.3 + }; + template (value) EAP_AT_KDF_INPUT cs_EAP_AT_KDF_INPUT (octetstring p_Name, O2_Type p_ActualLength) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // RFC 5448 cl. 3.1 + attributeType := '17'O, + len := int2oct(lengthof(p_Name)/4 + 1, 1), + actualNetworkNamelen := p_ActualLength, + networkName := p_Name + }; + template (value) EAP_AT_MAC cs_EAP_AT_MAC (O16_Type p_MAC) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // RFC 4187 cl. 10.15 + attributeType := '0B'O, + len := '05'O, + reserved := '0000'O, + mac := p_MAC + }; + template (present) EAP_AT_RES cr_EAP_AT_RES (octetstring p_Res, O2_Type p_ActualLength) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // RFC 4187 cl. 10.8 + attributeType := ('03'O), + len := int2oct(lengthof(p_Res)/4 + 1, 1), + reslen := p_ActualLength, + res := p_Res + }; + + //---------------------------------------------------------------------------- + /* + * @desc Used when building the network name from the PLMN + * @param p_NAS_PlmnId + * @return charstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_Nas2SNN_MNC(NAS_PlmnId p_NAS_PlmnId) return charstring + { + var charstring v_MNC := ""; + var hexstring v_PLMN_hexstring := oct2hex(p_NAS_PlmnId); + + if (v_PLMN_hexstring[2] == 'F'H) { + v_MNC := "0"; + } + v_MNC := v_MNC & hex2str(v_PLMN_hexstring[5]) & hex2str(v_PLMN_hexstring[4]); + if (v_PLMN_hexstring[2] != 'F'H) { // add last digit if not F + v_MNC := v_MNC & hex2str(v_PLMN_hexstring[2]); + } + return v_MNC; + } + + /* + * @desc Used when building the network name from the PLMN + * @param p_NAS_PlmnId + * @return charstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_Nas2SNN_MCC(NAS_PlmnId p_NAS_PlmnId) return charstring + { + var charstring v_MCC; + var hexstring v_PLMN_hexstring := oct2hex(p_NAS_PlmnId); + + v_MCC := hex2str(v_PLMN_hexstring[1]) & hex2str(v_PLMN_hexstring[0]) & hex2str(v_PLMN_hexstring[3]); + + return v_MCC; + } + + /* + * @desc To build the Serving Network Name + * @param p_PLMN + * @param p_NID (default value: omit) + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_GetServingNetworkName (NAS_PlmnId p_PLMN, + template (omit) hexstring p_NID := omit) return octetstring + { + var charstring v_P0 := "5G:mnc" & fl_Nas2SNN_MNC(p_PLMN) & ".mcc" & fl_Nas2SNN_MCC(p_PLMN) & ".3gppnetwork.org"; + if (isvalue(p_NID)) { // @sic R5s220753 sic@ + v_P0 := v_P0 & ":" & hex2str (valueof(p_NID)); + } + return char2oct (v_P0); + } + + /* + * @desc To build the NAI + * @param p_PLMN + * @param p_Identity + * @return octetstring + */ + function fl_GetNAI (NAS_PlmnId p_PLMN, hexstring p_Identity := px_IMSI_Def) return octetstring + { + var charstring v_P0 := hex2str(p_Identity) & "@nai.5gc.mnc" & fl_Nas2SNN_MNC(p_PLMN) & ".mcc" & fl_Nas2SNN_MCC(p_PLMN) & ".3gppnetwork.org"; // @sic R5s230215 sic@ + return char2oct (v_P0); + } + + //============================================================================ + // Group of S functions defined in Annex A of 33.501 + //---------------------------------------------------------------------------- + /* + * @desc KAUSF derivation function; As per annex A.2 of 33.501 + * @param p_AuthParams + * @param p_KDF + * @param p_Ks + * @param p_PLMN + * @param p_NID (default value: omit) + * @return B256_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Authentication_A2(Common_AuthenticationParams_Type p_AuthParams, + KDF_Type p_KDF, + B256_Type p_Ks, + NAS_PlmnId p_PLMN, + template (omit) hexstring p_NID := omit) return B256_Type + { + const octetstring const_S6A_FC := '6A'O; + var octetstring v_S; + var octetstring v_P0; + + // Generation of String + v_S := const_S6A_FC; + //FC = 0x6A + v_P0 := fl_GetServingNetworkName(p_PLMN, p_NID); // @sic R5s220753 sic@ + v_S := (v_S & v_P0); + //P0 = serving network ID + v_S := (v_S & int2oct(lengthof(v_P0), 2)) ; + //L0 = length of serving network ID (i.e. 0x00 0x03) + v_S := ( v_S & ( substr (( bit2oct ( p_AuthParams.AUTN )) , 0,6 ))); + //P1 = SQN XOR AK + // to have MSB 6 bytes which is SQN xor AK and truncated as SQN xor AK is first 6 bytes of AUTN + v_S := ( v_S & '0006'O ); + //L1 = length of SQN XOR AK (i.e. 0x00 0x06) + return fx_KeyDerivationFunction( p_KDF, p_Ks, v_S ); + } + + //-------------------------------------------------------------------------- + /* + * @desc CK' and IK' derivation function; As per annex A.3 of 33.501 + * @param p_AuthParams + * @param p_KDF + * @param p_Ks + * @param p_PLMN + * @param p_NID (default value: omit) + * @return B256_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Authentication_A3(Common_AuthenticationParams_Type p_AuthParams, + KDF_Type p_KDF, + B256_Type p_Ks, + NAS_PlmnId p_PLMN, + template (omit) hexstring p_NID := omit) return B256_Type + { + const octetstring const_S20_FC := '20'O; + var octetstring v_S; + var octetstring v_P0; + + // Generation of String + v_S := const_S20_FC; + //FC = 0x20 + v_P0 := fl_GetServingNetworkName(p_PLMN, p_NID); // @sic R5s220753 sic@ + v_S := (v_S & v_P0); + //P0 = serving network ID + v_S := (v_S & int2oct(lengthof(v_P0), 2)) ; + //L0 = length of serving network ID (i.e. 0x00 0x03) + v_S := ( v_S & ( substr (( bit2oct ( p_AuthParams.AUTN )) , 0,6 ))); + //P1 = SQN XOR AK + // to have MSB 6 bytes which is SQN xor AK and truncated as SQN xor AK is first 6 bytes of AUTN + v_S := ( v_S & '0006'O ); + //L1 = length of SQN XOR AK (i.e. 0x00 0x06) + return fx_KeyDerivationFunction( p_KDF, p_Ks, v_S ); + } + + //-------------------------------------------------------------------------- + /* + * @desc RES* and XRES* derivation functions + * As per annex A.4 of 33.501 + * @param p_PLMN + * @param p_AuthParams + * @param p_KDF + * @param p_Key + * @param p_NID (default value: omit) + * @return B128_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Authentication_A4(NAS_PlmnId p_PLMN, + Common_AuthenticationParams_Type p_AuthParams, + KDF_Type p_KDF, + B256_Type p_Key, + template (omit) hexstring p_NID := omit) return B128_Type + { + const octetstring const_S6B_FC :='6B'O; + var octetstring v_S; + var octetstring v_P0; + + // Generation of String + v_S := const_S6B_FC; + //FC = 0x6B + v_P0 := fl_GetServingNetworkName(p_PLMN, p_NID); // @sic R5s220753 sic@ + v_S := (v_S & v_P0); + //P0 = serving network ID + v_S := (v_S & int2oct(lengthof(v_P0), 2)) ; + //L0 = length of serving network ID + v_S := ( v_S & bit2oct ( p_AuthParams.RandValue ) ); + //P1 = RAND + v_S := ( v_S & '0010'O ); + //L1 = length of RAND (i.e. 0x00 0x10) + v_S := ( v_S & bit2oct (substr(p_AuthParams.XRES, 0, px_NAS_5GC_XRES_Length*8))); // @sic R5s190394 sic@ + //P2 = RES or XRES + v_S := ( v_S & int2oct(px_NAS_5GC_XRES_Length, 2) ); // @sic R5w190117 sic@ + //L2 = length of RES/XRES (e.g. 0x00 0x10) + + return substr(fx_KeyDerivationFunction(p_KDF, p_Key, v_S), 128, 128); + // returns LSB 128 bits[truncated] of the key generated + } + + //-------------------------------------------------------------------------- + /* + * @desc KSEAF derivation function + * As per annex A.6 of 33.501 + * @param p_PLMN + * @param p_KAUSF + * @param p_KDF_Type + * @param p_NID (default value: omit) + * @return B256_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Authentication_A6(NAS_PlmnId p_PLMN, + B256_Type p_KAUSF, + KDF_Type p_KDF_Type, + template (omit) hexstring p_NID := omit) return B256_Type + { + const octetstring const_S6C_FC :='6C'O; + var octetstring v_S; + var octetstring v_P0; + + // Generation of String + v_S := const_S6C_FC; + //FC = 0x6C + v_P0 := fl_GetServingNetworkName(p_PLMN, p_NID); // @sic R5s220753 sic@ + v_S := (v_S & v_P0); + //P0 = serving network ID + v_S := (v_S & int2oct(lengthof(v_P0), 2)) ; + //L0 = length of serving network ID + + return fx_KeyDerivationFunction(p_KDF_Type, p_KAUSF, v_S); + }; + + //-------------------------------------------------------------------------- + /* + * @desc KAMF derivation function + * As per annex A.7 of 33.501 + * @param p_SUPI + * @param p_KSEAF + * @param p_ABBA + * @param p_KDF_Type + * @return B256_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_Authentication_A7(charstring p_SUPI, + B256_Type p_KSEAF, + octetstring p_ABBA, + KDF_Type p_KDF_Type) return B256_Type + { + const octetstring const_S6D_FC :='6D'O; + var octetstring v_S; + var octetstring v_P0 := char2oct(p_SUPI); // @sic R5s190109 sic@ + var octetstring v_P1 := p_ABBA; + + // Generation of String + v_S := const_S6D_FC; + //FC = 0x6D + v_S := (v_S & v_P0); + //P0 = serving network ID + v_S := (v_S & int2oct(lengthof(v_P0), 2)) ; + //L0 = length of SUPI + v_S := (v_S & v_P1); + //P0 = serving network ID + v_S := (v_S & int2oct(lengthof(v_P1), 2)) ; + //L1 = length of ABBA + + return fx_KeyDerivationFunction(p_KDF_Type, p_KSEAF, v_S); + } + + //-------------------------------------------------------------------------- + /* + * @desc SOR MAC-I AUSF derivation function + * As per annex A.17 of 33.501 + * @param p_SoRHeader + * @param p_KAUSF + * @param p_Counter + * @param p_PLMNandAccessTechnologyList (default value: ''O) + * @param p_KDF_Type + * @return B128_Type + * @status APPROVED (NR5GC) + */ + function f_NG_Authentication_A17(O1_Type p_SoRHeader, + B256_Type p_KAUSF, + O2_Type p_Counter, + octetstring p_PLMNandAccessTechnologyList := ''O, + KDF_Type p_KDF_Type) return B128_Type + { + const octetstring const_S77_FC :='77'O; + var octetstring v_S; + + // Generation of String + v_S := const_S77_FC; + //FC = 0x77 + v_S := (v_S & p_SoRHeader); + //P0 = SOR Header + v_S := (v_S & '0001'O); + //L0 = length of SOR Header + v_S := (v_S & p_Counter); + //P1 = Counter + v_S := (v_S & '0002'O) ; + //L1 = length of Counter + if (lengthof (p_PLMNandAccessTechnologyList) > 0) { //P2 & L2 are optional + v_S := (v_S & p_PLMNandAccessTechnologyList); + v_S := (v_S & int2oct(lengthof(p_PLMNandAccessTechnologyList), 2)) ; + } + return substr(fx_KeyDerivationFunction(p_KDF_Type, p_KAUSF, v_S), 128, 128); + // returns LSB 128 bits[truncated] of the key generated + } + + //-------------------------------------------------------------------------- + /* + * @desc SOR MAC-I UE derivation function + * As per annex A.18 of 33.501 + * @param p_KAUSF + * @param p_Counter + * @param p_KDF_Type + * @return B128_Type + * @status APPROVED (NR5GC) + */ + function f_NG_Authentication_A18(B256_Type p_KAUSF, + O2_Type p_Counter, + KDF_Type p_KDF_Type) return B128_Type + { + const octetstring const_S78_FC :='78'O; + var octetstring v_S; + + // Generation of String + v_S := const_S78_FC; + //FC = 0x78 + v_S := (v_S & '01'O); + //P0 = SOR Ack + v_S := (v_S & '0001'O); + //L0 = length of SOR Ack + v_S := (v_S & p_Counter); + //P1 = Counter + v_S := (v_S & '0002'O) ; + //L1 = length of Counter + + return substr(fx_KeyDerivationFunction(p_KDF_Type, p_KAUSF, v_S), 128, 128); + // returns LSB 128 bits[truncated] of the key generated + } + + //-------------------------------------------------------------------------- + /* + * @desc HASH AMF derivation function + * As per annex H.2 of 33.501 + * @param p_NASMsg (encoded as octetstring) + * @param p_KDF_Type + * @return B64_Type + */ + function f_NG_HASH_AMF_H2(octetstring p_NASMsg, + KDF_Type p_KDF_Type) return B64_Type + { + var B256_Type v_Key := int2bit(0, 256); + var B256_Type v_Result := fx_KeyDerivationFunction(p_KDF_Type, v_Key, p_NASMsg); + + return substr(v_Result, 192, 64); + }; + + //-------------------------------------------------------------------------- + //============================================================================ + // Initialisations: + + /* + * @desc Function to be used before executing Authentication procedure in NG NAS. + * The structure for NG_NAS_SecurityParams_Type passed as parameter shall have at least valid parameters for: + * IMSI, PLMN, NAS_IntegrityInfo_Type.NAS_IntAlgo, NAS_CipheringInfo_Type.NAS_CipherAlgo + * Execution of this fucntion will initialise following parameters + * randValue, CK, IK, Ks, aUTN, XRES,KSIamf, KAMF, KNASenc & KNASint + * @param p_Auth_Params + * @param p_PLMN + * @param p_Identity (default value: := px_IMSI_Def) + * @param p_AuthenticationError (default value: noError) + * @param p_Common_AuthenticationParams (default value: omit) + * @param p_NID (default value: omit) + * @return NG_NAS_SecurityParams_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NAS_AuthenticationInit(NG_NAS_SecurityParams_Type p_Auth_Params, + NAS_PlmnId p_PLMN, + hexstring p_Identity := px_IMSI_Def, + AuthenticationError_Type p_AuthenticationError := noError, + template (omit) Common_AuthenticationParams_Type p_Common_AuthenticationParams := omit, + template (omit) hexstring p_NID := omit) return NG_NAS_SecurityParams_Type + { + var NG_NAS_SecurityParams_Type v_Auth_Params := p_Auth_Params; + var B128_Type v_XRESstar; + + // Generates Ck, Ik, AUTN, XRES + if (isvalue(p_Common_AuthenticationParams)) { + v_Auth_Params.AuthParams := valueof(p_Common_AuthenticationParams); + } else { + v_Auth_Params.AuthParams := f_AuthenticationInit(v_Auth_Params.AuthParams, p_AuthenticationError); // @sic R5-197217 sic@ + } + + v_Auth_Params.Ks := v_Auth_Params.AuthParams.CK & v_Auth_Params.AuthParams.IK; + // As per 33.501 clause 6.1.3.2 + // Generates KAUSF + v_Auth_Params.KAUSF := f_NG_Authentication_A2(v_Auth_Params.AuthParams, + v_Auth_Params.KDF, + v_Auth_Params.Ks, + p_PLMN, + p_NID); // @sic R5s220753 sic@ + // Generates XRES* @sic R5s200400 sic@ + v_XRESstar := f_NG_Authentication_A4(p_PLMN, + v_Auth_Params.AuthParams, + v_Auth_Params.KDF, + v_Auth_Params.Ks, + p_NID); // @sic R5s220753 sic@ + // Store value for later comparison with value received in Response + v_Auth_Params.AuthParams.XRES := v_XRESstar; + + // Now update the other parameters (common to 5GAKA and EAP) + v_Auth_Params := fl_NG_NAS_AuthenticationInitOtherParams (v_Auth_Params, p_PLMN, hex2str(p_Identity), p_NID); // @sic R5s220753, R5s230215 sic@ + return v_Auth_Params; + } + + /* + * @desc Function to initialise authentication parameters common to both 5G AKA and EAP + * @param p_Auth_Params + * @param p_PLMN + * @param p_Identity + * @param p_NID (default value: omit) + * @return NG_NAS_SecurityParams_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_NG_NAS_AuthenticationInitOtherParams(NG_NAS_SecurityParams_Type p_Auth_Params, + NAS_PlmnId p_PLMN, + charstring p_Identity, + template (omit) hexstring p_NID := omit) return NG_NAS_SecurityParams_Type + { + var NG_NAS_SecurityParams_Type v_Auth_Params := p_Auth_Params; + + // update KSI + v_Auth_Params.KSIamf := f_Authentication_IncrementKeySeq(v_Auth_Params.KSIamf); + + // Generate KSEAF + v_Auth_Params.KSEAF := f_NG_Authentication_A6(p_PLMN, + v_Auth_Params.KAUSF, + v_Auth_Params.KDF, + p_NID); //@sic R5s220753 sic@ + + // Generate KAMF + v_Auth_Params.KAMF := f_NG_Authentication_A7(p_Identity, // @sic R5s190109, R5s230215 sic@ + v_Auth_Params.KSEAF, + v_Auth_Params.ABBA, + v_Auth_Params.KDF); + + // Derive KNASenc key + v_Auth_Params.NAS_Ciphering.K_NAS := f_NG_Authentication_A8(tsc_NAS_Enc_Alg, + v_Auth_Params.NAS_Ciphering.Algorithm, + v_Auth_Params.KAMF, + v_Auth_Params.KDF); + // Derive KNASint key + v_Auth_Params.NAS_Integrity.K_NAS := f_NG_Authentication_A8(tsc_NAS_Int_Alg, + v_Auth_Params.NAS_Integrity.Algorithm, + v_Auth_Params.KAMF, + v_Auth_Params.KDF); + return v_Auth_Params; + } + + /* + * @desc Function to be used before executing Authentication procedure in NG EAP-AKA to generated + * Key material and tokens according to TS 33.501 clause 6.1.3.1. + * References: TS 33.501 clause 6.1.3.1. RFC 5448 and RFC 4187 + * TS 33.102 for AUTN computation and TS TS 34.108 for XRES, CK, IK for Test USIM + * @param p_Auth_Params + * @param p_PLMN + * @param p_Identity + * @param p_Common_AuthenticationParams (default value: omit) + * @param p_AuthenticationError (default value: noError) + * @param p_NID (default value: omit) + * @return NG_NAS_SecurityParams_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_EAP_AuthenticationInit(NG_NAS_SecurityParams_Type p_Auth_Params, + NAS_PlmnId p_PLMN, + charstring p_Identity, + template (omit) Common_AuthenticationParams_Type p_Common_AuthenticationParams := omit, + AuthenticationError_Type p_AuthenticationError := noError, + template (omit) hexstring p_NID := omit) return NG_NAS_SecurityParams_Type + { + var NG_NAS_SecurityParams_Type v_Auth_Params := p_Auth_Params; + var B256_Type v_Ck_Ik_; + var B128_Type v_Ck_; + var B128_Type v_Ik_; + var bitstring v_MK; + var B256_Type v_K; + var charstring v_S; + + if (isvalue(p_Common_AuthenticationParams)) { + v_Auth_Params.AuthParams := valueof(p_Common_AuthenticationParams); + } else { + // Generates Ck, Ik, AUTN, XRES according to TS 33.102 and TS 34.108 + v_Auth_Params.AuthParams := f_AuthenticationInit(v_Auth_Params.AuthParams, p_AuthenticationError); // @sic R5s201223 sic@ + } + + v_Auth_Params.Ks := v_Auth_Params.AuthParams.CK & v_Auth_Params.AuthParams.IK; + // Generates Ck' and IK' + v_Ck_Ik_ := f_NG_Authentication_A3(v_Auth_Params.AuthParams, + v_Auth_Params.KDF, + v_Auth_Params.Ks, + p_PLMN, + p_NID); // @sic R5s220753 sic@ + v_Ck_ := substr (v_Ck_Ik_, 0, 128); + v_Ik_ := substr (v_Ck_Ik_, 128, 128); + + // RFC 5448 cl. 3.3 + v_K := v_Ik_ & v_Ck_; + v_S := "EAP-AKA'" & p_Identity; + // Master Key + v_MK := f_ExtendedEAPAKA_PRF (v_K, char2oct (v_S)); + v_Auth_Params.MK := v_MK; + + // As per 33.501 clause 6.1.3.1 + // KAUSF is EMSK in RFC 5448 cl. 3.3 + v_Auth_Params.KAUSF := substr (v_MK, 1152, 256); + + // Now update the other parameters (common to 5GAKA and EAP) + v_Auth_Params := fl_NG_NAS_AuthenticationInitOtherParams (v_Auth_Params, p_PLMN, p_Identity, p_NID); // @sic R5s220753, R5s230215 sic@ + return v_Auth_Params; + } + + /* + * @desc Generate and encode EAP-AKA' challenge according TS 33.501 clause 6.1.3.1 and RFC 5448 + * @param p_Auth_Params + * @param p_PLMN + * @param p_Id (default: '00'O) + * @param p_NID (default value: omit) + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_EAP_ChallengeReq(NG_NAS_SecurityParams_Type p_Auth_Params, + NAS_PlmnId p_PLMN, + O1_Type p_Id := '00'O, + template (omit) hexstring p_NID := omit) + return octetstring + { + var template (value) EAP_AT_RAND v_RAND; + var template (value) EAP_AT_AUTN v_AUTN; // @sic R5s200400 sic@ + var template (value) EAP_AT_KDF v_KDF; + var template (value) EAP_AT_KDF_INPUT v_KDF_INPUT; + var template (value) EAP_AT_MAC v_MAC; + var O16_Type v_MACValue := '00000000000000000000000000000000'O; + var bitstring v_K_aut; + var template (value) EAP_Message_Type v_EAP_Message; + var integer v_Msglen := 8; // @sic R5s200400 sic@ + var octetstring v_NetworkName := fl_GetServingNetworkName (p_PLMN, p_NID); // @sic R5s220753 sic@ + var bitstring v_EncodedMsg; + var integer v_Len; + var integer v_Paddinglen; + var integer i; + + + v_RAND := cs_EAP_AT_RAND (bit2oct(p_Auth_Params.AuthParams.RandValue)); + v_Msglen := v_Msglen + 5*4; + + v_AUTN := cs_EAP_AT_AUTN (bit2oct(p_Auth_Params.AuthParams.AUTN)); + v_Msglen := v_Msglen + 5*4; + + v_KDF := cs_EAP_AT_KDF; + v_Msglen := v_Msglen + 4; + + v_Len := lengthof(v_NetworkName); + if (v_Len mod 4 > 0) { + v_Paddinglen := 4 - v_Len mod 4; + for (i:=0; i < v_Paddinglen; i:=i+1) { + v_NetworkName := v_NetworkName & '00'O; + } + } + + v_KDF_INPUT := cs_EAP_AT_KDF_INPUT (v_NetworkName, int2oct(v_Len, 2)); + v_Msglen := v_Msglen + lengthof(v_NetworkName) + 4; + + v_MAC := cs_EAP_AT_MAC (v_MACValue); + v_Msglen := v_Msglen + 5*4; + + // Build the message with MAC=0 + v_EAP_Message := cs_EAP_Request_AKAChallenge(int2oct(v_Msglen, 2), + v_RAND, v_AUTN, v_KDF, + v_KDF_INPUT, v_MAC, p_Id); // @sic R5s201410 sic@ + + // Compute MAC according to RFC 5448 cl. 3.4.2 + v_EncodedMsg := encvalue(v_EAP_Message); + v_K_aut := substr(p_Auth_Params.MK, 128,256); // RFC 5448 cl. 3.3 K_aut to be used for computing MAC @sic R5s200400 sic@ + v_MACValue := bit2oct(substr(f_HMAC_SHA_256(v_K_aut, bit2oct(v_EncodedMsg)), 0, 128)); // @sic R5s200400 sic@ + v_MAC := cs_EAP_AT_MAC (v_MACValue); + + // Finally return the complete EAP-AKA' challenge with correct MAC + return (bit2oct(encvalue(cs_EAP_Request_AKAChallenge (int2oct(v_Msglen, 2), + v_RAND, v_AUTN, v_KDF, + v_KDF_INPUT, v_MAC, p_Id)))); // @sic R5s201410 sic@ + + } + + /* + * @desc Decode and check EAP-AKA' challenge according TS 24.501 clause 5.4.1.2.2 and RFC 5448 + * This function only checks for a successful Authentication Response - it doesn't check for any EAP failure messages + * @param p_Auth_Params (by reference) + * @param p_ReceivedEAP + * @param p_ResultInd (default value: *) + * @param p_Id (default value: '00'O) + * @return boolean + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_EAP_SuccessfulAuthenticationResponse(inout NG_NAS_SecurityParams_Type p_Auth_Params, + octetstring p_ReceivedEAP, + template EAP_AT_RESULT_IND p_ResultInd := *, + O1_Type p_Id := '00'O) + return boolean + { + var boolean v_Result := false; + var bitstring v_ReceivedEAP := oct2bit(p_ReceivedEAP); + var O16_Type v_RxdMAC; + var O16_Type v_MACValue := '00000000000000000000000000000000'O; + var bitstring v_K_aut; + var EAP_Message_Type v_EAP_Message; + var B32_128_Type v_RESValue; + var octetstring v_ModifiedEAP; + var integer v_Len; + var integer v_Paddinglen; + var integer i; + + if (decvalue(v_ReceivedEAP, v_EAP_Message) != 0) { + FatalError(__FILE__, __LINE__, "EAP message cannot be decoded"); + } + + //get length in bits of received RES (as it's a variable length, need to compare the correct length) + v_Len := oct2int(v_EAP_Message.akaChallenge_Rsp.attributes.res.reslen); + // store this in the global info + p_Auth_Params.AuthParams.XRESLength := v_Len / 8; + + // Get the RES value from the global info + v_RESValue := substr(p_Auth_Params.AuthParams.XRES, 0, v_Len); + // Now pad it so that it's (hopefully) the same length of the received value + if (v_Len mod 8 > 0 or (v_Len/8) mod 4 > 0) { + v_Paddinglen := 8 - v_Len mod 8; // pad to end of octet, in bits + v_Paddinglen := (4 - ((v_Len + v_Paddinglen)/8) mod 4)*8; // pad to multiple of 4 octets, in bits + for (i:=0; i < v_Paddinglen; i:=i+1) { + v_RESValue := v_RESValue & '0'B; + } + } + + // Check message is AKAChallenge, length and AT_RES is correct + if (match (v_EAP_Message, cr_EAP_Response_AKAChallenge(int2oct(lengthof(p_ReceivedEAP), 2), cr_EAP_AT_RES (bit2oct(v_RESValue), int2oct(v_Len, 2)), ?, p_ResultInd, p_Id))) { // @sic R5-201142, R5s201483 sic@ + // Then test MAC + v_RxdMAC := v_EAP_Message.akaChallenge_Rsp.attributes.mac.mac; + + // First build the message with MAC=0 + v_ModifiedEAP := fl_NG_EAP_Response_ClearMACValue(p_ReceivedEAP); // @sic R5s210153 sic@ + // Compute MAC according to RFC 5448 cl. 3.4.2 + v_K_aut := substr(p_Auth_Params.MK, 128, 256); // RFC 5448 cl. 3.3 K_aut to be used for computing MAC @sic R5s200400 sic@ + v_MACValue := bit2oct(substr(f_HMAC_SHA_256(v_K_aut, v_ModifiedEAP), 0, 128)); // @sic R5s200400, R5s210153 sic@ + // Then test it against the received value + if (match(v_RxdMAC, v_MACValue)) { // if the MAC also matches then the whole message is correct + v_Result := true; + } + } + return v_Result; + } + + + /* + * @desc Local function to find then replace the value in the MAC attribute of the received EAP message with all 0s, + * so that the MAC value can be calculated and checked in the TTCN. This function is required because + * the EAP attributes are defined as a set + * => the order of the attributes in the template received in the TTCN may not match order in undecoded message + * @param p_ReceivedEAP + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_NG_EAP_Response_ClearMACValue(octetstring p_ReceivedEAP) return octetstring + { + var octetstring v_ModifiedEAP := p_ReceivedEAP; + var integer i := 8; /* according to RFC 4187 clause 8.1 the EAP-AKA header is 8 octets */ + var integer k; + + while (p_ReceivedEAP[i] != '0B'O) { /* MAC attribute type is 11 according to RFC 4187 clause 11 */ + i := i + (oct2int(p_ReceivedEAP[i+1]) * 4); + if (i > lengthof(p_ReceivedEAP)) { + FatalError(__FILE__, __LINE__, "no MAC attribute found"); + } + } + i := i + 4; /* first 4 octets are type, length, reserved (RFC 4187 clause 10.15) */ + for (k := 0; k < 16; k := k + 1) { + v_ModifiedEAP[i+k] := '00'O; + } + return v_ModifiedEAP; + } + +} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NAS_Templates.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NAS_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..f82cfed8e30124d8801ef0b37a7f4925bf5e75aa --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NAS_Templates.ttcn @@ -0,0 +1,2733 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-09-14 09:54:06 +0200 (Thu, 14 Sep 2023) $ +// $Rev: 37128 $ +/******************************************************************************/ + +module NG_NAS_Templates { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NG_NAS_TypeDefs all; + import from NG_NAS_MsgContainers all; + import from NAS_CommonTemplates all; + import from NG_NAS_Common all; + import from Common4G5G_LoopBack all; + import from CommonIP all; + + //**************************************************************************** + // common NAS message (security protected or non security protected) + //---------------------------------------------------------------------------- + // templates for NAS_SecurityProtectionInfo_Type + + template (value) NG_NAS_SecurityProtectionInfoDL_Type cs_NG_NAS_SecurityProtectionInfo(SecurityHeaderType p_Status, + boolean p_ForceMacError := false) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Status := p_Status, + ForceMacError := p_ForceMacError + }; + + template (present) NG_NAS_SecurityProtectionInfoUL_Type cr_NG_NAS_SecurityProtectionInfo(template (present) SecurityHeaderType p_ExpectedStatus) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Status := p_ExpectedStatus, + NasCount := ? + }; + + // common templates for security-protected or non security-protected NAS messages + + template (value) NG_NAS_MSG_Request_Type cs_NG_NAS_Request(SecurityHeaderType p_SecurityStatus, + template (value) NG_NAS_DL_Message_Type p_Msg) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + SecurityProtection := cs_NG_NAS_SecurityProtectionInfo(p_SecurityStatus), + Pdu := { + Msg := p_Msg, + PiggybackedPduList := omit + } + }; + + + template (present) NG_NAS_MSG_Indication_Type cr_NG_NAS_Ind(template (present) SecurityHeaderType p_ExpectedSecurityStatus, + template (present) NG_NAS_UL_Message_Type p_Msg := ?) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + SecurityProtection := cr_NG_NAS_SecurityProtectionInfo(p_ExpectedSecurityStatus), + Pdu := { + Msg := p_Msg, + PiggybackedPduList := omit + } + }; + + template (value) NG_NAS_MSG_Request_Type cs_NG_NAS_RequestWithPiggybacking(SecurityHeaderType p_SecurityStatus, + template (value) NG_NAS_DL_Pdu_Type p_PiggyBackList) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + SecurityProtection := cs_NG_NAS_SecurityProtectionInfo(p_SecurityStatus), + Pdu := p_PiggyBackList + }; + + template (value) NG_NAS_DL_Pdu_Type cs_NG_NAS_DL_PduWithPiggybacking(template (value) NG_NAS_DL_Message_Type p_GmmMsg, + template (value) NG_NAS_DL_Message_Type p_PiggyBackedMsg) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Msg := p_GmmMsg, + PiggybackedPduList := { + { + Msg := p_PiggyBackedMsg, + PiggybackedPduList := omit + } + } + }; + + template (value) NG_NAS_DL_Pdu_Type cs_NG_NAS_DL_PduWithoutPiggyback(template (value) NG_NAS_DL_Message_Type p_GmmMsg) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Msg := p_GmmMsg, + PiggybackedPduList := omit + }; + + template (present) NG_NAS_MSG_Indication_Type cr_NG_NAS_IndWithPiggybacking(template (present) SecurityHeaderType p_ExpectedSecurityStatus, + template (present) NG_NAS_UL_Pdu_Type p_PiggyBackList := ?) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + SecurityProtection := cr_NG_NAS_SecurityProtectionInfo(p_ExpectedSecurityStatus), + Pdu := p_PiggyBackList + }; + + //**************************************************************************** + // NG mobility management messages (24.501 cl. 8.2) + //---------------------------------------------------------------------------- + + template (omit) NG_NAS_DL_Message_Type cs_NG_AUTHENTICATION_REQUEST(NAS_KsiValue p_KeySetId, + template (value) ABBA p_ABBA, + template (omit) RAND p_RAND := omit, + template (omit) AUTN p_AUTN := omit, + template (omit) EAP_Message p_EAP := omit) := + { /* 24.501 cl. 8.2.1 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationRequest, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + ngNasKeySetId := cs_NAS_KeySetIdentifier_lv(p_KeySetId, tsc_NasKsi_NativeSecurityContext), /* cl. 9.11.3.32 M V 1/2 */ + abba := p_ABBA, /* cl. 9.11.3.10 M LV 3-n */ + rand := p_RAND, /* cl. 9.11.3.16 O TV 17 IEI=21 */ + autn := p_AUTN, /* cl. 9.11.3.15 O TLV 18 IEI=20 */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_AUTHENTICATION_RESPONSE (template AuthenticationResponseParameter p_Res := cr_AuthenticationResponseParameter(?), + template EAP_Message p_EAP := omit) := + { /* 24.501 cl. 8.2.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Response := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationResponse, /* cl. 9.7 M V 1 */ + authResponseParam := p_Res, /* cl. 9.11.3.17 O TLV 18 IEI=2D */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_AUTHENTICATION_RESULT (NAS_KsiValue p_KeySetId, + template (omit) EAP_Message p_EAP, + template (omit) ABBA p_ABBA) := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.3 */ + authentication_Result := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationResult, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + ngNasKeySetId := cs_NAS_KeySetIdentifier_lv(p_KeySetId, tsc_NasKsi_NativeSecurityContext), /* cl. 9.11.3.32 M V 1/2 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + abba := p_ABBA /* cl. 9.11.3.10 M LV 3-n */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_AUTHENTICATION_FAILURE (template (present) GMM_GSM_Cause p_Cause := cr_GMM_GSM_Cause(omit), + template AuthenticationFailureParameter p_AuthFailParam := omit) := + { /* 24.501 cl. 8.2.4 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Failure := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationFailure, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + authFailureParam := p_AuthFailParam /* cl. 9.11.3.12 O TLV 16 IEI=30 */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_AUTHENTICATION_REJECT (template (omit) EAP_Message p_EAP):= + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.5 */ + authentication_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationReject, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_REGISTRATION_REQUEST(template (present) RegistrationType p_RegistrationType, + template (present) NAS_KsiValue p_KeySetId, + template (present) B1_Type p_Tsc, + template (present) NG_MobileIdentity p_MobileId, + template NAS_KeySetIdentifier p_NonCurrentKSI, + template NG_GMM_Cap p_GMM_Cap, + template NG_UE_SecurityCapability p_UESecurityCap, + template NSSAI p_ReqNSSAI, + template NG_TrackingAreaId p_TAI, + template UE_NetworkCap p_UE_NetworkCap, + template ULDataStatus p_ULDataStatus, + template PDU_SessionStatus p_PDU_SessionStatus, + template MICO_Ind p_MICO_Ind, + template UE_Status p_UE_Status, + template NG_MobileIdentity p_AddGUTI, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus, + template UE_UsageSetting p_UE_UsageSetting, + template NG_DRXparameter p_DRXparam, + template EPS_MessageContainer p_EPSMsg, + template LADN_Ind p_LADN_Ind, + template PayloadContainerType p_ContainerType, // @sic R5w190113 sic@ + template PayloadContainer p_Payload, + template NetworkSlicingInd p_NetworkSlicingInd, + template NG_UpdateType p_NG_UpdateType, + template MS_Clsmk2 p_MS_Clsmk2, + template CodecList p_SupportedCodecs, + template EPS_BearerContextStatus p_EPS_BearerContextStatus, // @sic R5s190543 sic@ + template NASMessageContainer p_Msg, + template ExtdDRXParams p_ExtdDRXParams, + template GPRS_Timer3 p_T3324, + template UERadioCapId p_UERadioCapId, + template MappedNSSAI p_MappedNSSAI, + template AddInfoRequest p_AddInfoRequest, + template WUSAssistInfo p_WUSAssistInfo, + template N5GCInd p_N5GCInd, + template NB_N1ModeDRXParams p_NB_N1ModeDRXParams, + template UE_RequestType p_UeRequestType, + template NG_PagingRestriction p_PagingRestrict, + template ServiceLvlAAContainer p_ServiceLvlAA, + template NID p_NId, + template PLMN_IdIE p_MSPLMNwDisasterCondition, + template PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo, + template GPRS_Timer3 p_T3512) := + { /* 24.501 cl. 8.2.6 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationRequest, /* cl. 9.7 M V 1 */ + ngNasKSI := cr_NAS_KeySetIdentifier(p_KeySetId, p_Tsc), /* cl. 9.11.3.32 M V 1/2 */ + registrationType := p_RegistrationType, /* cl. 9.11.3.7 M LV 2 */ + ngMobileId := p_MobileId, /* cl. 9.11.3.4 M LV 5-? */ + nonCurrentNativeKSI := p_NonCurrentKSI, /* cl. 9.11.3.32 O TV 1 IEI=C- */ + gmmCapability := p_GMM_Cap, /* cl. 9.11.3.1 O TLV 3-15 IEI=10 */ + ueSecurityCapability := p_UESecurityCap, /* cl. 9.11.3.54 O TLV 4-10 IEI=2E */ + requestedNSSAI := p_ReqNSSAI, /* cl. 9.11.3.37 O TLV 4-74 IEI=2F */ + lastVisitedRegisteredTai := p_TAI, /* cl. 9.11.3.8 O TV 7 IEI=52 */ + s1_UE_Capability := p_UE_NetworkCap, /* cl. 9.11.3.48 O LV 4-15 IEI=65 */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.3.57 O TLV 4-34 IEI=40 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.3.44 O TLV 4-34 IEI=50 */ + micoInd := p_MICO_Ind, /* cl. 9.11.3.31 O TLV 1 IEI=B */ + ueStatus := p_UE_Status, /* cl. 9.11.3.56 O TLV 3 IEI=2B */ + additionalGUTI := p_AddGUTI, /* cl. 9.11.3.4 O TLV 5-? IEI=2C */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 */ + ueUsageSetting := p_UE_UsageSetting, /* cl. 9.11.3.55 O TLV 3 IEI=60 */ + reqDRXParams := p_DRXparam, /* cl. 9.11.3.22 O TLV ? IEI=51 */ + epsMessage := p_EPSMsg, /* cl. 9.11.3.24 O TLV-E ? IEI=7C */ + ladnInd := p_LADN_Ind, /* cl. 9.11.3.29 O TLV-E 3-811 IEI=7E */ + payloadContainerType := p_ContainerType, /* cl. 9.11.3.40 O TV 1 IEI=8 Mar 19 @sic R5w190113 sic@*/ + payload := p_Payload, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + networkSlicingInd := p_NetworkSlicingInd, /* cl. 9.11.3.36 O TV 1 IEI=9 Dec18 */ + updateType := p_NG_UpdateType, /* cl. 9.11.3.9A O TLV 3 IEI=53 Dec18 */ + msClassmark2 := p_MS_Clsmk2, /* cl. 9.11.3.31C O TLV 5 IEI=41 Sep20 @sic R5s201387 Baseline Moving sic@ */ + supportedCodecs := p_SupportedCodecs, /* cl. 9.11.3.51A O TLV 5-n IEI=42 Sep20 @sic R5s201387 Baseline Moving sic@ */ + nasMsg := p_Msg, /* cl. 9.11.3.33 O TLV-E 4-n IEI=71 Dec18 */ + epsBearerContextStatus := p_EPS_BearerContextStatus, /* cl. 9.11.3.23A O TLV 4 IEI=60 Jun19 @sic R5s190543 sic@ */ + requestedExtdDRXParams := p_ExtdDRXParams, /* cl. 9.11.3.26A O TLV 3 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3324Value := p_T3324, /* cl. 9.11.2.5 O TLV 3 IEI=6A Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapabilityId := p_UERadioCapId, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedMappedNSSAI := p_MappedNSSAI, /* cl. 9.11.3.31B O TLV 3-42 IEI=35 Sep20 @sic R5s201387 Baseline Moving sic@ */ + additionalInfoReq := p_AddInfoRequest, /* cl. 9.11.3.12A O TLV 3 IEI=48 Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedWUSAssistanceInfo := p_WUSAssistInfo, /* cl. 9.11.3.71 O TLV 3-n IEI=1A Sep20 @sic R5s201387 Baseline Moving sic@ */ + n5GCInd := p_N5GCInd, /* cl. 9.11.3.72 O T 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedNB_N1DRXParams := p_NB_N1ModeDRXParams, /* cl. 9.11.3.73 O TLV 3 IEI=30 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict, /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nId := p_NId, /* cl. 9.11.3.79 O TLV 8 IEI=32 Sep22 @sic R5s221179 Baseline Moving sic@ */ + msPLMNwDisasterCondition := p_MSPLMNwDisasterCondition, /* cl. 9.11.3.85 O TLV 5 IEI=16 Sep22 @sic R5s221179 Baseline Moving sic@ */ + requestedPEIPS_AssistInfo := p_RequestedPEIPS_AssistInfo, /* cl. 9.11.3.80 O TLV 3-n IEI=2A Sep22 @sic R5s221179 Baseline Moving sic@ */ + t3512Value := p_T3512 /* cl. 9.11.2.5 O TLV 3 IEI=3B Jun23 @sic R5s230533 sic@ */ + } + }; + + template (present) NG_UpdateType cr_NG_Update (template (present) B1_Type p_NgRAN_RCU := ?, + template (present) B1_Type p_SmsRequested := ?, + template (present) B2_Type p_EPS_PNB_CIoT := ?, + template (present) B2_Type p_NG_PNB_CIoT := ?):= + { /* 24.501 cl. 9.11.3.9A; + @sic R5s201387 Baseline Moving sic@ */ + /* @status APPROVED (NR5GC) */ + iei := '53'O, + iel := '01'O, + spare := '00'B, + eps_PNB_CIoT := p_EPS_PNB_CIoT, + ng_PNB_CIoT := p_NG_PNB_CIoT, + ngRAN_RCU := p_NgRAN_RCU, + smsRequested := p_SmsRequested + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_REGISTRATION_ACCEPT(template (value) RegistrationResult p_RegistrationResult, + template (omit) NG_MobileIdentity p_GUTI, + template (omit) PLMN_List p_EPLMNs, + template (omit) NG_TrackingAreaIdList p_TAIList, + template (omit) NSSAI p_AllowedNSSAI, + template (omit) RejectedNSSAI p_RejectedNSSAI, + template (omit) NSSAI p_ConfiguredNSSAI, + template (omit) NG_NetworkFeatureSupport p_NwkFeatureSupport, + template (omit) PDU_SessionStatus p_PDU_SessionStatus, + template (omit) PDU_SessionReactivationResult p_PDU_SessionReactResult, + template (omit) PDU_SessionReactivationError p_PDU_SessionReactError, + template (omit) LADN_Info p_LADN_Info, + template (omit) MICO_Ind p_MICO_Ind, + template (omit) NetworkSlicingInd p_NetworkSlicingInd, + template (omit) ServiceAreaIdList p_SAIList, + template (omit) GPRS_Timer3 p_T3512, + template (omit) GPRS_Timer2 p_Non3GPPDereg, + template (omit) GPRS_Timer2 p_T3502, + template (omit) EmergNumList p_EmergNumList, + template (omit) ExtdEmergNumList p_ExtdEmergNumList, + template (omit) SORTransparentContainer p_SOR, + template (omit) EAP_Message p_EAP, + template (omit) InclusionModeNSSAI p_InclusionModeNSSAI, + template (omit) OperatorAccessCatDefinitions p_AccessCatDefinition, + template (omit) NG_DRXparameter p_NG_DRXparameter, + template (omit) Non3GPP_NW_ProvidedPolicies p_Non3GPP_NW_ProvidedPolicies, + template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus, + template (omit) ExtdDRXParams p_NegotiatedExtdDRXParams, + template (omit) GPRS_Timer3 p_T3447, + template (omit) GPRS_Timer3 p_T3448, + template (omit) GPRS_Timer3 p_T3324, + template (omit) UERadioCapId p_UERadioCapId, + template (omit) UERadioCapIdDeletion p_UERadioCapIdDeletion, + template (omit) NSSAI p_PendingNSSAI, + template (omit) NG_CipheringKeyData p_CipheringKeyData, + template (omit) CAGInfoList p_CAGInfoList, + template (omit) TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig, + template (omit) WUSAssistInfo p_WUSAssistInfo, + template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams, + template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA, + template (omit) PEIPS_AssistInfo p_NegotiatedPEIPS_AssistInfo, + template (omit) NG_AddReqResult p_AddRequestResult, + template (omit) NSSRG_Info p_NssrgInfo, + template (omit) RegistrationWaitRange p_DisasterRoamingWaitRange, + template (omit) RegistrationWaitRange p_DisasterReturnWaitRange, + template (omit) DisasterPLMNList p_DisasterPLMNList, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService, + template (omit) ExtdCAGInfoList p_ExtdCAGInfoList, + template (omit) NSAG_Info p_NsagInfo) := + { /* 24.501 cl. 8.2.7 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationAccept, /* cl. 9.7 M V 1 */ + registrationResult := p_RegistrationResult, /* cl. 9.11.3.6 M LV 2 */ + guti := p_GUTI, /* cl. 9.11.3.4 O TLV 13 IEI=2C */ + equivalentPlmns := p_EPLMNs, /* cl. 9.11.3.45 O TLV 5-47 IEI=4A */ + taiList := p_TAIList, /* cl. 9.11.3.9 O TLV 9-114 IEI=54 */ + allowedNSSAI := p_AllowedNSSAI, /* cl. 9.11.3.37 O TLV 4-74 IEI=70 */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=0x11 */ + configuredNSSAI := p_ConfiguredNSSAI, /* cl. 9.11.3.37 O TLV 4-146 IEI=31 */ + ngs_NetworkFeatureSupport := p_NwkFeatureSupport, /* cl. 9.11.3.5 O TLV 3-5 IEI=21*/ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.3.44 O TLV 4-34 IEI=50 */ + pduSessionReactivationResult := p_PDU_SessionReactResult, /* cl. 9.11.3.42 O TLV 4-32 IEI=26 */ + pduSessionReactResultError := p_PDU_SessionReactError, /* cl. 9.11.3.43 O TLV-E 5-515 IEI=7E */ + ladnInfo := p_LADN_Info, /* cl. 9.11.3.30 O TLV-E 12-1707 IEI=79 */ + micoInd := p_MICO_Ind, /* cl. 9.11.3.31 O TV 1 IEI=B */ + networkSlicingInd := p_NetworkSlicingInd, /* cl. 9.11.3.36 O TV 1 IEI=9 */ + saiList := p_SAIList, /* cl. 9.11.3.49 O TLV 6-114 IEI=27 */ + t3512Value := p_T3512, /* cl. 9.11.2.5 O TLV 3 IEI=5E */ + non3GPPDeregisterValue := p_Non3GPPDereg, /* cl. 9.11.2.4 O TLV 3 IEI=5D */ + t3502Value := p_T3502, /* cl. 9.11.2.4 O TLV 3 IEI=16 */ + emergencyNumberList := p_EmergNumList, /* cl. 9.11.3.23 O TLV 5-50 IEI=34 */ + xtdEmergencyNumberList := p_ExtdEmergNumList, /* cl. 9.11.3.26 O TLV-E 6-65538 IEI=7A */ + sorTransparentContainer := p_SOR, /* cl. 9.11.3.51 O TLV-E 20-2048 IEI=7F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78*/ + inclusionModeNSSAI := p_InclusionModeNSSAI, /* cl. 9.11.3.37A O TV 1 IEI=A */ + operatorAccessCatDefs := p_AccessCatDefinition, /* cl. 9.11.3.38 O TLV-E 4-n IEI=76 */ + negotiatedDRXParams := p_NG_DRXparameter, /* cl. 9.11.3.2A O TLV 3 IEI=51 */ + non3GPP_NW_ProvidedPolicies := p_Non3GPP_NW_ProvidedPolicies, /* cl. 9.11.3.58 O TV 1 IEI = ? Mar 19 @sic R5w190113 sic@ */ + epsBearerContextStatus := p_EPS_BearerContextStatus, /* cl. 9.11.3.23A O TLV 4 IEI=60 Jun19 @sic R5s190543 sic@ */ + negotiatedExtdDRXParams := p_NegotiatedExtdDRXParams, /* cl. 9.11.3.26A O TLV 3 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3447Value := p_T3447, /* cl. 9.11.2.5 O TLV 3 IEI=6C Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3448Value := p_T3448, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3324Value := p_T3324, /* cl. 9.11.2.5 O TLV 3 IEI=6A Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapabilityId := p_UERadioCapId, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapIdDeletionInd := p_UERadioCapIdDeletion, /* cl. 9.11.3.69 O TV 1 IEI=E Sep20 @sic R5s201387 Baseline Moving sic@ */ + pendingNSSAI := p_PendingNSSAI, /* cl. 9.11.3.37 O TLV 4-146 IEI=39 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cipheringKeyData := p_CipheringKeyData, /* cl. 9.11.3.18C O TLV-E 34-n IEI=74 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + truncatedS_TMSIConfig := p_TruncatedS_TMSIConfig, /* cl. 9.11.3.70 O TLV 3 IEI=1B Sep20 @sic R5s201387 Baseline Moving sic@ */ + negotiatedWUSAssistanceInfo := p_WUSAssistInfo, /* cl. 9.11.3.71 O TLV 3-n IEI=1C Sep20 @sic R5s201387 Baseline Moving sic@ */ + negotiatedNB_N1DRXParams := p_NB_N1ModeDRXParams, /* cl. 9.11.3.73 O TLV 3 IEI=29 Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=7B Sep22 @sic R5s221179 Baseline Moving sic@ */ + negotiatedPEIPS_AssistInfo := p_NegotiatedPEIPS_AssistInfo, /* cl. 9.11.3.80 O TLV 3-n IEI=33 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngAddRequestResult := p_AddRequestResult, /* cl. 9.11.3.81 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nssrgInfo := p_NssrgInfo, /* cl. 9.11.3.82 O TLV-E 7-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterRoamingWaitRange := p_DisasterRoamingWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=14 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterPLMNList := p_DisasterPLMNList, /* cl. 9.11.3.83 O TLV 2-n IEI=13 Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService, /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nsagInfo := p_NsagInfo /* cl. 9.11.3.87 O TLV-E 10-n IEI=7C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_REGISTRATION_COMPLETE(template SORTransparentContainer p_SOR := *) := + { /* 24.501 cl. 8.2.8 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Complete := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationComplete, /* cl. 9.7 M V 1 */ + sorTransparentContainer := p_SOR /* cl. 9.11.3.49 O TLV-E 20-2048 IEI=7F */ + } + }; + + template (present) SORTransparentContainer cr_NG_SORTransparentContainer(template (present) SOR_Header p_Header, + O16_Type p_Mac, + template (omit) IEI8_Type p_IEI := '73'O, + template (omit) Type6Length_Type p_IEL := '0011'O):= + /* @status APPROVED (NR5GC) */ + cr_NG_SORTransparentContainerValue (p_Header, + p_Mac, + omit, + omit, + p_IEI, + p_IEL); + + template (value) SORTransparentContainer cs_NG_SORTransparentContainer_IeiIel(template (value) SOR_Header p_Header, + O16_Type p_Mac, + O2_Type p_Counter, + octetstring p_Data) := + /* @status APPROVED (NR5GC) */ + cs_NG_SORTransparentContainerValue (p_Header, + p_Mac, + p_Counter, + p_Data, + '73'O, + int2oct(lengthof(p_Data) + 19, 2)); + + + template (omit) SORTransparentContainer cs_NG_SORTransparentContainerValue(template (value) SOR_Header p_Header, + O16_Type p_Mac_UE, + template (omit) O2_Type p_Counter := omit, + template (omit) octetstring p_Data := omit, + template (omit) IEI8_Type p_IEI := omit, + template (omit) Type6Length_Type p_IEL := omit):= + { + /* @status APPROVED (NR5GC) */ + iei := p_IEI, + iel := p_IEL, + header :=p_Header, + mac := p_Mac_UE, + counter := p_Counter, + data := p_Data + }; + + template (present) SORTransparentContainer cr_NG_SORTransparentContainerValue(template (present) SOR_Header p_Header, + O16_Type p_Mac_UE, + template (omit) O2_Type p_Counter := omit, + template (omit) octetstring p_Data := omit, + template (omit) IEI8_Type p_IEI := omit, + template (omit) Type6Length_Type p_IEL := omit):= + { + /* @status APPROVED (NR5GC) */ + iei := p_IEI, + iel := p_IEL, + header :=p_Header, + mac := p_Mac_UE, + counter := p_Counter, + data := p_Data + }; + + template (value) SOR_Header cs_NG_SOR_Header(B1_Type p_Ack, + B1_Type p_ListType, + B1_Type p_ListInd, + B1_Type p_DataType, + B1_Type p_Ap := '0'B):= + { /* @status APPROVED (NR5GC) */ + /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + spare :=tsc_Spare3, + ap := p_Ap, + ack :=p_Ack, + listType_MSSNPNSI :=p_ListType, + listInd_MSSI :=p_ListInd, + dataType :=p_DataType + }; + + template(present) SOR_Header cr_NG_SOR_Header(B1_Type p_Ack, + template(present) B1_Type p_ListType, + template(present) B1_Type p_ListInd, + template(present) B1_Type p_DataType, + template(present) B1_Type p_Ap := '0'B):= + { /* @status APPROVED (NR5GC) */ + /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + spare :=tsc_Spare3, + ap := p_Ap, + ack :=p_Ack, + listType_MSSNPNSI :=p_ListType, + listInd_MSSI :=p_ListInd, + dataType :=p_DataType + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_REGISTRATION_REJECT (template (value) GMM_GSM_Cause p_Cause, + template (omit) GPRS_Timer2 p_T3346 := omit, + template (omit) GPRS_Timer2 p_T3502 := omit, + template (omit) EAP_Message p_EAP := omit, + template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + template (omit) CAGInfoList p_CAGInfoList := omit, + template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit) := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 8.2.9 */ + registration_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + t3346 := p_T3346, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + t3502 := p_T3502, /* cl. 9.11.2.4 O TLV 3 IEI=16 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=69 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + lowerBoundTimerValue := p_LowerBoundTimerValue, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=3B Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=3C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_UL_NAS_TRANSPORT (template (present) PayloadContainerType p_PayloadContainerType, + template NG_PDU_SessionId p_PDU_SessionId, + template NG_PDU_SessionId p_OldPDU_SessionId, + template NG_Request_Type p_RequestType, + template S_NSSAI_Type p_S_NSSAI, + template DNN p_DNN, + template AdditionalInformation p_AdditionalInfo, + template MA_PDUSessionInfo p_MA_PDUSessionInfo, + template ReleaseAssistanceInd p_ReleaseAssistanceInd) := + { /* 24.501 cl. 8.2.10 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + ul_Nas_Transport := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_UL_NASTransport, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 M V 1/2 */ + payload := cr_PayloadContainer, /* cl. 9.11.3.39 M LV-E 3-65537 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=70 */ + oldPDUSessionId := p_OldPDU_SessionId, /* cl. 9.11.3.41 O TV 3 IEI=61 */ + requestType := p_RequestType, /* cl. 9.`0.3.47 O TV 1 IEI=8 */ + s_NSSAI := p_S_NSSAI, /* cl. 9.11.2.8 O TLV 3-10 IEI=22 */ + dnn := p_DNN, /* cl. 9.11.3.21 O TLV 3-102 IEI=25 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + maPDUSessionInfo := p_MA_PDUSessionInfo, /* cl. 9.11.3.31A O TV 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + releaseAssistanceInd := p_ReleaseAssistanceInd /* cl. 9.11.3.46A O TV 1 IEI=F Sep20 @sic R5s201387 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_DL_NAS_TRANSPORT(template (value) PayloadContainerType p_PayloadContainerType, + template (value) PayloadContainer p_Payload, + template (omit) NG_PDU_SessionId p_PDU_SessionId, + template (omit) AdditionalInformation p_AdditionalInfo, + template (omit) GMM_GSM_Cause p_Cause, + template (omit) GPRS_Timer3 p_BackOff, + template (omit) GPRS_Timer3 p_LowerBoundTimerValue) := + { /* 24.501 cl. 8.2.11 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + dl_Nas_Transport := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DL_NASTransport, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 M V 1/2 */ + payload := p_Payload, /* cl. 9.11.3.39 M LV-E 3-65537 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=70 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 O TV 2 IEI=58 */ + backOffTimerValue := p_BackOff, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + lowerBoundTimerValue := p_LowerBoundTimerValue /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_DEREGISTRATION_REQUEST_MO(template (present) DeregisterType p_DeregisterType, + template (present) NAS_KeySetIdentifier p_KSI, + template (present) NG_MobileIdentity p_MobileId) := + { /* 24.501 cl. 8.2.12 (UE originating deregister) */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + deregistration_RequestMO := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationRequest_MO, /* cl. 9.7 M V 1 */ + ngKSI := p_KSI, /* cl. 9.11.3.32 M V 1/2 */ + deregistrationType := p_DeregisterType, /* cl. 9.11.3.20 M V 1/2 */ + ngMobileId := p_MobileId /* cl. 9.11.3.4 M LV 5-? */ + } + }; + + template (value) NG_NAS_DL_Message_Type cs_NG_DEREGISTRATION_ACCEPT := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.13/15 (DL) */ + deregistration_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationAccept_MO /* cl. 9.7 M V 1 */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_DEREGISTRATION_ACCEPT := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.13/15 (UL) */ + deregistration_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationAccept_MT /* cl. 9.7 M V 1 */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_DEREGISTRATION_REQUEST_MT (template (value) DeregisterType p_Type, + template (omit) GMM_GSM_Cause p_Cause, + template (omit) GPRS_Timer2 p_T3346 := omit, + template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + template (omit) CAGInfoList p_CAGInfoList := omit, + template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.14 (UE terminated deregister) */ + deregistration_RequestMT := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationRequest_MT, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + deregistrationType := p_Type, /* cl. 9.11.3.20 M V 1/2 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 O TV 2 IEI=058 */ + t3346 := p_T3346, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=69 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + lowerBoundTimerValue := p_LowerBoundTimerValue, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=3B Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=3C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_CP_SERVICE_REQUEST (template (present) NAS_KeySetIdentifier p_NAS_KeySetIdentifier, + template (present) CP_ServiceType p_CP_ServiceType, + template CIoTSmallDataRxdString p_CIoTSmallDataContainer, + template PayloadContainerType p_PayloadContainerType, + template PayloadContainer p_PayloadContainer, + template NG_PDU_SessionId p_NG_PDU_SessionId, + template PDU_SessionStatus p_PDU_SessionStatus, + template ReleaseAssistanceInd p_ReleaseAssistanceInd, + template ULDataStatus p_ULDataStatus, + template AdditionalInformation p_AdditionalInfo, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus, + template NASMessageContainer p_NASMsg, + template UE_RequestType p_UeRequestType, + template NG_PagingRestriction p_PagingRestrict) := + { /* 24.501 cl. 8.2.30 @sic R5s201387 Baseline Moving sic@ */ + cp_Service_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_CP_Service_Request, /* cl. 9.7 M V 1 */ + ngKSI := p_NAS_KeySetIdentifier, /* cl. 9.11.3.32 M V 1/2 */ + cpServiceType := p_CP_ServiceType, /* cl. 9.11.3.18D M V 1/2 */ + cIoTSmallDataContainer := p_CIoTSmallDataContainer, /* cl. 9.11.3.18B O TLV 4-257 IEI=6F */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 O TV 1 IEI=8 */ + payload := p_PayloadContainer, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + pduSessionId := p_NG_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=12 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + releaseAssistanceInd := p_ReleaseAssistanceInd, /* cl. 9.11.3.46A O TV 1 IEI=F */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + nasMsg := p_NASMsg, /* cl. 9.11.3.33 O TLV-E 3-n IEI=71 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_SERVICE_REQUEST (template (present) B4_Type p_ServiceType, + template (present) NAS_KeySetIdentifier p_KSI, + template (present) NG_MobileIdentity p_S_TMSI, + template ULDataStatus p_ULDataStatus, + template PDU_SessionStatus p_PDU_SessionStatus, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus, + template NASMessageContainer p_Msg, + template UE_RequestType p_UeRequestType, + template NG_PagingRestriction p_PagingRestrict):= + { /* 24.501 cl. 8.2.16 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + service_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_ServiceRequest, /* cl. 9.7 M V 1 */ + serviceType := p_ServiceType, /* cl. 9.11.3.50 M V 1/2 */ + ngKSI := p_KSI, /* cl. 9.11.3.32 M V 1/2 */ + s_TMSI := p_S_TMSI, /* cl. 9.11.3.4 M LV 6 */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 */ + nasMsg := p_Msg, /* cl. 9.11.3.33 O TLV-E 4-n IEI=71 Dec18 */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_SERVICE_ACCEPT (template (omit) PDU_SessionStatus p_PDU_SessionStatus, + template (omit) PDU_SessionReactivationResult p_PDU_SessionReactivationResult, + template (omit) PDU_SessionReactivationError p_PDU_SessionReactivationError, + template (omit) EAP_Message p_EAP, + template (omit) GPRS_Timer2 p_T3448, + template (omit) NG_AddReqResult p_AddRequestResult, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService) := + { /* 24.501 cl. 8.2.17 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + service_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_ServiceAccept, /* cl. 9.7 M V 1 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + pduSessionReactivationResult := p_PDU_SessionReactivationResult, /* cl. 9.11.3.42 O TLV 4-32 IEI=26 */ + pduSessionReactResultError := p_PDU_SessionReactivationError, /* cl. 9.11.3.43 O TLV-E 5-515 IEI=7E */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78*/ + t3448 := p_T3448, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + ngAddRequestResult := p_AddRequestResult, /* cl. 9.11.3.81 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_SERVICE_REJECT (template (value) GMM_GSM_Cause p_Cause, + template (omit) PDU_SessionStatus p_PDU_SessionStatus, + template (omit) GPRS_Timer2 p_T3346, + template (omit) EAP_Message p_EAP, + template (omit) GPRS_Timer2 p_T3448, + template (omit) CAGInfoList p_CAGInfoList, + template (omit) RegistrationWaitRange p_DisasterReturnWaitRange, + template (omit) ExtdCAGInfoList p_ExtdCAGInfoList, + template (omit) GPRS_Timer3 p_LowerBoundTimerValue, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming, + template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService) := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.18 */ + service_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_ServiceReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + t3346 := p_T3346, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + t3448 := p_T3448, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + lowerBoundTimerValue := p_LowerBoundTimerValue, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=3B Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=3C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_CONFIGURATION_UPDATE_COMMAND (template (omit) ConfigUpdateInd p_ConfigUpdateInd := omit, + template (omit) NG_MobileIdentity p_Guti := omit, + template (omit) NG_TrackingAreaIdList p_TaiList := omit, + template (omit) NSSAI p_AllowedNSSAI := omit, + template (omit) ServiceAreaIdList p_SaiList := omit, + template (omit) NetworkName p_FullNetworkName := omit, + template (omit) NetworkName p_ShortNetworkName := omit, + template (omit) TimeZone p_LocalTimeZone := omit, + template (omit) TimeZoneAndTime p_LocalTimeZoneAndTime := omit, + template (omit) DaylightSavingTime p_DaylightSavingTime := omit, + template (omit) LADN_Info p_LadnInfo := omit, + template (omit) MICO_Ind p_MicoInd := omit, + template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + template (omit) NSSAI p_ConfiguredNSSAI := omit, + template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + template (omit) OperatorAccessCatDefinitions p_OperatorAccessCatDefs := omit, + template (omit) SMSInd p_SmsInd := omit, + template (omit) GPRS_Timer3 p_T3447 := omit, + template (omit) CAGInfoList p_CAGInfoList := omit, + template (omit) UERadioCapId p_UERadioCapId := omit, + template (omit) UERadioCapIdDeletion p_UERadioCapIdDeletion := omit, + template (omit) RegistrationResult p_RegistrationResult := omit, + template (omit) TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig := omit, + template (omit) AddConfigInfo p_AddConfigInfo := omit, + template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + template (omit) NSSRG_Info p_NssrgInfo := omit, + template (omit) RegistrationWaitRange p_DisasterRoamingWaitRange := omit, + template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + template (omit) DisasterPLMNList p_DisasterPLMNList := omit, + template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + template (omit) PEIPS_AssistInfo p_UpdatedPEIPS_AssistInfo := omit, + template (omit) NSAG_Info p_NsagInfo := omit, + template (omit) PriorityInd p_PriorityInd := omit) := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.19.1 */ + configuration_Update_Command := { + protocolDiscriminator := tsc_EPD_GMM , /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, /* cl. 9.3 M V 1/2 */ + messageType := tsc_MT_NG_ConfigurationUpdateCommand, /* cl. 9.7 M V 1 */ + configUpdateInd := p_ConfigUpdateInd, /* cl. 9.11.3.18 M TV 1 IEI=D */ + guti := p_Guti, /* cl. 9.11.3.4 O TLV 13 IEI=77 Dec18 */ + taiList := p_TaiList, /* cl. 9.11.3.9 O TLV 9-114 IEI=54 */ + allowedNSSAI := p_AllowedNSSAI, /* cl. 9.11.3.37 O TLV 4-74 IEI=15 */ + saiList := p_SaiList, /* cl. 9.11.3.49 O TLV 6-114 IEI=27 */ + fullNetworkName := p_FullNetworkName, /* cl. 9.11.3.35 O TLV 3-? IEI=43 */ + shortNetworkName := p_ShortNetworkName, /* cl. 9.11.3.35 O TLV 3-? IEI=45 */ + localTimeZone := p_LocalTimeZone, /* cl. 9.11.3.52 O TV 2 IEI=46 */ + localTimeZoneAndTime := p_LocalTimeZoneAndTime, /* cl. 9.11.3.53 O TV 8 IEI=47 */ + daylightSavingTime := p_DaylightSavingTime, /* cl. 9.11.3.19 O TLV 3 IEI=49 */ + ladnInfo := p_LadnInfo, /* cl. 9.11.3.30 O TLV-E 3-1715 IEI=79 */ + micoInd := p_MicoInd, /* cl. 9.11.3.31 O TLV 1 IEI=B */ + networkSlicingInd := p_NetworkSlicingInd, /* cl. 9.11.3.36 O TV 1 IEI=9 */ + configuredNSSAI := p_ConfiguredNSSAI, /* cl. 9.11.3.37 O TLV 4-146 IEI=31 */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=11 */ + operatorAccessCatDefs := p_OperatorAccessCatDefs, /* cl. 9.11.3.38 O TLV-E 4-n IEI=76 Dec18 */ + smsInd := p_SmsInd, /* cl. 9.10.3.50A O TV 1 IEI=F Dec18 */ + t3447Value := p_T3447, /* cl. 9.11.2.5 O TLV 3 IEI=6C Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapabilityId := p_UERadioCapId, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapIdDeletionInd := p_UERadioCapIdDeletion, /* cl. 9.11.3.69 O TV 1 IEI=E Sep20 @sic R5s201387 Baseline Moving sic@ */ + registrationResult := p_RegistrationResult, /* cl. 9.11.3.6 O TLV 3 IEI=44 Sep20 @sic R5s201387 Baseline Moving sic@ */ + truncatedS_TMSIConfig := p_TruncatedS_TMSIConfig, /* cl. 9.11.3.70 O TLV 3 IEI=1B Sep20 @sic R5s201387 Baseline Moving sic@ */ + addConfigInfo := p_AddConfigInfo, /* cl. 9.11.3.74 O TV 1 IEI=C Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=7B Sep22 @sic R5s221179 Baseline Moving sic@ */ + nssrgInfo := p_NssrgInfo, /* cl. 9.11.3.82 O TLV-E 7-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterRoamingWaitRange := p_DisasterRoamingWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=14 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterPLMNList := p_DisasterPLMNList, /* cl. 9.11.3.83 O TLV 2-n IEI=13 Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + updatedPEIPS_AssistInfo := p_UpdatedPEIPS_AssistInfo, /* cl. 9.11.3.80 O TLV 3-n IEI=33 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nsagInfo := p_NsagInfo, /* cl. 9.11.3.87 O TLV-E 10-n IEI=7C Sep22 @sic R5s221179 Baseline Moving sic@ */ + priorityInd := p_PriorityInd /* cl. 9.11.3.91 O TV 1 IEI=E- Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } + + template (present) NG_NAS_UL_Message_Type cr_NG_CONFIGURATION_UPDATE_COMPLETE := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.20 */ + configuration_Update_Complete := { + protocolDiscriminator := tsc_EPD_GMM , /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, /* cl. 9.3 M V 1/2 */ + messageType := tsc_MT_NG_ConfigurationUpdateComplete /* cl. 9.7 M V 1 */ + } + }; + + template (value) NG_NAS_DL_Message_Type cs_NG_IDENTITY_REQUEST(NAS_IdType p_IdType) := + { /* @status APPROVED (NR5GC) */ + identity_Request :={ + protocolDiscriminator := tsc_EPD_GMM, + spareHalfOctet := tsc_SpareHalfOctet, + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_IdentityRequest, + spareHalfOctet2 := tsc_SpareHalfOctet, + identityType := cs_IdentityType(p_IdType) + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_IDENTITY_RESPONSE(template (present) NG_MobileIdentity p_MobileId) := + { /* @status APPROVED (NR5GC) */ + identity_Response :={ + protocolDiscriminator := tsc_EPD_GMM, + spareHalfOctet := tsc_SpareHalfOctet, + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_IdentityResponse, + ngMobileId := p_MobileId + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_SECURITY_MODE_COMMAND(template (value) NG_NAS_SecurityAlgorithms p_Algs, + NAS_KsiValue p_KeySetId, + NG_UE_SecurityCapability p_UECap, + template (omit) IMEISV_Request p_IMEISV, + template (omit) NAS_SecurityAlgorithms p_EPSAlgs, + template (omit) AdditionalSecurityInfo p_AddInfo, + template (omit) EAP_Message p_EAP, + template (omit) ABBA p_ABBA, + template (omit) S1_UE_SecurityCapability p_ReplayedSecurityCap) := + { /* 24.501 cl. 8.2.25 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Mode_Command := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeCommand, /* cl. 9.7 M V 1 */ + nasSecurityAlgorithms := p_Algs, /* cl. 9.11.3.34 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + ngNasKSI := cs_NAS_KeySetIdentifier_lv(p_KeySetId, tsc_NasKsi_NativeSecurityContext), /* cl. 9.11.3.32 M V 1/2 */ + ueSecurityCapability := p_UECap, /* cl. 9.11.3.54 M LV 3-9 */ + imeisvRequest := p_IMEISV, /* cl. 9.11.3.28 O TV 1 IEI=E */ + epsSecurityAlgorithms := p_EPSAlgs, /* cl. 9.11.3.25 O TV 2 IEI=57 */ + add5GSecurityInfo := p_AddInfo, /* cl. 9.11.3.12 O TLV 3 IEI=36 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + abba := p_ABBA, /* cl. 9.11.3.10 O TLV 4-n IEI=38 Dec18 */ + replayedUESecurityCap := p_ReplayedSecurityCap /* cl. 9.11.3.48 O TLV 4-7 IEI=19 Dec18 */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_SECURITY_MODE_COMPLETE (template (present) NG_MobileIdentity p_IMEISV, + template (present) ReplayedNASMessageContainer p_NASMsg, + template (present) NG_MobileIdentity p_NonIMEISV_PEI) := + { /* 24.501 cl. 8.2.26 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Mode_Complete := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeComplete, /* cl. 9.7 M V 1 */ + imeisv := p_IMEISV, /* cl. 9.11.3.4 O TLV 11 IEI=2C */ + nasMsg := p_NASMsg, /* cl. 9.11.3.33 O TLV-E 3-n IEI=7D */ + nonIMEISV_PEI := p_NonIMEISV_PEI /* cl. 9.11.3.4 O TLV-E 7-n IEI=78 Sep20 @sic R5s201387 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_SECURITY_MODE_REJECT (template (present) GMM_GSM_Cause p_Cause) := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.27 */ + security_Mode_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause /* cl. 9.11.3.2 M V 1 */ + } + }; + + //---------------------------------------------------------------------------- + // NG session management messages (24.501 cl. 8.3) + //---------------------------------------------------------------------------- + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_ESTABLISHMENT_REQUEST(template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI, + template PDU_SessionType p_PDU_SessionType, + template SSC_Mode p_SSC_Mode, + template NG_UE_SM_Cap p_UECap, + template MaxNumPacketFilters p_MaxNumPacketFilters, + template IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate, + template AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq, + template SM_PDU_DN_RequestContainer p_PDUReq, + template ExtdProtocolConfigOptions p_ExtdPCO, + template IPHeaderCompressionConfig p_IPHeaderCompConfig, + template DS_TT_EthernetPortMACAddr p_DS_TT_EthernetPortMACAddr, + template UE_DS_TT_ResidenceTime p_UE_DS_TT_ResidenceTime, + template PortManagementInfoContainer p_PortManagementInfoContainer, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig, + template PDU_Address p_SuggestedInterfaceId, + template ServiceLvlAAContainer p_ServiceLvlAA, + template RequestedMBSContainer p_RequestedMBS, + template PDUSessionPairId p_PduSessionPairId, + template RSN p_RSN) := + { /* 24.501 cl. 8.3.1 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + pdu_Session_Establishment_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionEstablishmentRequest, /* cl. 9.7 M V 1 */ + integrityProtMaxDataRate := p_IntegrityProtMaxDataRate, /* cl. 9.11.4.7 M V 2 */ + pduSessionType := p_PDU_SessionType, /* cl. 9.11.4.11 O TV 1 IEI=9 */ + sscMode := p_SSC_Mode, /* cl. 9.11.4.16 O TV 1 IEI=A */ + smCapability := p_UECap, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + maxNumPacketFilters := p_MaxNumPacketFilters, /* cl. 9.11.4.6 O TV 3 IEI=55 */ + alwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq, /* cl. 9.11.4.4 O TV 1 IEI=B */ + smPDU_RequestContainer := p_PDUReq, /* cl. 9.11.4.15 O TLV ? ? */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ds_TT_EthernetPortMACAddr := p_DS_TT_EthernetPortMACAddr, /* cl. 9.11.4.25 O TLV 8 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueDS_TT_ResidenceTime := p_UE_DS_TT_ResidenceTime, /* cl. 9.11.4.26 O TLV 10 IEI=6F Sep20 @sic R5s201387 Baseline Moving sic@ */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + suggestedInterfaceId := p_SuggestedInterfaceId, /* cl. 9.11.4.10 O TLV 11 IEI=29 Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + requestedMBS := p_RequestedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pduSessionPairId := p_PduSessionPairId, /* cl. 9.11.4.32 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + rsn := p_RSN /* cl. 9.11.4.33 O TLV 3 IEI=35 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT (template (value) NG_PDU_SessionId p_PDU_SessionId, + ProcedureTransactionIdentifier p_PTI, + template (value) SSC_Mode p_SSC_Mode, + template (value) PDU_SessionType p_PDU_SessionType, + template (value) QoS_Rules p_QoS_Rules, + template (value) Session_AMBR p_Session_AMBR, + template (omit) GMM_GSM_Cause p_Cause, + template (omit) PDU_Address p_PDU_Address, + template (omit) GPRS_Timer p_RQTimer, + template (omit) S_NSSAI_Type p_S_NSSAI, + template (omit) AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd, + template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts, + template (omit) EAP_Message p_EAP, + template (omit) QoSFlowDescr p_QoSFlowDescr, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO, + template (omit) DNN p_DNN, + template (omit) NGSM_NetworkFeatureSupport p_NGSM_NtwkFeatSupport, + template (omit) ServingPLMNRateControl p_ServingPLMNRateCtrl, + template (omit) ATSSSContainer p_ATSSSContainer, + template (omit) ControlPlaneInd p_ControlPlaneInd, + template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig, + template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA, + template (omit) ReceivedMBSContainer p_ReceivedMBS) := + { /* 24.501 cl. 8.3.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + pdu_Session_Establishment_Accept := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionEstablishmentAccept, /* cl. 9.7 M V 1 */ + sscMode := p_SSC_Mode, /* cl. 9.11.4.16 M V 1/2 */ + pduSessionType := p_PDU_SessionType, /* cl. 9.11.4.11 M V 1/2 */ + authorizedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 M LV-E 7-65538 */ + sessionAMBR := p_Session_AMBR, /* cl. 9.11.4.14 M LV ? */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + pduAddress := p_PDU_Address, /* cl. 9.11.4.10 O TLV 7-15 IEI=29 */ + rqTimerValue := p_RQTimer, /* cl. 9.11.2.3 O TLV 2 IEI=56 */ + s_NSSAI := p_S_NSSAI, /* cl. 9.11.2.6 O TLV 3-10 IEI=22 */ + alwaysOnPDUSessionInd := p_AlwaysOnPDUSessionInd, /* c. 9.11.4.3 O TV 1 IEI=8 */ + mappedEPSContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.9 O TLV-E 7-65538 IEI=7F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + authorizedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 6-65538 IEI=79 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + dnn := p_DNN, /* cl. 9.11.2.1A O TLV 3-102 IEI=25 */ + ngs_NetworkFeatureSupport := p_NGSM_NtwkFeatSupport, /* cl. 9.11.4.18 O TLV 3-15 IEI=17 Sep20 @sic R5s201387 Baseline Moving sic@ */ + servingPLMNRateControl := p_ServingPLMNRateCtrl, /* cl. 9.11.4.20 O TLV 4 IEI=18 Sep20 @sic R5s201387 Baseline Moving sic@ */ + atsssContainer := p_ATSSSContainer, /* cl. 9.11.4.22 O TLV-E 3-65538 IEI=77 Sep20 @sic R5s201387 Baseline Moving sic@ */ + controlPlaneOnlyIndication := p_ControlPlaneInd, /* cl. 9.11.4.23 O TV 1 IEI=C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + receivedMBS := p_ReceivedMBS /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_ESTABLISHMENT_REJECT (template (value) NG_PDU_SessionId p_PDU_SessionId, + template (value) ProcedureTransactionIdentifier p_PTI, + template (value) GMM_GSM_Cause p_Cause, + template (omit) GPRS_Timer3 p_BackOff, + template (omit) AllowedSSCMode p_SSC_Mode, + template (omit) EAP_Message p_EAP, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO, + template (omit) ReAttemptIndicator p_ReAttemptIndicator, + template (omit) NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd, // @sic R5s190543 sic@ + template (omit) ServiceLvlAAContainer p_ServiceLvlAA ) := + { /* 24.501 cl. 8.3.3 */ + /* @status APPROVED (NR5GC) */ + pdu_Session_Establishment_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionEstablishmentReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + backOffTimerValue := p_BackOff, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + allowedSSCMode := p_SSC_Mode, /* cl. 9.11.4.5 O TV 1 IEI=F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + ngsmCongestionReattemptInd := p_NGSM_CongestionReattemptInd, /* cl. 9.11.4.2A O TLV 3 IEI=61 Jun19 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + reattemptInd := p_ReAttemptIndicator, /* cl. 9.11.4.17 O TLV 3 IEI=1D Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_AUTHENTICATION_COMMAND (template (value) NG_PDU_SessionId p_PDU_SessionId, + ProcedureTransactionIdentifier p_PTI, + template (value) EAP_Message p_EAP, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.4 */ + pdu_Session_Authentication_Command := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationCommand, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 M LV-E 6-1502 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_AUTHENTICATION_COMPLETE (template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI, + template (present) EAP_Message p_EAP, + template ExtdProtocolConfigOptions p_ExtdPCO) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.5 */ + pdu_Session_Authentication_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationComplete, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP , /* cl. 9.11.2.2 M LV-E 6-1502 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (value) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_AUTHENTICATION_RESULT (template (value) NG_PDU_SessionId p_PDU_SessionId, + ProcedureTransactionIdentifier p_PTI, + template (omit) EAP_Message p_EAP, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO) := + { /* 24.501 cl. 8.3.6 */ + /* @status APPROVED (NR5GC) */ + pdu_Session_Authentication_Result := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationResult, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_MODIFICATION_REQUEST (template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI, + template NG_UE_SM_Cap p_NG_UE_SM_Cap, + template GMM_GSM_Cause p_Cause, + template MaxNumPacketFilters p_MaxNumPacketFilters, + template AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq, + template IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate, + template QoS_Rules p_QoS_Rules, + template QoSFlowDescr p_QoSFlowDescr, + template MappedEPSBearerContexts p_MappedEPSBearerContexts, + template ExtdProtocolConfigOptions p_ExtdPCO, + template PortManagementInfoContainer p_PortManagementInfoContainer, + template IPHeaderCompressionConfig p_IPHeaderCompConfig, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig, + template RequestedMBSContainer p_RequestedMBS, + template ServiceLvlAAContainer p_ServiceLvlAA) := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 8.3.7 */ + pdu_Session_Modification_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationRequest, /* cl. 9.7 M V 1 */ + smCapability := p_NG_UE_SM_Cap, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + maxNumPacketFilters := p_MaxNumPacketFilters, /* c. 9.11.4.9 O TV 3 IEI=55 */ + alwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq, /* c. 9.11.4.4 O TV 1 IEI=B */ + integrityProtMaxDataRate := p_IntegrityProtMaxDataRate, /* c. 9.11.4.7 O TV 2 IEI=13 */ + requestedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + requestedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 5-65538 IEI=79 */ + mappedEPSbearerContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=7F Dec18 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedMBS := p_RequestedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (value) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_MODIFICATION_COMMAND (template (value) NG_PDU_SessionId p_PDU_SessionId, + ProcedureTransactionIdentifier p_PTI, + template (omit) GMM_GSM_Cause p_Cause, + template (omit) Session_AMBR p_Session_AMBR, + template (omit) GPRS_Timer p_RQTimer, + template (omit) AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd, + template (omit) QoS_Rules p_QoS_Rules, + template (omit) QoSFlowDescr p_QoSFlowDescr, + template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO, + template (omit) ATSSSContainer p_ATSSSContainer, + template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig, + template (omit) PortManagementInfoContainer p_PortManagementInfoContainer, + template (omit) ServingPLMNRateControl p_ServingPLMNRateCtrl, + template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig, + template (omit) ReceivedMBSContainer p_ReceivedMBS, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 8.3.9 */ + pdu_Session_Modification_Command := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationCommand, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + sessionAMBR := p_Session_AMBR, /* cl. 9.11.4.14 O TLV 8 IEI=2A */ + rqTimerValue := p_RQTimer, /* cl. 9.11.2.3 O TV 2 IEI=56 */ + alwaysOnPDUSessionInd := p_AlwaysOnPDUSessionInd, /* c. 9.11.4.3 O TV 1 IEI=8 */ + authorizedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + mappedEPSContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=7F */ + authorizedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 6-65538 IEI=79 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + atsssContainer := p_ATSSSContainer, /* cl. 9.11.4.22 O TLV-E 3-65538 IEI=77 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + servingPLMNRateControl := p_ServingPLMNRateCtrl, /* cl. 9.11.4.20 O TLV 4 IEI=18 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + receivedMBS := p_ReceivedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_MODIFICATION_COMPLETE (template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := '00'O, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 8.3.10 */ + pdu_Session_Modification_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationComplete, /* cl. 9.7 M V 1 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + portManagementInfoContainer := p_PortManagementInfoContainer /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT (template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := '00'O, + template (present) GMM_GSM_Cause p_Cause := ?, + template ExtdProtocolConfigOptions p_ExtdPCO := *) := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.3.11 */ + pdu_Session_Modification_Command_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationCommandReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_RELEASE_REQUEST (template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI, + template GMM_GSM_Cause p_Cause, + template ExtdProtocolConfigOptions p_ExtdPCO) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.12 */ + pdu_Session_Release_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseRequest, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (value) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_RELEASE_REJECT (NG_PDU_SessionId p_PDU_SessionId, + ProcedureTransactionIdentifier p_PTI, + GMM_GSM_Cause p_Cause, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO) := + { /* 24.501 cl. 8.3.13 */ + pdu_Session_Release_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (omit) NG_NAS_DL_Message_Type cs_NG_PDU_SESSION_RELEASE_COMMAND (template (value) NG_PDU_SessionId p_PDU_SessionId, + ProcedureTransactionIdentifier p_PTI, + template (value) GMM_GSM_Cause p_Cause, + template (omit) GPRS_Timer3 p_BackOffTimer, + template (omit) EAP_Message p_EAP, + template (omit) NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd, // @sic R5s190543 sic@ + template (omit) ExtdProtocolConfigOptions p_ExtdPCO, + template (omit) AccessType p_AccessType, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.14 */ + pdu_Session_Release_Command := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseCommand, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + backOffTimerValue := p_BackOffTimer, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + ngsmCongestionReattemptInd := p_NGSM_CongestionReattemptInd, /* cl. 9.11.4.2A O TLV 3 IEI=61 Jun19 @sic R5s190543 sic@ */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + accessType := p_AccessType, /* cl. 9.11.2.1A O TV 1 IEI=D Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_PDU_SESSION_RELEASE_COMPLETE (template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI := '00'O, + template GMM_GSM_Cause p_Cause := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.15 */ + pdu_Session_Release_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseComplete, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NG_GSM_STATUS (template (present) NG_PDU_SessionId p_PDU_SessionId, + template ProcedureTransactionIdentifier p_PTI := *, + template GMM_GSM_Cause p_Cause := *) := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.3.16 */ + gsm_Status := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_GSM_Status, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause /* cl. 9.11.4.2 M V 1 IEI=59 */ + } + }; + + //---------------------------------------------------------------------------- + // NG Mobility Management (GMM) information elements (24.501 cl. 9.11.3) + //---------------------------------------------------------------------------- + + template (value) EAP_Message cs_DummyEAP_Message := + { /* 24.501 cl. 9.11.2.2 */ + iei := omit, + iel := '0000'O, + eapMsg := ''O + }; + + template (present) EAP_Message cr_EAP_Message (template IEI8_Type p_IEI := '78'O, template (present) octetstring p_EAPMsg := ?) := + { /* 24.501 cl. 9.11.2.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := ?, + eapMsg := p_EAPMsg + }; + + template (value) EAP_Message cs_EAP_Message (octetstring p_EncodedEapMsg, + template (omit) IEI8_Type p_IEI := '78'O) := + { /* 24.501 cl. 9.11.2.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := int2oct(lengthof(p_EncodedEapMsg), 2), + eapMsg := p_EncodedEapMsg + }; + + template (value) NG_NetworkFeatureSupport cs_NG_NetworkFeatureSupport_Def := + { /* 24.501 cl 9.11.3.5 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '21'O, /* @sic R5s190109 sic@ */ + iel := '03'O, /* present in case of LV or TLV; omit in case of V @sic R5s201526 sic@ */ + mpsi := '0'B, + iwk_N26 := '0'B, + emf := '00'B, + emc := '11'B, //@sic R5-198540 sic@ + imsVoPS_n3GPP := '0'B, + imsVoPS_3GPP := '1'B, + ng_UP_CIoT := '0'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + ngIPHC_CP_CIoT := '0'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + n3Data := '0'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + ng_CP_CIoT := '0'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + restrictEC := '00'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + mcsi := '0'B, + emcn3 := '0'B, + spareBit := tsc_Spare1, + pr := '0'B, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + rpr := '0'B, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + piv := '0'B, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ncr := '0'B, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngEHC_CP_CIoT := '0'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + atsInd := '0'B, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + ngLCS := '0'B /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + }; + + template (value) NG_NetworkFeatureSupport cds_NG_NetworkFeatureSupport_NoN26 + modifies cs_NG_NetworkFeatureSupport_Def := + { /* @status APPROVED (NR5GC_IRAT) */ + iwk_N26 := '1'B + }; + + template (value) NG_NetworkFeatureSupport cds_NG_NetworkFeatureSupport_NoImsVoPS_3GPP + modifies cs_NG_NetworkFeatureSupport_Def := + { /* @status APPROVED (NR5GC) */ + imsVoPS_3GPP := '0'B + }; + + template (value) RegistrationResult cs_RegistrationResult(B3_Type p_Result, + B1_Type p_SMS, + B1_Type p_EmergencyRegistered, + B1_Type p_NssaaPerformed, + B1_Type p_DisasterRoamingResult) := + { /* 24.501 cl. 9.11.3.6 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iel := '01'O, /* present in case of LV or TLV; omit in case of V */ + spare := tsc_Spare1, + disasterRoamingResult := p_DisasterRoamingResult, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + emergencyRegistered := p_EmergencyRegistered, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + nssaaPerformed := p_NssaaPerformed, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + smsAllowed := p_SMS, + resultValue := p_Result + }; + + template (present) RegistrationType cr_RegistrationType (template (present) B3_Type p_Type, + template (present) B1_Type p_FOR) := + { /* 24.501 cl. 9.11.3.7 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + fOR := p_FOR, + registrationType := p_Type + }; + + template (value) CAGInfoList cs_EmptyCAGInfoList := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 9.11.3.18A */ + iei := '75'O, // @sic R5-213413 sic@ + iel := '0000'O, + listOfCAGInfos := omit + }; + + template (present) AuthenticationResponseParameter cr_AuthenticationResponseParameter(template (present) B32_128_Type p_ExpectedRES) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '2D'O, + iel := ?, /* RES has length of 32..128 bits i.e. 4..16 octets */ + res := p_ExpectedRES + }; + + template (value) NG_PartialTaiType cs_NG_NonConsecutivePartialTaiList(NAS_PlmnId p_PlmnId, + NG_NAS_TacList p_TacList):= + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + type0List := { + { + plmnId := p_PlmnId, + tacList := p_TacList + } + } + }; + + template (value) NG_ListOfPartialTaiList cs_NG_ListNonConsecutivePartialTaiList (NAS_PlmnId p_PlmnId, + NG_NAS_TacList p_TacList):= + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + allowedType := tsc_Spare1, + typeOfList := tsc_NonConsecutiveTacs, + numberOfElements := int2bit(lengthof(p_TacList) - 1, 5), + partialTaiList := cs_NG_NonConsecutivePartialTaiList (p_PlmnId, p_TacList) + }; + + template (value) NG_TrackingAreaIdList cs_NG_TAIListNonConsecutive(NAS_PlmnId p_PlmnId, + NG_NAS_TacList p_TacList) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '54'O, + lvPart := { /* separated definition into TLV and LV parts Sep22 @sic R5s221179 Baseline Moving sic@ */ + iel := int2oct(4 + 3 * lengthof(p_TacList), 1), + listOfPartialTais := {cs_NG_ListNonConsecutivePartialTaiList (p_PlmnId, p_TacList) } + } + }; + + template (value) NG_PartialTaiType cs_NG_ConsecutivePartialTaiList(NG_PartialTai p_PartialTac):= + { /* @status APPROVED (NR5GC) */ + type1List := { + { + partialTac := p_PartialTac + } + } + }; + + template (value) NG_ListOfPartialTaiList cs_NG_ListConsecutivePartialTaiList ( B5_Type p_NumberOfElements, + NG_PartialTai p_PartialTac):= + { /* @status APPROVED (NR5GC) */ + allowedType := tsc_Spare1, + typeOfList := tsc_ConsecutiveTacs, + numberOfElements := p_NumberOfElements, + partialTaiList := cs_NG_ConsecutivePartialTaiList (p_PartialTac) + }; + + template (value) NG_TrackingAreaIdList cs_NG_TAIListConsecutive(B5_Type p_NumberOfElements, + NG_PartialTai p_PartialTac) := + { /* @status APPROVED (NR5GC) */ + iei := '54'O, + lvPart := { /* separated definition into TLV and LV parts Sep22 @sic R5s221179 Baseline Moving sic@ */ + iel := int2oct(7, 1), + listOfPartialTais := {cs_NG_ListConsecutivePartialTaiList(p_NumberOfElements, p_PartialTac) } + } + }; + + template (value) NG_PartialTai cs_NG_PartialTai(NAS_PlmnId p_PlmnId, O3_Type p_Tac) := + { /* @status APPROVED (NR5GC) */ + plmnId :=p_PlmnId, + tac :=p_Tac + }; + template (present) NG_TrackingAreaId cr_NG_TAI(NAS_PlmnId p_PlmnId, // O3_Type + O3_Type p_Tac) := // O3_Type + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + iei := '52'O, + plmnId := p_PlmnId, + tac := p_Tac + }; + + template (value) NG_NAS_SecurityAlgorithms cs_NG_NAS_SecurityAlgorithms (B4_Type p_CipherAlg, + B4_Type p_IntAlg) := + { /* 24.501 cl. 9.11.3.34 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, /* present in case of TV; omit in case of V */ + cipheringType := p_CipherAlg, /* Type of ciphering algorithm */ + integrityType := p_IntAlg /* Type of integrity protection algorithm */ + }; + + template (present) CIoTSmallDataContainer cr_CIoTSmallDataContainer (template (present) B3_Type p_DataType, + template (present) B2_Type p_DDX, + template (present) B3_Type p_PDUSessionId, + template (present) octetstring p_DataContents, + template Type4Length_Type p_AddInfoLength, + template octetstring p_AddInfo):= + { /* 24.501 cl. 9.11.3.18B */ + iel := ?, + dataType := p_DataType, + ddx := p_DDX, /* set to 00 for dataType = 001 */ + pduSessionId := p_PDUSessionId, /* set to 00 for dataType = 010 or 001 */ + lengthOfAddInfo := p_AddInfoLength, /* only present for dataType = 010 */ + addInfo := p_AddInfo, /* not present for dataType = 000 or 001 */ + dataContents := p_DataContents + }; + + template (value) ConfigUpdateInd cs_ConfigUpdateInd (B1_Type p_Red := '0'B, + B1_Type p_Ack := '0'B):= + { /* @status APPROVED (NR5GC) */ + iei := 'D'H, // currently only used as TV cl. 9.11.3.18 + spare := '00'B, //B2_Type cl. 9.11.3.18 + red := p_Red, //B1_Type cl. 9.11.3.18 + ack := p_Ack //B1_Type cl. 9.11.3.18 + }; + + template (value) DNN cs_DNN (template (omit) IEI8_Type p_IEI := '25'O, // @sic R5s190109 sic@ + octetstring p_DNN) := + { /* 24.501 cl. 9.11.3.21 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, /* present in case of TV; omit in case of V */ + iel := int2oct(lengthof (p_DNN), 1), /* present in case of LV or TLV; omit in case of V */ + dnnValue := p_DNN + }; + + template (value) DeregisterType crs_DeregisterType (B1_Type p_SwitchOff, + B1_Type p_ReReg, + B2_Type p_Access := '01'B) := + { // 24.501 cl. 9.11.3.20 + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // IEI is always skipped + switchOff := p_SwitchOff, + reRegistration := p_ReReg, + accessType := p_Access + }; + + template (value) AdditionalSecurityInfo cs_AdditionalSecurityInfo (B1_Type p_Rinmr, + B1_Type p_Hdp := '0'B) := + { /* 24.501 cl 9.11.3.12 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '36'O, + iel := '01'O, // @sic R5s211480 sic@ + spareBits := tsc_Spare6, + rinmr := p_Rinmr, + hdp := p_Hdp + }; + + template (value) NetworkSlicingInd cs_NetworkSlicingInd (B1_Type p_DCNI, + B1_Type p_NSSCI) := + { // 24.501 cl. 9.11.3.36 + /* @status APPROVED (NR5GC) */ + iei := '9'H, + spare := tsc_Spare2, + dcni := p_DCNI, + nssci := p_NSSCI + }; + + template (value) S_NSSAI_Type cs_S_NSSAI_WithIEI(IEI8_Type p_IEI, + template (value) S_NSSAI_LV p_LvPart) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + lvPart := p_LvPart + + }; + + template (value) S_NSSAI_LV cs_S_NSSAI(Type4Length_Type p_Length, + O1_Type p_SST, + template (omit) O3_Type p_SD, + template (omit) O1_Type p_MappedSST := omit, + template (omit) O3_Type p_MappedSD := omit) := + { // 24.501 cl. 9.11.2.8 + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* @sic R5s221179 Baseline Moving sic@ */ + iel := p_Length, + vPart := { /* @sic R5s221179 Baseline Moving sic@ */ + sst := p_SST, + sd := p_SD, + mappedSST := p_MappedSST, + mappedSD := p_MappedSD + } + }; + + template (value) S_NSSAI_Type cs_S_NSSAI_SST1eMBB_WithIEI := cs_S_NSSAI_WithIEI('22'O, cs_S_NSSAI_SST1eMBB); /* @sic R5s221179 sic@ @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) S_NSSAI_LV cs_S_NSSAI_SST1eMBB := cs_S_NSSAI('01'O, '01'O, omit); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) S_NSSAI_LV cs_S_NSSAI_SST2_URLLC := cs_S_NSSAI('01'O, '02'O, omit); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) S_NSSAI_LV cs_S_NSSAI_SST3_MIoT := cs_S_NSSAI('01'O, '03'O, omit); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) S_NSSAI_LV cs_S_NSSAI_SST4_V2X := cs_S_NSSAI('01'O, '04'O, omit); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + template (value) NSSAI cs_NSSAI_SST1eMBB (template (value) IEI8_Type p_IEI) := + // 24.501 cl. 9.11.3.37 + /* @status */ + cs_NSSAI_Def (p_IEI, {cs_S_NSSAI_SST1eMBB}); + + template (value) NSSAI cs_NSSAI_SSTs (template (value) IEI8_Type p_IEI) := + /* @status APPROVED (NR5GC) */ + // @sic R5s210440 Ch. 1 sic@ + cs_NSSAI_Def (p_IEI, {cs_S_NSSAI('02'O, '01'O, omit, '01'O)}); + + template (value) NSSAI cs_NSSAI_Allowed_Def := + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + cs_NSSAI_Def ('15'O, {cs_S_NSSAI_SST1eMBB, cs_S_NSSAI_SST2_URLLC, cs_S_NSSAI_SST3_MIoT, cs_S_NSSAI_SST4_V2X}); + + template (value) NSSAI cs_NSSAI_Def (template (value) IEI8_Type p_IEI, template (value) S_NSSAI_TypeList p_List) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + // 24.501 cl. 9.11.3.37 + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + lvPart := { /* @sic R5s221179 Baseline Moving sic@ */ + iel := fl_NR5GC_NSSAILength(p_List), + s_nssai := p_List + } + }; + + template (value) RejectedS_NSSAI cs_RejectedS_NSSAI(B4_Type p_Length, + B4_Type p_CauseValue, + O1_Type p_SST, + template (omit) O3_Type p_SD := omit + ) := + { /* @status APPROVED (NR5GC) */ + // 24.501 cl. 9.11.3.46 + len := p_Length, + causeValue := p_CauseValue, + sst := p_SST, + sd := p_SD + }; + + /* + * @desc Returns length of S-NSSAI list + * @param p_List + * @return Type4Length_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_NR5GC_NSSAILength (template (value) S_NSSAI_TypeList p_List) return Type4Length_Type + { + var integer j; + var integer v_Length:=0; + + for (j:= 0; j < lengthof(p_List); j:= j+1) { + v_Length := v_Length + oct2int(valueof(p_List[j].iel)); + v_Length := v_Length + 1; // for iel + } + return int2oct(v_Length, 1); + } + + /* + * @desc To extract a single NSSAI from part of an AT command + * *** For common module use only *** + * Incoming string MUST be already parsed for ':' + * @param p_Cause (by reference) + * @param p_ATCommand + * @return template (value) S_NSSAI_LV + * @status APPROVED (NR5GC) + */ + function fl_ExtractNSSAI_FromEachATCommandLine(out integer p_Cause, charstring p_ATCommand) return template (value) S_NSSAI_LV + { + var CharStringList_Type v_ListOfSubStr := {}; + var CharStringList_Type v_ListOfRejCause := {}; + var CharStringList_Type v_ListOfSst_Sd := {}; + var O1_Type v_SST; + var template (omit) O3_Type v_SD; + var template (omit) O1_Type v_MappedSST; + var template (omit) O3_Type v_MappedSD; + var integer v_Length := 0; + + p_Cause := -1; + + // AT Command format is sst.sd;mappedsst.mappedsd[if rejectedNSSAI #cause]: + v_ListOfRejCause := f_StringSplit(p_ATCommand, {"#"}); + if (lengthof(v_ListOfRejCause) > 1) { // There is a cause value + p_Cause := str2int(v_ListOfRejCause[1]); + // now parse the string with the cause value removed + p_ATCommand := v_ListOfRejCause[0]; + } + v_ListOfSubStr := f_StringSplit(p_ATCommand, {";"}); + v_ListOfSst_Sd := f_StringSplit(v_ListOfSubStr[0], {"."}); + v_SST := str2oct(v_ListOfSst_Sd[0]); + v_Length := v_Length + 1; // SST = 1 octet + if (lengthof(v_ListOfSst_Sd) > 1) { + v_SD := str2oct(v_ListOfSst_Sd[1]); + v_Length := v_Length + 3; // SD = 3 octets + } else { + v_SD := omit; + } + if (lengthof(v_ListOfSubStr) > 1) { + // now get mapped values + v_ListOfSst_Sd := f_StringSplit(v_ListOfSubStr[1], {"."}); + v_MappedSST := str2oct(v_ListOfSst_Sd[0]); + v_Length := v_Length + 1; // SST = 1 octet + if (lengthof(v_ListOfSst_Sd) > 1) { + v_MappedSD := str2oct(v_ListOfSst_Sd[1]); + v_Length := v_Length + 3; // SD = 3 octets + } else { + v_MappedSD := omit; + } + } else { + // No mapped values + v_MappedSST := omit; + v_MappedSD := omit; + } + + return cs_S_NSSAI (int2oct(v_Length, 1), v_SST, v_SD, v_MappedSST, v_MappedSD); + } + + /* + * @desc To match the AT command with a listed NSSAI in any order + * @param p_NSSAI + * @param p_ATCommand + * @return boolean + * @status APPROVED (NR5GC) + */ + function f_MatchListOfNSSAI_WithATCommand(template (value) NSSAI_LV p_NSSAI, charstring p_ATCommand) return boolean + { + var CharStringList_Type v_ListOfAllowed := {}; + var template (value) S_NSSAI_TypeList v_ListOfNSSAI := {}; + var template S_NSSAI_TypeList v_PermutationNSSAI := {}; + var integer v_Cause; // ignore cause value for NSSAI_LV types + var integer v_NumAllowed; + + // AT Command format is NSSAI:NSSAI + v_ListOfAllowed := f_StringSplit(p_ATCommand, {":"}); + for (v_NumAllowed := 0; v_NumAllowed < lengthof(v_ListOfAllowed); v_NumAllowed := v_NumAllowed +1 ) { + v_ListOfNSSAI[v_NumAllowed] := fl_ExtractNSSAI_FromEachATCommandLine(v_Cause, v_ListOfAllowed[v_NumAllowed]); + } + v_PermutationNSSAI := {permutation (all from p_NSSAI.s_nssai)}; + return match (valueof(v_ListOfNSSAI), v_PermutationNSSAI); + } + + /* + * @desc To match the AT command with a list of RejectNSSAI in any order + * @param p_NSSAI - of type XtdRejectedS_NSSAI_List + * @param p_ATCommand + * @param p_AtLeastThisList - other values can be included in list. Set to false if AT command should ONLY consist of p_NSSAI + * @return boolean + */ + function f_MatchXtdRejectedNSSAI_WithATCommand(template (value) XtdRejectedS_NSSAI_List p_NSSAI, + charstring p_ATCommand, + boolean p_AtLeastThisList := true) return boolean + { + var CharStringList_Type v_ListOfAllowed := {}; + var template (value) XtdRejectedS_NSSAI_List v_ListOfNSSAI := {}; + var template XtdRejectedS_NSSAI_List v_PermutationNSSAI := {}; + var template (value) S_NSSAI_LV v_NSSAI_LV; + var integer v_Cause; + var integer v_NumAllowed; + + // AT Command format is NSSAI:NSSAI + v_ListOfAllowed := f_StringSplit(p_ATCommand, {":"}); + for (v_NumAllowed := 0; v_NumAllowed < lengthof(v_ListOfAllowed); v_NumAllowed := v_NumAllowed +1 ) { + v_NSSAI_LV := fl_ExtractNSSAI_FromEachATCommandLine(v_Cause, v_ListOfAllowed[v_NumAllowed]); + // Fit returned template into XtdRejectedNSSAI type + v_ListOfNSSAI[v_NumAllowed] := cs_XtdRejectedS_NSSAI(int2bit(oct2int(valueof(v_NSSAI_LV.iel)), 4), + int2bit(v_Cause, 4), + valueof(v_NSSAI_LV.vPart.sst), + v_NSSAI_LV.vPart.sd, + v_NSSAI_LV.vPart.mappedSST, + v_NSSAI_LV.vPart.mappedSD); + } + if (p_AtLeastThisList) { + v_PermutationNSSAI := {permutation (all from p_NSSAI, *)}; + } else { + v_PermutationNSSAI := {permutation (all from p_NSSAI)}; + } + return match (valueof(v_ListOfNSSAI), v_PermutationNSSAI); + } + + /* + * @desc Returns length of XtdRejectedS_NSSAI list + * @param p_List + * @return integer + */ + function fl_XtdRejectedS_NSSAILength (template (value) XtdRejectedS_NSSAI_List p_List) return integer + { + var integer j; + var integer v_Length:=0; + + for (j:= 0; j < lengthof(p_List); j:= j+1) { + v_Length := v_Length + bit2int(valueof(p_List[j].len)); + v_Length := v_Length + 1; // for len & cause + } + return v_Length; + } + + /* + * @desc Returns a template of type PartialXtdRejectedNSSAIType0 + * @param p_List + * @return template (value) PartialXtdRejectedNSSAI + */ + function f_BuildNR5GC_PartialXtdRejectedNSSAIType0 (template (value) XtdRejectedS_NSSAI_List p_List) return template (value) PartialXtdRejectedNSSAI + { + var integer j; + var integer v_Length:=0; + var integer v_NumOfElements := -1; + + for (j:= 0; j < lengthof(p_List); j:= j+1) { + v_NumOfElements := v_NumOfElements +1; + v_Length := v_Length + bit2int(valueof(p_List[j].len)); + v_Length := v_Length + 2; // for type of list etc + back off timer + } + return cs_PartialXtdRejectedNSSAIType0(int2bit(v_NumOfElements, 4), + p_List); + } + + /* + * @desc Returns a template of type PartialXtdRejectedNSSAIType1 + * @param p_List + * @return template (value) PartialXtdRejectedNSSAI + */ + function f_BuildNR5GC_PartialXtdRejectedNSSAIType1 (template (value) XtdRejectedS_NSSAI_List p_List, + O1_Type p_BackOffTimer) return template (value) PartialXtdRejectedNSSAI + { + var integer j; + var integer v_Length:=0; + var integer v_NumOfElements := -1; + + for (j:= 0; j < lengthof(p_List); j:= j+1) { + v_NumOfElements := v_NumOfElements +1; + v_Length := v_Length + bit2int(valueof(p_List[j].len)); + v_Length := v_Length + 2; // for type of list etc + back off timer + } + return cs_PartialXtdRejectedNSSAIType1(int2bit(v_NumOfElements, 4), + p_BackOffTimer, + p_List); + } + + /* + * @desc Returns a template of type ExtdRejectedNSSAI + * @param p_List + * @return template (value) ExtdRejectedNSSAI + */ + function f_BuildNR5GC_ExtdRejectedNSSAI (template (value) PartialXtdRejectedNSSAI_List p_List) return template (value) ExtdRejectedNSSAI + { + var integer j; + var integer v_Length:=0; + + for (j:= 0; j < lengthof(p_List); j:= j+1) { + if (ischosen(p_List[j].type0)){ + v_Length := v_Length + fl_XtdRejectedS_NSSAILength(p_List[j].type0.rejectS_NSSAI); + v_Length := v_Length + 1; // for type of list etc + } else { + v_Length := v_Length + fl_XtdRejectedS_NSSAILength(p_List[j].type1.rejectS_NSSAI); + v_Length := v_Length + 2; // for type of list etc + back off timer + } + } + return cs_ExtdRejectedNSSAI(int2oct(v_Length, 1), p_List); + } + + template (value) ExtdRejectedNSSAI cs_ExtdRejectedNSSAI(Type4Length_Type p_Len, + template(value) PartialXtdRejectedNSSAI_List p_List) := + { + iei := '68'O, + iel := p_Len, + partialXtd := p_List + }; + + template (value) PartialXtdRejectedNSSAI cs_PartialXtdRejectedNSSAIType0 (B4_Type p_NumOfElements, + template (value) XtdRejectedS_NSSAI_List p_List):= + { + type0 := { + spare := '0'B, + typeOfList := '000'B, + numOfElements := p_NumOfElements, + rejectS_NSSAI := p_List + } + }; + + template (value) PartialXtdRejectedNSSAI cs_PartialXtdRejectedNSSAIType1 (B4_Type p_NumOfElements, + O1_Type p_BackOffTimer, + template (value) XtdRejectedS_NSSAI_List p_List):= + { + type1 := { + spare := '0'B, + typeOfList := '001'B, + numOfElements := p_NumOfElements, + backOffTimerValue := p_BackOffTimer, + rejectS_NSSAI := p_List + } + }; + + template (value) XtdRejectedS_NSSAI cs_XtdRejectedS_NSSAI (B4_Type p_Len, + B4_Type p_Cause, + O1_Type p_SST, + template (omit) O3_Type p_SD := omit, + template (omit) O1_Type p_MappedSST := omit, + template (omit) O3_Type p_MappedSD := omit) := + { + len := p_Len, + causeValue := p_Cause, + snssai := { + sst := p_SST, + sd := p_SD, + mappedSST := p_MappedSST, + mappedSD := p_MappedSD + } + }; + + template (present) NG_GMM_Cap cr_NG_GMM_CapAny := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 9.11.3.1 */ + iei := '10'O, /* present in case of TLV; omit in case of LV */ + iel := ?, /* @sic R5s210786 sic@ */ + sgc := ?, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + ngIPHC_CP_CIoT := ?, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + n3Data := ?, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + ng_CP_CIoT := ?, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + restrictEC := ?, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + lpp := ?, /* Dec18 */ + hoAttach := ?, + s1Cap := ?, + racs := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + nssaa := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + ngLCS := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + v2xNPC5 := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + v2xEPC5 := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + v2x := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + ng_UP_CIoT := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + ngSRVCC := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + ngProSeL2relay := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngProSe_dc := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngProSe_dd := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + erNSSAI := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngEHC_CP_CIoT := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + multipleUP := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + wusa := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + cag := *, /* Sep20 @sic R5s201387 Baseline Moving, R5s201531 sic@ */ + pr := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + rpr := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + piv := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ncr := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + nrPSSI := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngProSeL3rmt := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngProSeL2rmt := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngProSeL3relay := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + mpsiu := *, /* Jun23 @sic R5s230533 sic@ */ + uas := *, /* Jun23 @sic R5s230533 sic@ */ + nsag := *, /* Jun23 @sic R5s230533 sic@ */ + exCAG := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + ssnpnsi := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + eventNotification := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + mint := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + nssrg := *, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + spareBits := *, /* Jun23 @sic R5s230533 sic@ */ + rcman := *, /* Jun23 @sic R5s230533 sic@ */ + rcmap := *, /* Jun23 @sic R5s230533 sic@ */ + spare := omit + }; + + template (present) NG_GMM_Cap cdr_NG_GMM_Cap_RACS modifies cr_NG_GMM_CapAny := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + racs := '1'B + }; + + template (present) NG_GMM_Cap cdr_NG_GMM_Cap_S1 modifies cr_NG_GMM_CapAny := + { /* @status APPROVED (NR5GC_IRAT) */ + s1Cap := '1'B + }; + + template (present) NG_GMM_Cap cdr_NG_GMM_Cap_ERNSSAI modifies cr_NG_GMM_CapAny := + { + erNSSAI := '1'B + }; + + template (value) PayloadContainer cs_DummyPayloadContainer := + { // 24.501 cl. 9.11.3.39 + /* This is just a dummy to use in the GMM message as the NAS Emulator encodes the payload */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, + iel := '0000'O, + payload := ''O + }; + + template (present) PayloadContainer cr_PayloadContainer(template IEI8_Type p_IEI := omit) := + { // 24.501 cl. 9.11.3.39 + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := ?, /* allow any length */ + payload := ? /* allow any value for now */ + }; + + template (value) PayloadContainerType cs_PayloadContainerType (B4_Type p_ContainerType, + template (omit) IEI4_Type p_IEI := omit) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 9.11.3.40 */ + iei := p_IEI, + container := p_ContainerType + }; + + template (present) PayloadContainerType cr_PayloadContainerType (B4_Type p_ContainerType, + template IEI4_Type p_IEI := omit) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 9.11.3.40 */ + iei := p_IEI, + container := p_ContainerType + }; + + template (present) NG_PDU_SessionId cr_NG_PDU_SessionId(template IEI8_Type p_IEI := omit, + template (present) O1_Type p_Id := '00'O) := + { /* 24.501 cl. 9.11.3.41 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + sessionId := p_Id + }; + + template (value) NG_PDU_SessionId cs_NG_PDU_SessionId(template (value) O1_Type p_Id := '00'O, + template (omit) IEI8_Type p_IEI := '12'O) := // @sic R5s190338 sic@ + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 9.11.3.41 */ + iei := p_IEI, + sessionId := p_Id + }; + + template (value) GMM_GSM_Cause cs_GMM_GSM_Cause(template (omit) IEI8_Type p_IEI, + NAS_CauseValue_Type p_Cause) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 9.11.3.2, 9.11.4.2 */ + iei := p_IEI, /* present in case of TV; omit in case of V */ + causeValue := p_Cause + }; + + template (value) ABBA cs_ABBA(octetstring p_ABBA, + template (omit) IEI8_Type p_IEI := '38'O, + Type4Length_Type p_Length := '02'O) := + { /* 24.501 cl. 9.11.3.10 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := p_Length, + abbaValue := p_ABBA + }; + + template (present) GMM_GSM_Cause cr_GMM_GSM_Cause(template IEI8_Type p_IEI, + template (present) NAS_CauseValue_Type p_Cause := ?) := + { /* 24.501 cl. 9.11.3.2, 9.11.4.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, /* present in case of TV; omit in case of V */ + causeValue := p_Cause + }; + + template (present) PDU_SessionStatus cr_PDU_SessionStatusAny (IEI8_Type p_IEI := '50'O) := + { /* 24.501 cl. 9.11.3.44 */ + /* @status APPROVED (NR5GC_IRAT) */ + iei := p_IEI, /* present in case of TV or TLV; omit in case of V */ + iel := ?, /* present in case of LV or TLV; omit in case of V */ + psi0_7 := ?, /* PSI(0)- PSI(7) */ + psi8_15 := ?, /* PSI(8)- PSI(15)*/ + spare := * + }; + + template (present) PDU_SessionStatus cr_PDU_SessionStatus(B8_Type p_Psi0_7, B8_Type p_Psi8_15):= + { /* @status APPROVED (NR5GC_IRAT) */ + /* 24.501 cl. 9.11.3.44 */ + iei := '50'O, + iel := '02'O, + psi0_7 := p_Psi0_7, + psi8_15 := p_Psi8_15, + spare := omit + }; + + template (present) NG_Request_Type cr_NG_Request_Type (B3_Type p_RequestValue) := + { /* 24.501 cl. 9.11.3.47 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '8'H, // currently only used as TV + spare := tsc_Spare1, + requestValue := p_RequestValue + }; + + //---------------------------------------------------------------------------- + // NG Session Management (GSM) information elements (24.501 cl. 9.11.4) + //---------------------------------------------------------------------------- + + template (present) AlwaysOnPDUSessionReq cr_AlwaysOnRequested := crs_AlwaysOn('1'B); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) AlwaysOnPDUSessionInd cs_AlwaysOnAllowed := crs_AlwaysOn('1'B); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) AlwaysOnPDUSessionInd cs_AlwaysOnNotAllowed := crs_AlwaysOn('0'B); /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) AlwaysOnPDUSessionInd crs_AlwaysOn (B1_Type p_Apsi) := + { // 24.501 cl. 9.11.4.3 + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '8'H, + spare := tsc_Spare3, + apsi := p_Apsi + }; + + template (value) EPSParameters cs_EPSParameter_QoS (octetstring p_Param) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + id := '01'O, + lenOfContent := omit, // this field is included in the EPS QoS template @sic R5s210302 sic@ + epsParam := p_Param + }; + + template (value) EPSParameters cs_EPSParameter_TFT (octetstring p_Param) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT) */ + id := '03'O, + lenOfContent := omit, // this field is included in the TFT template + epsParam := p_Param + }; + + template (value) MappedEPSContext cs_OneMappedEPSContext (O1_Type p_EPSBearerId, + integer p_ParamLength, + template (value) EPSParameters p_EPSParams) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + epsBearerId := p_EPSBearerId, + lenOfContext := int2oct(p_ParamLength + 2, 2), // @sic R5s190987, R5s210302 sic@ operation code line + id1 + operationCode := '01'B, + spare := tsc_Spare1, + eBit := '1'B, + numOfParams := '0001'B, + epsParamsList := {p_EPSParams} + }; + + template (value) MappedEPSContext cs_OneMappedEPSContextTwoParams (O1_Type p_EPSBearerId, + integer p_ParamLength, + template (value) EPSParameters p_EPSParam1, + template (value) EPSParameters p_EPSParam2) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT) */ + epsBearerId := p_EPSBearerId, + lenOfContext := int2oct(p_ParamLength + 3, 2), // operation code line + id1 + id2 + operationCode := '01'B, + spare := tsc_Spare1, + eBit := '1'B, + numOfParams := '0010'B, + epsParamsList := {p_EPSParam1, p_EPSParam2} + }; + + template (value) MappedEPSBearerContexts cs_OneMappedEPSBearerContextList (template (value) MappedEPSContext p_MappedEPSContext) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 9.11.4.8 */ + iei := '75'O, + iel := int2oct(oct2int(valueof(p_MappedEPSContext.lenOfContext)) + 3, 2), // @sic R5s190987 sic@ bearer id + 2 octets of len + mappedContextList := {p_MappedEPSContext} + }; + + template (value) MappedEPSBearerContexts cs_TwoMappedEPSBearerContextList (template (value) MappedEPSContext p_MappedEPSContext1, + template (value) MappedEPSContext p_MappedEPSContext2) := + { /* @status APPROVED (IMS, NR5GC) */ + /* 24.501 cl. 9.11.4.8 */ + iei := '75'O, + iel := int2oct(oct2int(valueof(p_MappedEPSContext1.lenOfContext)) + 3 + oct2int(valueof(p_MappedEPSContext2.lenOfContext)) + 3, 2), // @sic R5s211478 sic@ + mappedContextList := {p_MappedEPSContext1, p_MappedEPSContext2} + }; + + template (value) PDU_SessionType cs_PDU_SessionType (B3_Type p_Type) := + { /* 24.501 cl. 9.11.4.11 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, + spare := tsc_Spare1, + typeValue := p_Type + }; + + template (present) PDU_SessionType cr_PDU_SessionType(template (present) B3_Type p_Type) := + { /* 24.501 cl. 9.11.4.11 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '9'H, // @sic R5s190703 sic@ + spare := tsc_Spare1, + typeValue := p_Type + }; + + template (value) SSC_Mode crs_SSC_Mode(template (omit) IEI4_Type p_IEI := omit, + B3_Type p_SSCMode) := + { // 24.501 cl. 9.11.4.16 + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + spare := tsc_Spare1, + sscModeValue := p_SSCMode + }; + + template (value) QoSParameters cs_QoSParameters (O1_Type p_Id, + Type4Length_Type p_Length, + octetstring p_Param) := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + id := p_Id, + lenOfContent := p_Length, + qosParam := p_Param + }; + + template (value) QoS_Flow cs_QoS_Flow (B6_Type p_QFI, template (value) QoSParametersList p_ParamList) := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + // @sic R5-194896 sic@ + spare2 := tsc_Spare2, + qfi := p_QFI, + operationCode := '001'B, + spare6 := tsc_Spare6, + eBit := '1'B, + numOfParameters := int2bit(lengthof(p_ParamList), 6), + parameterList := p_ParamList + }; + + template (value) PEIPS_AssistInfo cs_PEIPS_AssistInfo(template (value) IEI8_Type p_IEI, + template (value) Type4Length_Type p_IEL, + template (value)PEIPS_AssistIEList p_EIPS_AssistIEList):= + { + iei := p_IEI, + iel := p_IEL, + list:= p_EIPS_AssistIEList + }; + //================================================================== + // QoS Templates + //================================================================== + + /* + * @desc To convert the bit rate used in the QoS Flow parameters GFBR and MFBR + * according to 24.501 table 9.11.4.12.1 + * @param p_Value + * @param p_Multiplier + * @return O3_Type + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_FlowParameterBitRate(integer p_Value, + integer p_Multiplier) return O3_Type + { + var integer v_BitValue; + var integer v_Unit; + var integer i := 256; + + while ((p_Value mod i) != 0) { + i := i / 4; + } + v_BitValue := p_Value / i; + v_Unit := (f_FloorLog2(i) / 2) + 1; + + v_Unit := v_Unit + (5* (p_Multiplier -1)); + + return int2oct(v_Unit, 1) & int2oct(v_BitValue, 2); + } + + /* + * @desc Returns default Qos Flow according to 38.508-1 cl.4.8.2.3 + * @param p_FlowNumber + * @param p_InterworkWithEPS (default value: false) + * @param p_EPSBearerId (default value: '0'H - invalid value, but will not be used if not InterworkingWithEPS) + * @return template (value) QoS_Flow + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_BuildDefaultQosFlow (charstring p_FlowNumber, + boolean p_InterworkWithEPS := false, + O1_Type p_EPSBearerId := '00'O) return template (value) QoS_Flow + { + var template (value) QoSParametersList v_QoSParametersList; + var B6_Type v_QFI; + + select (p_FlowNumber) { + case ("1") { + v_QFI := '000001'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '09'O)}; + if (p_InterworkWithEPS) { + v_QoSParametersList[1] := cs_QoSParameters(tsc_QoSFlowParameter_EPSBearerId, '01'O, p_EPSBearerId); // @sic R5-204400 sic@ + } + } + case ("2") { + v_QFI := '000010'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '05'O)}; + if (p_InterworkWithEPS) { + v_QoSParametersList[1] := cs_QoSParameters(tsc_QoSFlowParameter_EPSBearerId, '01'O, p_EPSBearerId); // @sic R5-214436 sic@ + } + } + case ("2a") { + v_QFI := '000100'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '05'O)}; + } + case ("3") { + v_QFI := '000101'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '05'O)}; + } + case ("4") { + v_QFI := '000110'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '05'O)}; + } + case ("5") { + v_QFI := '000111'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '01'O), + cs_QoSParameters(tsc_QoSFlowParameter_GFBR_UL, '03'O, fl_FlowParameterBitRate(128, 1)), // @sic R5s210330, R5s210462 sic@ + cs_QoSParameters(tsc_QoSFlowParameter_GFBR_DL, '03'O, fl_FlowParameterBitRate(128, 1)), + cs_QoSParameters(tsc_QoSFlowParameter_MFBR_UL, '03'O, fl_FlowParameterBitRate(320, 1)), + cs_QoSParameters(tsc_QoSFlowParameter_MFBR_DL, '03'O, fl_FlowParameterBitRate(320, 1))}; // @sic R5s210330 sic@ + if (p_InterworkWithEPS) { + v_QoSParametersList[5] := cs_QoSParameters(tsc_QoSFlowParameter_EPSBearerId, '01'O, p_EPSBearerId); // @sic R5s210330, R5-213155 sic@ + } + } + case ("6") { + v_QFI := '001000'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '02'O), + cs_QoSParameters(tsc_QoSFlowParameter_GFBR_UL, '03'O, fl_FlowParameterBitRate(72, 1)), + cs_QoSParameters(tsc_QoSFlowParameter_GFBR_DL, '03'O, fl_FlowParameterBitRate(72, 1)), + cs_QoSParameters(tsc_QoSFlowParameter_MFBR_UL, '03'O, fl_FlowParameterBitRate(816, 1)), + cs_QoSParameters(tsc_QoSFlowParameter_MFBR_DL, '03'O, fl_FlowParameterBitRate(816, 1))}; + if (p_InterworkWithEPS) { + v_QoSParametersList[5] := cs_QoSParameters(tsc_QoSFlowParameter_EPSBearerId, '01'O, p_EPSBearerId); // @sic R5-213155 sic@ + } + } + case ("7") { // @sic R5-211499 sic@ + v_QFI := '001001'B; + v_QoSParametersList := { cs_QoSParameters(tsc_QoSFlowParameter_5QI, '01'O, '52'O)}; // 5QI 82 + } + } + return cs_QoS_Flow (v_QFI, v_QoSParametersList); + } + + template (value) QoS_Flow cs_QoS_Flow1(boolean p_InterworkWithEPS := false, + O1_Type p_EPSBearerId := '00'O) := f_BuildDefaultQosFlow("1", p_InterworkWithEPS, p_EPSBearerId); /* @sic R5-204400 sic@ @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) QoS_Flow cs_QoS_Flow2(boolean p_InterworkWithEPS := false, + O1_Type p_EPSBearerId := '00'O) := f_BuildDefaultQosFlow("2", p_InterworkWithEPS, p_EPSBearerId); /* @sic R5-204400 sic@ @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + template (value) QoS_Flow cs_QoS_Flow2a := f_BuildDefaultQosFlow("2a"); /* @sic R5s201094 sic@ @status APPROVED (NR5GC) */ + template (value) QoS_Flow cs_QoS_Flow3 := f_BuildDefaultQosFlow("3"); /* @sic R5s201094 sic@ @status APPROVED (NR5GC) */ + template (value) QoS_Flow cs_QoS_Flow4 := f_BuildDefaultQosFlow("4"); /* @sic R5s201094 sic@ @status APPROVED (NR5GC) */ + template (value) QoS_Flow cs_QoS_Flow5(boolean p_InterworkWithEPS := true, O1_Type p_EPSBearerId := '00'O) := f_BuildDefaultQosFlow("5", p_InterworkWithEPS, p_EPSBearerId); /* @status APPROVED (IMS, NR5GC) */ + template (value) QoS_Flow cs_QoS_Flow6(boolean p_InterworkWithEPS := true, O1_Type p_EPSBearerId := '00'O) := f_BuildDefaultQosFlow("6", p_InterworkWithEPS, p_EPSBearerId); /* @status APPROVED (IMS, NR5GC) */ + + /* + * @desc Returns length of QoS Flow list + * @param p_FlowList + * @return Type6Length_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_NR5GC_QoSFlowsLength (template (value) QoS_FlowList p_FlowList) return Type6Length_Type + { + var integer i; + var integer j; + var integer v_Length:=0; + + for (j:= 0; j < lengthof(p_FlowList); j:= j+1) { + if (isvalue(p_FlowList[j].parameterList)) { // @sic R5s210671 sic@ + for (i:= 0; i < lengthof(p_FlowList[j].parameterList); i:= i+1) { + v_Length := v_Length + oct2int(valueof(p_FlowList[j].parameterList[i].lenOfContent)); + v_Length := v_Length + 2; // Parameter identifier & length @sic R5s190856 sic@ + } + } + v_Length := v_Length + 3; // QFI + Operation Code + Num of Parameters + } + return int2oct(v_Length, 2); + } + + template (value) QoSFlowDescr cs_QoSFlowDescr (template (value) QoS_FlowList p_QoS_Flows) := + { /* 24.501 cl. 9.11.4.12 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '79'O, + iel := fl_NR5GC_QoSFlowsLength(p_QoS_Flows), // @sic R5s190109, R5-194896 sic@ + listofFlows := p_QoS_Flows + }; + + template (value) QoSFlowDescr cs_QoSFlowDescr1 := cs_QoSFlowDescr ({cs_QoS_Flow1}); /* @status */ + template (value) QoSFlowDescr cs_QoSFlowDescr2 := cs_QoSFlowDescr ({cs_QoS_Flow2}); /* @status */ + + template (value) NG_PacketFilterList cs_PacketFilterList_1MatchAll := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + new := { + { + spare := tsc_Spare2, + direction := '11'B, // bi-directional + packetFilterId := '0001'B, // @sic R5-216158 sic@ + len := '01'O, + contents := '01'O // match-all + } + } + }; + + template (value) NG_PacketFilterList cs_PacketFilterList_MediaUDP (B4_Type p_Id, integer p_Port) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + new := { + cs_NG_PacketFilter_Type2 ('11'B, // bi-directional + p_Id, + fl_BuildRemotePortRange(p_Port) & fl_BuildProtocolIdNextHeaderUDP()) // @sic R5s220046 sic@ // Protocol id / Next Header UDP + } + }; + + template (value) NG_PacketFilter_Type2 cs_NG_PacketFilter_Type2 (B2_Type p_Dir, + B4_Type p_Id, + octetstring p_Contents) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + spare := tsc_Spare2, + direction := p_Dir, + packetFilterId := p_Id, + len := int2oct(lengthof(p_Contents), 1), + contents := p_Contents + }; + + /* + * @desc Build a Remote Port Range Packet Filter according to 38.508-1 cl. 4.8.2 + * @param p_Port + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_BuildRemotePortRange (integer p_Port) return octetstring + { + var octetstring v_PacketFilter; + + v_PacketFilter := '51'O; // id = remote port range + v_PacketFilter := v_PacketFilter & int2oct(p_Port, 2) & int2oct(p_Port+1, 2); // @sic R5s220046 sic@ + return v_PacketFilter; + } + + /* + * @desc Build a Protocol Id Next Header Packet Filter according to 38.508-1 cl. 4.8.2 + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_BuildProtocolIdNextHeaderUDP () return octetstring + { + var octetstring v_PacketFilter; + + v_PacketFilter := '30'O; // id = remote port range + v_PacketFilter := v_PacketFilter & int2oct(17, 1); + return v_PacketFilter; + } + + + template (value) QoS_Rule cs_QoS_Rule (O1_Type p_Id, + B6_Type p_QFI, + O1_Type p_Precedence, + B3_Type p_OperationCode := '001'B, + template (value) NG_PacketFilterList p_FilterList := cs_PacketFilterList_1MatchAll, + B1_Type p_DQR := '1'B) := + { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + identifier := p_Id, + iel := fl_NR5GC_QoSRuleLength(p_FilterList), // @sic R5s210074 sic@ + ruleOperationCode := p_OperationCode, // @sic R5s190987 sic@ + dqrBit := p_DQR, + numOfPacketFilters := '0001'B, + packetFilterList := p_FilterList, + precedence := p_Precedence, + spare := tsc_Spare1, + segregation := tsc_Spare1, + flowIdentifier := p_QFI + }; + + /* + * @desc To build the default QoS Rules as defined in 38.508-1 cl. 4.8.2.1 + * Builds rules #1 to #7 + * If you need a (non-default) combination, please use f_BuildDefaultQoSRule and/or f_BuildQoSRuleRemoteAccess + * For #7, please use identifier 7_Voice or 7_VoiceVideo + * @param p_RuleNum + * @param p_IEI (default value: omit) + * @return template (value) QoS_Rules + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_BuildDefaultQoSRules (charstring p_RuleNum, + template (omit) IEI8_Type p_IEI := omit) return template (value) QoS_Rules + { + var template (value) QoS_Rules v_QoS_Rules; + var template (value) QoS_Rule v_VoiceQoS := cs_QoS_Rule('03'O, int2bit(7, 6), '01'O, -, cs_PacketFilterList_MediaUDP('0110'B, tsc_IMS_MediaPort_M1), '0'B); // @sic R5-210627, R5s220046 sic@; + + if (p_RuleNum == "7_Voice") { + v_QoS_Rules := cs_QoS_Rules ({v_VoiceQoS}, p_IEI) // @sic R5-213440 sic@ + } else if (p_RuleNum == "7_Video") { + v_QoS_Rules := cs_QoS_Rules ({cs_QoS_Rule('04'O, int2bit(8, 6), '02'O, -, cs_PacketFilterList_MediaUDP('0111'B, tsc_IMS_MediaPort_M2), '0'B)}, p_IEI) // @sic R5-217796, R5s220046, R5s220336 sic@ + } else if (p_RuleNum == "7_VoiceVideo") { + v_QoS_Rules := cs_QoS_Rules ({v_VoiceQoS, cs_QoS_Rule('04'O, int2bit(8, 6), '02'O, -, cs_PacketFilterList_MediaUDP('0111'B, tsc_IMS_MediaPort_M2), '0'B)}, p_IEI) // @sic R5-210627, R5-216161, R5s220046 sic@ + } else { + v_QoS_Rules := cs_QoS_Rules ({f_BuildDefaultQoSRule(p_RuleNum)}, p_IEI); + } + return v_QoS_Rules; + } + + /* + * @desc To build a single default QoS Rule as defined in 38.508-1 cl. 4.8.2.1 + * Builds rules #1 to #6 + * @param p_RuleNum + * @return template (value) QoS_Rule + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_BuildDefaultQoSRule (charstring p_RuleNum) return template (value) QoS_Rule + { + var template (value) QoS_Rule v_QoS_Rule; + + select (p_RuleNum) { + case ("1") { + v_QoS_Rule := cs_QoS_Rule('01'O, int2bit(1, 6), 'FF'O); // @sic R5-202585 sic@ + } + case ("2") { + v_QoS_Rule := cs_QoS_Rule('02'O, int2bit(2, 6), 'FF'O); // @sic R5-202585 sic@ + } + case ("3", "4", "4a", "5", "6") { + v_QoS_Rule := f_BuildQoSRuleRemoteAccess (p_RuleNum); + } + case ("8") { + v_QoS_Rule := cs_QoS_Rule('07'O, int2bit(9, 6), 'FF'O); // @sic R5-211499 sic@ + } + } + return v_QoS_Rule; + } + + /* + * @desc Returns length of QoS Rule for a given input + * @param p_FilterList + * @return Type6Length_Type + * @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_NR5GC_QoSRuleLength (template (value) NG_PacketFilterList p_FilterList) return Type6Length_Type + { + var integer i; + var integer v_Length:=0; + + if (ischosen(p_FilterList.modify)) { + v_Length := 1; + } + if (ischosen(p_FilterList.new)) { + for (i:= 0; i < lengthof(p_FilterList.new); i:= i+1) { + v_Length := v_Length + oct2int(valueof(p_FilterList.new[i].len)); + v_Length := v_Length + 2; // 1 octet of header + length + } + } + v_Length := v_Length + 3; // 1 octet of header + precedence + 1 octet of footer + return int2oct(v_Length, 2); + } + + /* + * @desc Returns length of QoS Rules List + * @param p_Rules + * @return Type6Length_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function fl_NR5GC_QosRulesLength (template (value) QoS_RuleList p_Rules) return Type6Length_Type + { + var integer i; + var integer v_Length:=0; + + for (i:= 0; i < lengthof(p_Rules); i:= i+1) { + v_Length := v_Length + oct2int (valueof(p_Rules[i].iel)) + 3; // @sic R5s190109 sic@ + } + return int2oct(v_Length, 2); + } + + template (value) QoS_Rules cs_QoS_Rules (template (value) QoS_RuleList p_Rules, + template (omit) IEI8_Type p_IEI := omit) := // @sic R5s190673 sic@ + { // 24.501 cl. 9.11.4.13 + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := fl_NR5GC_QosRulesLength(p_Rules), // @sic R5s190109 sic@ + listofQoSRules := p_Rules + }; + + template (value) Session_AMBR cs_Session_AMBR(template (omit) Type4Length_Type p_Length, + O1_Type p_UnitDL, + O2_Type p_DL, + O1_Type p_UnitUL, + O2_Type p_UL) := + { // 24.501 cl. 9.11.4.14 + /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := omit, /* present in case of TLV; omit in case of LV */ + iel := p_Length, /* present in case of LV or TLV; omit in case of V */ + unitDL := p_UnitDL, + downlink := p_DL, + unitUL := p_UnitUL, + uplink := p_UL + }; + + template (value) IMEISV_Request cds_NG_IMEISV_Request (B3_Type p_Value := tsc_IMEISV_Requested) modifies cs_IMEISV_Request_WithIEI := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := 'E'H + }; + + template (value) AllowedNSSAI cs_AllowedNSSAI (template (value) NAS_PlmnId p_PLMN, + B2_Type p_AccessType) := + { /* @status APPROVED (NR5GC) */ + allowedNSSAI := p_PLMN, + spareBits := tsc_Spare6, + accessType := p_AccessType + }; + + template (value) NG_NAS_DL_Message_Type cs_NSSAI_DELETE_REQUEST (B8_Type p_DeleteNSSAI_Type, + template (omit) NAS_PlmnId p_Configured, + template (omit) AllowedNSSAI p_Allowed) := + { /* @status APPROVED (NR5GC) */ + nssai_Delete_Request:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_NSSAI_DeleteReq, /* M V 1 */ + deleteNSSAI_Type := p_DeleteNSSAI_Type, + configuredNSSAI := p_Configured, /* only present if deleteNSSAI_Type = DeleteConfigured */ + allowedNSSAI := p_Allowed /* only present if deleteNSSAI_Type = DeleteAllowed */ + } + }; + + template (present) NG_NAS_UL_Message_Type cr_NSSAI_DELETE_RESPONSE := + { /* @status APPROVED (NR5GC) */ + nssai_Delete_Response:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_NSSAI_DeleteResp /* M V 1 */ + } + }; + + template (value) NG_NAS_DL_Message_Type cs_SET_UAI_REQUEST (B2_Type p_PreferredRRCState) := + { /* @status APPROVED (NR5GC) */ + set_UAI_Request:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_SetUAIReq, /* M V 1 */ + spare := tsc_Spare6, + preferredRRCState := p_PreferredRRCState + } + }; + + template (present) NG_NAS_UL_Message_Type cr_SET_UAI_RESPONSE := + { /* @status APPROVED (NR5GC) */ + set_UAI_Response:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_SetUAIResp /* M V 1 */ + } + }; + +template (present) NG_NAS_UL_Message_Type cr_NG_GMM_STATUS (template (present) GMM_GSM_Cause p_Cause) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.29 */ + gmm_Status := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, /* cl. 9.3 M V 1/2 */ + messageType := tsc_MT_NG_GMM_Status, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause /* cl. 9.11.3.2 M V 1 */ + } + }; + + template (value) NSSAI_LV cs_NSSAI_LV(Type4Length_Type p_Length, + template (value) S_NSSAI_TypeList p_S_NSSAI):= + { /* 24.501 cl. 9.11.3.37 */ + iel := p_Length, + s_nssai := p_S_NSSAI + }; + + /* + * @desc Returns length of NSAG info element + * @param p_NSAG + * @param p_TaiList + * @return Type4Length_Type + */ + function fl_NR5GC_NSAGLength (template (value) NSSAI_LV p_NSAG, template(omit) NG_TrackingAreaIdList_LV p_TaiList) return Type4Length_Type + { + var integer v_Length := oct2int(valueof(p_NSAG.iel)); + + v_Length := v_Length + 3; // id + length of S-NSSAI list + priority + + if (isvalue(p_TaiList)) { + v_Length := v_Length + oct2int(valueof(p_TaiList.iel)) + 1; // + length of TAIList + } + return int2oct(v_Length, 1); + } + + template (value) NSAG cs_NSAG_InfoElement(O1_Type p_Id, + template(value) NSSAI_LV p_NSAG, + O1_Type p_Priority, + template(omit) NG_TrackingAreaIdList_LV p_TaiList) := + { // 24.501 cl. 9.11.3.87, Figure 9.11.3.87.2: NSAG + iel := fl_NR5GC_NSAGLength(p_NSAG, p_TaiList), + id := p_Id, + sNSSAIList := p_NSAG, + priority := p_Priority, + taiList := p_TaiList + }; + + template (value) NSAG_Info cs_NSAG_2Elements(template(value) NSAG p_NSAG1, + template(value) NSAG p_NSAG2) := + { // 24.501 cl. 9.11.3.87, Figure 9.11.3.87.1: NSAG information information element + iei := '7C'O, + iel := int2oct(oct2int(valueof(p_NSAG1.iel)) + oct2int(valueof(p_NSAG2.iel)) + 2, 2), // 1 + 1 + (p_NSAG1.iel) + (p_NSAG2.iel) + nsagList := {p_NSAG1, p_NSAG2} + }; + + /* + * @desc Build an NID according to 24.502 cl. 9.2.7 + * @return template (value) NID + */ + function fl_BuildNIDTemplate (integer p_NID, integer p_AssignmentMode := 1) return template (value) NID + { + var hexstring v_Hex := int2hex(p_NID, 10); + var hexstring v_Digits2_9 := '00000000'H; + var template (value) NID v_NIDTemplate := cs_NIDBlank (int2bit(p_AssignmentMode, 4)); + + // arrange digits 2 to 9 in the order specified in 24.502 cl. 9.2.7 + v_Digits2_9 := v_Hex[2] & v_Hex[1] & + v_Hex[4] & v_Hex[3] & + v_Hex[6] & v_Hex[5] & + v_Hex[8] & v_Hex[7]; + + v_NIDTemplate.digit1 := v_Hex[0]; + v_NIDTemplate.digits2_9 := v_Digits2_9; + v_NIDTemplate.digit10 := v_Hex[9]; + + return v_NIDTemplate; + } + + template (value) NID cs_NIDBlank (B4_Type p_AssignmentMode) := + { /* 24.301 cl. 9.11.3.79 */ + iei := '32'O, /* present in case of TV; omit in case of V */ + iel := '06'O, /* present in case of LV or TLV; omit in case of V */ + digit1 := '0'H, + assignmentMode := p_AssignmentMode, + digits2_9 := '00000000'H, + spare := '0000'B, + digit10 := '0'H + }; + + template (value) ExtdDRXParams cs_NG_NAS_EDRXParams (B4_Type p_PTW, + B4_Type p_EDRXVal, + template (omit) B8_Type p_ExtdPTW := omit) := + { /* @status */ + iei := '6E'O, + iel := '01'O, // length + pagingTimeWindow := p_PTW, + eDRXValue := p_EDRXVal, + extdPTW := p_ExtdPTW + }; + + +} + diff --git a/ttcn/Lib3GPP/NG_NAS/NG_NAS_TypeDefs.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_NAS_TypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..ab9b629f40e252df16c09d7b2ef57e50048e29ad --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_NAS_TypeDefs.ttcn @@ -0,0 +1,2223 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-07-21 18:08:50 +0200 (Fri, 21 Jul 2023) $ +// $Rev: 36506 $ +/******************************************************************************/ + +module NG_NAS_TypeDefs { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + type enumerated NAS_5GC_AKA_Type {AKA_5G, AKAP_EAP}; + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: IEs + //---------------------------------------------------------------------------- + // General Info Elements (24.501 cl. 9) + //---------------------------------------------------------------------------- + + type B8_Type ExtdProtocolDiscriminator; /* 24.501 cl. 9.2 */ + + + // Note: This IE is not needed when SECURITY PROTECTED NAS MESSAGE is + // handled by the NAS emulation An alternative approach would be to + // implement NAS_Message as a union of all NAS messages except + // SECURITY PROTECTED NAS MESSAGE and SERVICE REQUEST - but this would + // have impact on codec implementation and may reduce readability */ + type octetstring NG_NAS_Message; /* 24.501 cl. 9.9 */ + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: PDUs + //---------------------------------------------------------------------------- + // NG mobility management messages (24.501 cl. 8.2) + //---------------------------------------------------------------------------- + + type record NG_AUTHENTICATION_REQUEST { /* 24.501 cl. 8.2.1 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + NAS_KeySetIdentifier ngNasKeySetId, /* cl. 9.11.3.29 M V 1/2 */ + ABBA abba, /* cl. 9.11.3.10 M LV 3-n Dec18 */ + RAND rand optional, /* cl. 9.11.3.16 O TV 17 IEI=21 */ + AUTN autn optional, /* cl. 9.11.3.15 O TLV 18 IEI=20 */ + EAP_Message eapMessage optional /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_AUTHENTICATION_RESPONSE { /* 24.501 cl. 8.2.2 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + AuthenticationResponseParameter authResponseParam optional, /* cl. 9.11.3.17 O TLV 18 IEI=2D */ + EAP_Message eapMessage optional /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_AUTHENTICATION_RESULT { /* 24.501 cl. 8.2.3 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + NAS_KeySetIdentifier ngNasKeySetId, /* cl. 9.11.3.32 M V 1/2 */ + EAP_Message eapMessage, /* cl. 9.11.2.2 M LV-E 6-1502 */ + ABBA abba optional /* cl. 9.11.3.10 O TLV 3-n IEI=38 Dec18 */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_AUTHENTICATION_FAILURE { /* 24.501 cl. 8.2.4 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gmmCause, /* cl. 9.11.3.2 M V 1 */ + AuthenticationFailureParameter authFailureParam optional /* cl. 9.11.3.14 O TLV 16 IEI=30 */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_AUTHENTICATION_REJECT { /* 24.501 cl. 8.2.5 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + EAP_Message eapMessage optional /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 Dec18 */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_REGISTRATION_REQUEST { /* 24.501 cl. 8.2.6 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NAS_KeySetIdentifier ngNasKSI, /* cl. 9.11.3.32 M V 1/2 */ + RegistrationType registrationType, /* cl. 9.11.3.7 M V 1/2 Dec18 */ + NG_MobileIdentity ngMobileId, /* cl. 9.11.3.4 M LV-E 6-n */ + NAS_KeySetIdentifier nonCurrentNativeKSI optional, /* cl. 9.11.3.32 O TV 1 IEI=C- */ + NG_GMM_Cap gmmCapability optional, /* cl. 9.11.3.1 O TLV 3-15 IEI=10 */ + NG_UE_SecurityCapability ueSecurityCapability optional, /* cl. 9.11.3.54 O TLV 4-10 IEI=2E */ + NSSAI requestedNSSAI optional, /* cl. 9.11.3.37 O TLV 4-74 IEI=2F */ + NG_TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.11.3.8 O TV 7 IEI=52 */ + UE_NetworkCap s1_UE_Capability optional, /* cl. 9.11.3.48 O LV 4-15 IEI=17 */ + ULDataStatus ulDataStatus optional, /* cl. 9.11.3.57 O TLV 4-34 IEI=40 */ + PDU_SessionStatus pduSessionStatus optional, /* cl. 9.11.3.44 O TLV 4-34 IEI=50 */ + MICO_Ind micoInd optional, /* cl. 9.11.3.31 O TLV 1 IEI=B */ + UE_Status ueStatus optional, /* cl. 9.11.3.56 O TLV 3 IEI=2B */ + NG_MobileIdentity additionalGUTI optional, /* cl. 9.11.3.4 O TLV-E 14 IEI=77 */ + AllowedPDU_SessionStatus allowedPDUSessionStatus optional, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 */ + UE_UsageSetting ueUsageSetting optional, /* cl. 9.11.3.55 O TLV 3 IEI=18 */ + NG_DRXparameter reqDRXParams optional, /* cl. 9.11.3.2A O TLV 3 IEI=51 */ + EPS_MessageContainer epsMessage optional, /* cl. 9.11.3.24 O TLV-E ? IEI=70 */ + LADN_Ind ladnInd optional, /* cl. 9.11.3.29 O TLV-E 3-811 IEI=74 */ + PayloadContainerType payloadContainerType optional, /* cl. 9.11.3.40 O TV 1 IEI=8 Mar 19 @sic R5w190113 sic@*/ + PayloadContainer payload optional, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + NetworkSlicingInd networkSlicingInd optional, /* cl. 9.11.3.36 O TV 1 IEI=9 Dec18 */ + NG_UpdateType updateType optional, /* cl. 9.11.3.9A O TLV 3 IEI=53 Dec18 */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.11.3.31C O TLV 5 IEI=41 Sep20 @sic R5s201387 Baseline Moving sic@ */ + CodecList supportedCodecs optional, /* cl. 9.11.3.51A O TLV 5-n IEI=42 Sep20 @sic R5s201387 Baseline Moving sic@ */ + NASMessageContainer nasMsg optional, /* cl. 9.11.3.33 O TLV-E 4-n IEI=71 Dec18 */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.11.3.23A O TLV 4 IEI=60 Jun19 @sic R5s190543 sic@ */ + ExtdDRXParams requestedExtdDRXParams optional, /* cl. 9.11.3.26A O TLV 3-4 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + GPRS_Timer3 t3324Value optional, /* cl. 9.11.2.5 O TLV 3 IEI=6A Sep20 @sic R5s201387 Baseline Moving sic@ */ + UERadioCapId ueRadioCapabilityId optional, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + MappedNSSAI requestedMappedNSSAI optional, /* cl. 9.11.3.31B O TLV 3-42 IEI=35 Sep20 @sic R5s201387 Baseline Moving sic@ */ + AddInfoRequest additionalInfoReq optional, /* cl. 9.11.3.12A O TLV 3 IEI=48 Sep20 @sic R5s201387 Baseline Moving sic@ */ + WUSAssistInfo requestedWUSAssistanceInfo optional, /* cl. 9.11.3.71 O TLV 3-n IEI=1A Sep20 @sic R5s201387 Baseline Moving sic@ */ + N5GCInd n5GCInd optional, /* cl. 9.11.3.72 O TV 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + NB_N1ModeDRXParams requestedNB_N1DRXParams optional, /* cl. 9.11.3.73 O TLV 3 IEI=30 Sep20 @sic R5s201387 Baseline Moving sic@ */ + UE_RequestType ueRequestType optional, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_PagingRestriction pagingRestrict optional, /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NID nId optional, /* cl. 9.11.3.79 O TLV 8 IEI=32 Sep22 @sic R5s221179 Baseline Moving sic@ */ + PLMN_IdIE msPLMNwDisasterCondition optional, /* cl. 9.11.3.85 O TLV 5 IEI=16 Sep22 @sic R5s221179 Baseline Moving sic@ */ + PEIPS_AssistInfo requestedPEIPS_AssistInfo optional, /* cl. 9.11.3.80 O TLV 3-n IEI=2A Sep22 @sic R5s221179 Baseline Moving sic@ */ + GPRS_Timer3 t3512Value optional /* cl. 9.11.2.5 O TLV 3 IEI=3B Jun23 @sic R5s230533 sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_REGISTRATION_ACCEPT { /* 24.501 cl. 8.2.7 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + RegistrationResult registrationResult, /* cl. 9.11.3.6 M LV 2 */ + NG_MobileIdentity guti optional, /* cl. 9.11.3.4 O TLV 13 IEI=77 Dec18 */ + PLMN_List equivalentPlmns optional, /* cl. 9.11.3.45 O TLV 5-47 IEI=4A */ + NG_TrackingAreaIdList taiList optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=54 */ + NSSAI allowedNSSAI optional, /* cl. 9.11.3.37 O TLV 4-74 IEI=15 */ + RejectedNSSAI rejectedNSSAI optional, /* cl. 9.11.3.46 O TLV 4-42 IEI=11 */ + NSSAI configuredNSSAI optional, /* cl. 9.11.3.37 O TLV 4-146 IEI=31 */ + NG_NetworkFeatureSupport ngs_NetworkFeatureSupport optional, /* cl. 9.11.3.5 O TLV 3-5 IEI=21 */ + PDU_SessionStatus pduSessionStatus optional, /* cl. 9.11.3.44 O TLV 4-34 IEI=50 */ + PDU_SessionReactivationResult pduSessionReactivationResult optional, /* cl. 9.11.3.42 O TLV 4-34 IEI=26 */ + PDU_SessionReactivationError pduSessionReactResultError optional, /* cl. 9.11.3.43 O TLV-E 5-515 IEI=72 */ + LADN_Info ladnInfo optional, /* cl. 9.11.3.30 O TLV-E 12-1715 IEI=79 */ + MICO_Ind micoInd optional, /* cl. 9.11.3.31 O TV 1 IEI=B */ + NetworkSlicingInd networkSlicingInd optional, /* cl. 9.11.3.36 O TV 1 IEI=9 */ + ServiceAreaIdList saiList optional, /* cl. 9.11.3.49 O TLV 6-114 IEI=27 */ + GPRS_Timer3 t3512Value optional, /* cl. 9.11.2.5 O TLV 3 IEI=5E */ + GPRS_Timer2 non3GPPDeregisterValue optional, /* cl. 9.11.2.4 O TLV 3 IEI=5D */ + GPRS_Timer2 t3502Value optional, /* cl. 9.11.2.4 O TLV 3 IEI=16 */ + EmergNumList emergencyNumberList optional, /* cl. 9.11.3.23 O TLV 5-50 IEI=34 */ + ExtdEmergNumList xtdEmergencyNumberList optional, /* cl. 9.11.3.26 O TLV-E 7-65538 IEI=7A */ + SORTransparentContainer sorTransparentContainer optional, /* cl. 9.11.3.51 O TLV-E 20-2048 IEI=73 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78*/ + InclusionModeNSSAI inclusionModeNSSAI optional, /* cl. 9.11.3.37A O TV 1 IEI=A Dec18 */ + OperatorAccessCatDefinitions operatorAccessCatDefs optional, /* cl. 9.11.3.38 O TLV-E 4-n IEI=76 Dec18 */ + NG_DRXparameter negotiatedDRXParams optional, /* cl. 9.11.3.2A O TLV 3 IEI=51 Dec18 */ + Non3GPP_NW_ProvidedPolicies non3GPP_NW_ProvidedPolicies optional, /* cl. 9.11.3.58 O TV 1 IEI = D Mar 19 @sic R5w190113 sic@ */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.11.3.23A O TLV 4 IEI=60 Jun19 @sic R5s190543 sic@ */ + ExtdDRXParams negotiatedExtdDRXParams optional, /* cl. 9.11.3.26A O TLV 3 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + GPRS_Timer3 t3447Value optional, /* cl. 9.11.2.5 O TLV 3 IEI=6C Sep20 @sic R5s201387 Baseline Moving sic@ */ + GPRS_Timer2 t3448Value optional, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + GPRS_Timer3 t3324Value optional, /* cl. 9.11.2.5 O TLV 3 IEI=6A Sep20 @sic R5s201387 Baseline Moving sic@ */ + UERadioCapId ueRadioCapabilityId optional, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + UERadioCapIdDeletion ueRadioCapIdDeletionInd optional, /* cl. 9.11.3.69 O TV 1 IEI=E Sep20 @sic R5s201387 Baseline Moving sic@ */ + NSSAI pendingNSSAI optional, /* cl. 9.11.3.37 O TLV 4-146 IEI=39 Sep20 @sic R5s201387 Baseline Moving sic@ */ + NG_CipheringKeyData cipheringKeyData optional, /* cl. 9.11.3.18C O TLV-E 34-n IEI=74 Sep20 @sic R5s201387 Baseline Moving sic@ */ + CAGInfoList cagInfoList optional, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + TruncatedS_TMSIConfig truncatedS_TMSIConfig optional, /* cl. 9.11.3.70 O TLV 3 IEI=1B Sep20 @sic R5s201387 Baseline Moving sic@ */ + WUSAssistInfo negotiatedWUSAssistanceInfo optional, /* cl. 9.11.3.71 O TLV 3-n IEI=1C Sep20 @sic R5s201387 Baseline Moving sic@ */ + NB_N1ModeDRXParams negotiatedNB_N1DRXParams optional, /* cl. 9.11.3.73 O TLV 3 IEI=29 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ExtdRejectedNSSAI extdRejectedNSSAI optional, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional, /* cl. 9.11.2.10 O TLV-E 6-n IEI=7B Sep22 @sic R5s221179 Baseline Moving sic@ */ + PEIPS_AssistInfo negotiatedPEIPS_AssistInfo optional, /* cl. 9.11.3.80 O TLV 3-n IEI=33 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_AddReqResult ngAddRequestResult optional, /* cl. 9.11.3.81 O TLV 3 IEI=35 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NSSRG_Info nssrgInfo optional, /* cl. 9.11.3.82 O TLV-E 7-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RegistrationWaitRange disasterRoamingWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=14 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RegistrationWaitRange disasterReturnWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + DisasterPLMNList disasterPLMNList optional, /* cl. 9.11.3.83 O TLV 2-n IEI=13 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_RegProvService optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + ExtdCAGInfoList extdCAGInfoList optional, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NSAG_Info nsagInfo optional /* cl. 9.11.3.87 O TLV-E 10-n IEI=7C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_REGISTRATION_COMPLETE { /* 24.501 cl. 8.2.8 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SORTransparentContainer sorTransparentContainer optional /* cl. 9.11.3.51 O TLV-E 20-2048 IEI=73 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_REGISTRATION_REJECT { /* 24.501 cl. 8.2.9 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gmmCause, /* cl. 9.11.3.2 M V 1 */ + GPRS_Timer2 t3346 optional, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + GPRS_Timer2 t3502 optional, /* cl. 9.11.2.4 O TLV 3 IEI=16 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + RejectedNSSAI rejectedNSSAI optional, /* cl. 9.11.3.46 O TLV 4-42 IEI=69 Sep20 @sic R5s201387 Baseline Moving sic@ */ + CAGInfoList cagInfoList optional, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ExtdRejectedNSSAI extdRejectedNSSAI optional, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RegistrationWaitRange disasterReturnWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + ExtdCAGInfoList extdCAGInfoList optional, /* cl. 9.11.3.86 O TLV 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_UL_NAS_TRANSPORT { /* 24.501 cl. 8.2.10 + Significance: local + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + PayloadContainerType payloadContainerType, /* cl. 9.11.3.40 M V 1/2 */ + PayloadContainer payload, /* cl. 9.11.3.39 M LV-E 3-65537 */ + NG_PDU_SessionId pduSessionId optional, /* cl. 9.11.3.41 C TV 2 IEI=12 */ + NG_PDU_SessionId oldPDUSessionId optional, /* cl. 9.11.3.41 O TV 3 IEI=59 */ + NG_Request_Type requestType optional, /* cl. 9.`0.3.47 O TV 1 IEI=8 */ + S_NSSAI_Type s_NSSAI optional, /* cl. 9.11.2.8 O TLV 3-10 IEI=22 */ + DNN dnn optional, /* cl. 9.11.3.21 O TLV 3-102 IEI=25 */ + AdditionalInformation additionalInfo optional, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + MA_PDUSessionInfo maPDUSessionInfo optional, /* cl. 9.11.3.31A O TV 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + ReleaseAssistanceInd releaseAssistanceInd optional /* cl. 9.11.3.46A O TV 1 IEI=F Sep20 @sic R5s201387 Baseline Moving sic@ */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_DL_NAS_TRANSPORT { /* 24.501 cl. 8.2.11 + Significance: dual + Direction: Network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + PayloadContainerType payloadContainerType, /* cl. 9.11.3.40 M V 1/2 */ + PayloadContainer payload, /* cl. 9.11.3.39 M LV-E 3-65537 */ + NG_PDU_SessionId pduSessionId optional, /* cl. 9.11.3.41 C TV 2 IEI=12 */ + AdditionalInformation additionalInfo optional, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + GMM_GSM_Cause gmmCause optional, /* cl. 9.11.3.2 O TV 2 IEI=58 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + GPRS_Timer3 lowerBoundTimerValue optional /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_DEREGISTRATION_REQUEST_MO { /* 24.501 cl. 8.2.12 (UE originating deregister) + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NAS_KeySetIdentifier ngKSI, /* cl. 9.11.3.32 M V 1/2 */ + DeregisterType deregistrationType, /* cl. 9.11.3.20 M V 1/2 */ + NG_MobileIdentity ngMobileId /* cl. 9.11.3.4 M LV-E 6-n */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_DEREGISTRATION_ACCEPT { /* 24.501 cl. 8.2.13/15 (both directions) + Significance: dual + Direction: network to UE/ UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType /* cl. 9.7 M V 1 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_DEREGISTRATION_REQUEST_MT { /* 24.501 cl. 8.2.14 (UE terminated deregister) + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + DeregisterType deregistrationType, /* cl. 9.11.3.20 M V 1/2 */ + GMM_GSM_Cause gmmCause optional, /* cl. 9.11.3.2 O TV 2 IEI=058 */ + GPRS_Timer2 t3346 optional, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + RejectedNSSAI rejectedNSSAI optional, /* cl. 9.11.3.46 O TLV 4-42 IEI=6D Sep20 @sic R5s201387 Baseline Moving sic@ */ + CAGInfoList cagInfoList optional, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ExtdRejectedNSSAI extdRejectedNSSAI optional, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RegistrationWaitRange disasterReturnWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + ExtdCAGInfoList extdCAGInfoList optional, /* cl. 9.11.3.86 O TLV 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SERVICE_REQUEST { /* 24.501 cl. 8.2.16 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + B4_Type serviceType, /* cl. 9.11.3.50 M V 1/2 */ + NAS_KeySetIdentifier ngKSI, /* cl. 9.11.3.32 M V 1/2 */ + NG_MobileIdentity s_TMSI, /* cl. 9.11.3.4 M LV-E 8 */ + ULDataStatus ulDataStatus optional, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + PDU_SessionStatus pduSessionStatus optional, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + AllowedPDU_SessionStatus allowedPDUSessionStatus optional, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 */ + NASMessageContainer nasMsg optional, /* cl. 9.11.3.33 O TLV-E 3-n IEI=71 Dec18 */ + UE_RequestType ueRequestType optional, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_PagingRestriction pagingRestrict optional /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SERVICE_ACCEPT { /* 24.501 cl. 8.2.17 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + PDU_SessionStatus pduSessionStatus optional, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + PDU_SessionReactivationResult pduSessionReactivationResult optional, /* cl. 9.11.3.42 O TLV 4-32 IEI=26 */ + PDU_SessionReactivationError pduSessionReactResultError optional, /* cl. 9.11.3.43 O TLV-E 5-515 IEI=72 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78*/ + GPRS_Timer2 t3448 optional, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + NG_AddReqResult ngAddRequestResult optional, /* cl. 9.11.3.81 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SERVICE_REJECT { /* 24.501 cl. 8.2.18 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gmmCause, /* cl. 9.11.3.2 M V 1 */ + PDU_SessionStatus pduSessionStatus optional, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + GPRS_Timer2 t3346 optional, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + GPRS_Timer2 t3448 optional, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + CAGInfoList cagInfoList optional, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + RegistrationWaitRange disasterReturnWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + ExtdCAGInfoList extdCAGInfoList optional, /* cl. 9.11.3.86 O TLV 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + GPRS_Timer3 lowerBoundTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_Roaming optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_TrackingAreaIdList forbidTAIList_RegProvService optional /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_CONFIGURATION_UPDATE_COMMAND { /* 24.501 cl. 8.2.19 + Significance: local + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + ConfigUpdateInd configUpdateInd optional, /* cl. 9.11.3.18 M TV 1 IEI=D */ + NG_MobileIdentity guti optional, /* cl. 9.11.3.4 O TLV 13 IEI=77 Dec18 */ + NG_TrackingAreaIdList taiList optional, /* cl. 9.11.3.9 O TLV 9-114 IEI=54 */ + NSSAI allowedNSSAI optional, /* cl. 9.11.3.37 O TLV 4-74 IEI=15 */ + ServiceAreaIdList saiList optional, /* cl. 9.11.3.49 O TLV 6-114 IEI=27 */ + NetworkName fullNetworkName optional, /* cl. 9.11.3.35 O TLV 3-? IEI=43 */ + NetworkName shortNetworkName optional, /* cl. 9.11.3.35 O TLV 3-? IEI=45 */ + TimeZone localTimeZone optional, /* cl. 9.11.3.52 O TV 2 IEI=46 */ + TimeZoneAndTime localTimeZoneAndTime optional, /* cl. 9.11.3.53 O TV 8 IEI=47 */ + DaylightSavingTime daylightSavingTime optional, /* cl. 9.11.3.19 O TLV 3 IEI=49 */ + LADN_Info ladnInfo optional, /* cl. 9.11.3.30 O TLV-E 3-1715 IEI=79 */ + MICO_Ind micoInd optional, /* cl. 9.11.3.31 O TLV 1 IEI=B */ + NetworkSlicingInd networkSlicingInd optional, /* cl. 9.11.3.36 O TV 1 IEI=9 */ + NSSAI configuredNSSAI optional, /* cl. 9.11.3.37 O TLV 4-146 IEI=31 */ + RejectedNSSAI rejectedNSSAI optional, /* cl. 9.11.3.46 O TLV 4-42 IEI=11 */ + OperatorAccessCatDefinitions operatorAccessCatDefs optional, /* cl. 9.11.3.38 O TLV-E 4-n IEI=76 Dec18 */ + SMSInd smsInd optional, /* cl. 9.10.3.50A O TV 1 IEI=F Dec18 */ + GPRS_Timer3 t3447Value optional, /* cl. 9.11.2.5 O TLV 3 IEI=6C Sep20 @sic R5s201387 Baseline Moving sic@ */ + CAGInfoList cagInfoList optional, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + UERadioCapId ueRadioCapabilityId optional, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + UERadioCapIdDeletion ueRadioCapIdDeletionInd optional, /* cl. 9.11.3.69 O TV 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + RegistrationResult registrationResult optional, /* cl. 9.11.3.6 O TLV 3 IEI=44 Sep20 @sic R5s201387 Baseline Moving sic@ */ + TruncatedS_TMSIConfig truncatedS_TMSIConfig optional, /* cl. 9.11.3.70 O TLV 3 IEI=1B Sep20 @sic R5s201387 Baseline Moving sic@ */ + AddConfigInfo addConfigInfo optional, /* cl. 9.11.3.74 O TV 1 IEI=C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ExtdRejectedNSSAI extdRejectedNSSAI optional, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NSSRG_Info nssrgInfo optional, /* cl. 9.11.3.82 O TLV-E 7-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RegistrationWaitRange disasterRoamingWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=14 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RegistrationWaitRange disasterReturnWaitRange optional, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + DisasterPLMNList disasterPLMNList optional, /* cl. 9.11.3.83 O TLV 2-n IEI=13 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ExtdCAGInfoList extdCAGInfoList optional, /* cl. 9.11.3.86 O TLV 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + PEIPS_AssistInfo updatedPEIPS_AssistInfo optional, /* cl. 9.11.3.80 O TLV 3-n IEI=1F Sep22 @sic R5s221179 Baseline Moving sic@ */ + NSAG_Info nsagInfo optional, /* cl. 9.11.3.87 O TLV 10-n IEI=73 Sep22 @sic R5s221179 Baseline Moving sic@ */ + PriorityInd priorityInd optional /* cl. 9.11.3.91 O TV 1 IEI=E- Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_CONFIGURATION_UPDATE_COMPLETE { /* 24.301 cl. 8.2.20 + Significance: local + Direction: UE to Network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType /* cl. 9.7 M V 1 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_IDENTITY_REQUEST { /* 24.501 cl. 8.2.21 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + IdentityType identityType /* cl. 9.11.3.3 M V 1/2 */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_IDENTITY_RESPONSE { /* 24.501 cl. 8.2.22 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NG_MobileIdentity ngMobileId /* cl. 9.11.3.4 M LV-E 3-n */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_NOTIFICATION { /* 24.501 cl. 8.2.23 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + AccessType accessType /* cl. 9.11.3.11 M V 1/2 */ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_NOTIFICATION_RESPONSE { /* 24.501 cl. 8.2.24 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + PDU_SessionStatus pduSessionStatus optional /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SECURITY_MODE_COMMAND { /* 24.501 cl. 8.2.25 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NG_NAS_SecurityAlgorithms nasSecurityAlgorithms, /* cl. 9.11.3.34 M V 1 */ + SpareHalfOctet spareHalfOctet2, /* cl. 9.5 M V 1/2 */ + NAS_KeySetIdentifier ngNasKSI, /* cl. 9.11.3.32 M V 1/2 */ + NG_UE_SecurityCapability ueSecurityCapability, /* cl. 9.11.3.54 M LV 3-9 */ + IMEISV_Request imeisvRequest optional, /* cl. 9.11.3.28 O TV 1 IEI=E */ + NAS_SecurityAlgorithms epsSecurityAlgorithms optional, /* cl. 9.11.3.25 O TV 2 IEI=57 */ + AdditionalSecurityInfo add5GSecurityInfo optional, /* cl. 9.11.3.12 O TLV 3 IEI=36 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + ABBA abba optional, /* cl. 9.11.3.10 O TLV 4-n IEI=38 Dec18 */ + S1_UE_SecurityCapability replayedUESecurityCap optional /* cl. 9.11.3.48A O TLV 4-7 IEI=19 Dec18 @sic R5s190421 sic@*/ + + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SECURITY_MODE_COMPLETE { /* 24.501 cl. 8.2.26 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NG_MobileIdentity imeisv optional, /* cl. 9.11.3.4 O TLV-E 11 IEI=77 Dec18 */ + NASMessageContainer nasMsg optional, /* cl. 9.11.3.33 O TLV-E 4-n IEI=71 */ + NG_MobileIdentity nonIMEISV_PEI optional /* cl. 9.11.3.4 O TLV-E 7-n IEI=78 Sep20 @sic R5s201387 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SECURITY_MODE_REJECT { /* 24.501 cl. 8.2.27 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gmmCause /* cl. 9.11.3.2 M V 1 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_SECURITY_PROTECTED_NAS_MESSAGE { /* 24.501 cl. 8.2.28 + Significance: dual + Direction: both */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageAuthenticationCode messageAuthenticationCode, /* cl. 9.8 M V 4 */ + NAS_SequenceNumber sequenceNumber, /* cl. 9.10 M V 1 */ + NG_NAS_Message plainNASMessage /* cl. 9.9 M V 3-n */ + } with { + variant "FIELDORDER(msb)"; + } + + + type record NG_GMM_STATUS { /* 24.501 cl. 8.2.29 + Significance: dual + Direction: both */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gmmCause /* cl. 9.11.3.2 M V 1 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_CP_SERVICE_REQUEST { /* 24.501 cl. 8.2.30 @sic R5s201387 Baseline Moving sic@ + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NAS_KeySetIdentifier ngKSI, /* cl. 9.11.3.32 M V 1/2 */ + CP_ServiceType cpServiceType, /* cl. 9.11.3.18D M V 1/2 */ + CIoTSmallDataRxdString cIoTSmallDataContainer optional, /* cl. 9.11.3.18B O TLV 4-257 IEI=6F This is received as an encoded octetstring */ + PayloadContainerType payloadContainerType optional, /* cl. 9.11.3.40 O TV 1 IEI=8 */ + PayloadContainer payload optional, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + NG_PDU_SessionId pduSessionId optional, /* cl. 9.11.3.41 C TV 2 IEI=12 */ + PDU_SessionStatus pduSessionStatus optional, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + ReleaseAssistanceInd releaseAssistanceInd optional, /* cl. 9.11.3.46A O TV 1 IEI=F */ + ULDataStatus ulDataStatus optional, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + NASMessageContainer nasMsg optional, /* cl. 9.11.3.33 O TLV-E 3-n IEI=71 */ + AdditionalInformation additionalInfo optional, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + AllowedPDU_SessionStatus allowedPDUSessionStatus optional, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 Sep22 @sic R5s221179 Baseline Moving sic@ */ + UE_RequestType ueRequestType optional, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + NG_PagingRestriction pagingRestrict optional /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND { /* 24.501 cl. 8.2.31 @sic R5s201387 Baseline Moving sic@ + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + S_NSSAI_LV sNSSAI, /* cl. 9.11.2.8 M LV 2-5 @sic R5s221179 Baseline Moving sic@ */ + EAP_Message eapMessage /* cl. 9.11.2.2 M LV-E 6-1502 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE { /* 24.501 cl. 8.2.32 @sic R5s201387 Baseline Moving sic@ + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + S_NSSAI_LV sNSSAI, /* cl. 9.11.2.8 M LV 2-5 @sic R5s221179 Baseline Moving sic@ */ + EAP_Message eapMessage /* cl. 9.11.2.2 M LV-E 6-1502 */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT { /* 24.501 cl. 8.2.33 @sic R5s201387 Baseline Moving sic@ + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.5 M V 1/2 */ + SecurityHeaderType securityHeaderType, /* cl. 9.3 M V 1/2 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + S_NSSAI_LV sNSSAI, /* cl. 9.11.2.8 M LV 2-5 @sic R5s221179 Baseline Moving sic@ */ + EAP_Message eapMessage /* cl. 9.11.2.2 M LV-E 6-1502 */ + } with { + variant "FIELDORDER(msb)"; + } + + //---------------------------------------------------------------------------- + // NG session management messages (24.501 cl. 8.3) + //---------------------------------------------------------------------------- + + type record NG_PDU_SESSION_ESTABLISHMENT_REQUEST { /* 24.501 cl. 8.3.1 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + IntegrityProtMaxDataRate integrityProtMaxDataRate, /* cl. 9.11.4.7 M V 2 Dec18 */ + PDU_SessionType pduSessionType optional, /* cl. 9.11.4.11 O TV 1 IEI=9 */ + SSC_Mode sscMode optional, /* cl. 9.11.4.16 O TV 1 IEI=A */ + NG_UE_SM_Cap smCapability optional, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + MaxNumPacketFilters maxNumPacketFilters optional, /* c. 9.11.4.9 O TV 3 IEI=55 */ + AlwaysOnPDUSessionReq alwaysOnPDUSessionReq optional, /* c. 9.11.4.4 O TV 1 IEI=B */ + SM_PDU_DN_RequestContainer smPDU_RequestContainer optional, /* cl. 9.11.4.15 O TLV 3-255 IEI=39 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=7B */ + IPHeaderCompressionConfig ipHeaderCompressionConfig optional, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + DS_TT_EthernetPortMACAddr ds_TT_EthernetPortMACAddr optional, /* cl. 9.11.4.25 O TLV 8 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + UE_DS_TT_ResidenceTime ueDS_TT_ResidenceTime optional, /* cl. 9.11.4.26 O TLV 10 IEI=6F Sep20 @sic R5s201387 Baseline Moving sic@ */ + PortManagementInfoContainer portManagementInfoContainer optional, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=74 Sep20 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + EthernetHeaderCompressConfig ethernetHeaderCompressConfig optional, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + PDU_Address suggestedInterfaceId optional, /* cl. 9.11.4.10 O TLV 11 IEI=29 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RequestedMBSContainer requestedMBS optional, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + PDUSessionPairId pduSessionPairId optional, /* cl. 9.11.4.32 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + RSN rsn optional /* cl. 9.11.4.33 O TLV 3 IEI=35 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_ESTABLISHMENT_ACCEPT { /* 24.501 cl. 8.3.2 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + SSC_Mode sscMode, /* cl. 9.11.4.16 M V 1/2 */ + PDU_SessionType pduSessionType, /* cl. 9.11.4.11 M V 1/2 */ + QoS_Rules authorizedQoSRules, /* cl. 9.11.4.13 M LV-E 7-65538 */ + Session_AMBR sessionAMBR, /* cl. 9.11.4.14 M LV ? */ + GMM_GSM_Cause gsmCause optional, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + PDU_Address pduAddress optional, /* cl. 9.11.4.10 O TLV 7-31 IEI=29 */ + GPRS_Timer rqTimerValue optional, /* cl. 9.11.2.3 O TLV 2 IEI=56 */ + S_NSSAI_Type s_NSSAI optional, /* cl. 9.11.2.8 O TLV 3-10 IEI=22 */ + AlwaysOnPDUSessionInd alwaysOnPDUSessionInd optional, /* c. 9.11.4.3 O TV 1 IEI=8 */ + MappedEPSBearerContexts mappedEPSContexts optional, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=75 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + QoSFlowDescr authorizedQoSFlowDescr optional, /* cl. 9.11.4.12 O TLV-E 6-65538 IEI=79 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=7B */ + DNN dnn optional, /* cl. 9.11.2.1A O TLV 3-102 IEI=25 Dec18 */ + NGSM_NetworkFeatureSupport ngs_NetworkFeatureSupport optional, /* cl. 9.11.4.18 O TLV 3-15 IEI=17 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ServingPLMNRateControl servingPLMNRateControl optional, /* cl. 9.11.4.20 O TLV 4 IEI=18 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ATSSSContainer atsssContainer optional, /* cl. 9.11.4.22 O TLV-E 3-65538 IEI=77 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ControlPlaneInd controlPlaneOnlyIndication optional, /* cl. 9.11.4.23 O TV 1 IEI=C Sep20 @sic R5s201387 Baseline Moving sic@ */ + IPHeaderCompressionConfig ipHeaderCompressionConfig optional, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + EthernetHeaderCompressConfig ethernetHeaderCompressConfig optional, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ReceivedMBSContainer receivedMBS optional /* cl. 9.11.4.31 O TLV-E 9-65538 IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_ESTABLISHMENT_REJECT { /* 24.501 cl. 8.3.3 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause, /* cl. 9.11.4.2 M V 1 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + AllowedSSCMode allowedSSCMode optional, /* cl. 9.11.4.5 O TV 1 IEI=F */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + NGSM_CongestionReattemptInd ngsmCongestionReattemptInd optional, /* cl. 9.11.4.21 O TLV 3 IEI=61 Sep20 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=7B */ + ReAttemptIndicator reattemptInd optional, /* cl. 9.11.4.17 O TLV 3 IEI=1D Sep20 @sic R5s201387 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_AUTHENTICATION_COMMAND { /* 24.501 cl. 8.3.4 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + EAP_Message eapMessage, /* cl. 9.11.2.2 M LV-E 6-1502 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_AUTHENTICATION_COMPLETE { /* 24.501 cl. 8.3.5 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + EAP_Message eapMessage, /* cl. 9.11.2.2 M LV-E 6-1502 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_AUTHENTICATION_RESULT { /* 24.501 cl. 8.3.6 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_MODIFICATION_REQUEST { /* 24.501 cl. 8.3.7 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + NG_UE_SM_Cap smCapability optional, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + GMM_GSM_Cause gsmCause optional, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + MaxNumPacketFilters maxNumPacketFilters optional, /* c. 9.11.4.9 O TV 3 IEI=55 */ + AlwaysOnPDUSessionReq alwaysOnPDUSessionReq optional, /* c. 9.11.4.4 O TV 1 IEI=B */ + IntegrityProtMaxDataRate integrityProtMaxDataRate optional, /* c. 9.11.4.7 O TV 2 IEI=13 */ + QoS_Rules requestedQoSRules optional, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + QoSFlowDescr requestedQoSFlowDescr optional, /* cl. 9.11.4.12 O TLV-E 5-65538 IEI=79 */ + MappedEPSBearerContexts mappedEPSbearerContexts optional, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=75 Dec18 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional,/* cl. 9.11.4.6 O TLV-E 4-65538 IEI=7B */ + PortManagementInfoContainer portManagementInfoContainer optional, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=74 Sep20 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + IPHeaderCompressionConfig ipHeaderCompressionConfig optional, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + EthernetHeaderCompressConfig ethernetHeaderCompressConfig optional, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + RequestedMBSContainer requestedMBS optional, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_MODIFICATION_REJECT { /* 24.501 cl. 8.3.8 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause, /* cl. 9.11.4.2 M V 1 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + NGSM_CongestionReattemptInd ngsmCongestionReattemptInd optional, /* cl. 9.11.4.21 O TLV 3 IEI=61 Sep20 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + ReAttemptIndicator reattemptInd optional /* cl. 9.11.4.17 O TLV 3 IEI=1D Sep20 @sic R5s201387 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_MODIFICATION_COMMAND { /* 24.501 cl. 8.3.9 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause optional, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + Session_AMBR sessionAMBR optional, /* cl. 9.11.4.14 O TLV 8 IEI=2A */ + GPRS_Timer rqTimerValue optional, /* cl. 9.11.2.3 O TV 2 IEI=56 */ + AlwaysOnPDUSessionInd alwaysOnPDUSessionInd optional, /* c. 9.11.4.3 O TV 1 IEI=8 */ + QoS_Rules authorizedQoSRules optional, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + MappedEPSBearerContexts mappedEPSContexts optional, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=7F or 75 */ + QoSFlowDescr authorizedQoSFlowDescr optional, /* cl. 9.11.4.12 O TLV-E 6-65538 IEI=79 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=7B */ + ATSSSContainer atsssContainer optional, /* cl. 9.11.4.22 O TLV-E 3-65538 IEI=77 Sep20 @sic R5s201387 Baseline Moving sic@ */ + IPHeaderCompressionConfig ipHeaderCompressionConfig optional, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + PortManagementInfoContainer portManagementInfoContainer optional, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=74 Sep20 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + ServingPLMNRateControl servingPLMNRateControl optional, /* cl. 9.11.4.20 O TLV 4 IEI=1E Sep20 @sic R5s201387 Baseline Moving sic@ */ + EthernetHeaderCompressConfig ethernetHeaderCompressConfig optional, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + ReceivedMBSContainer receivedMBS optional, /* cl. 9.11.4.31 O TLV-E 9-65538 IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_MODIFICATION_COMPLETE { /* 24.501 cl. 8.3.10 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional,/* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0 @sic R5s190543 sic@*/ + PortManagementInfoContainer portManagementInfoContainer optional /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=74 Sep20 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT { /* 24.501 cl. 8.3.11 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause, /* cl. 9.11.4.2 M V 1 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_RELEASE_REQUEST { /* 24.501 cl. 8.3.12 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause optional, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_RELEASE_REJECT { /* 24.501 cl. 8.3.13 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause, /* cl. 9.11.4.2 M V 1 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_RELEASE_COMMAND { /* 24.501 cl. 8.3.14 + Significance: dual + Direction: network to UE */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause, /* cl. 9.11.4.2 M V 1 */ + GPRS_Timer3 backOffTimerValue optional, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + EAP_Message eapMessage optional, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + NGSM_CongestionReattemptInd ngsmCongestionReattemptInd optional, /* cl. 9.11.4.2A O TLV 3 IEI=61 Jun19 @sic R5s190543 sic@ */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + AccessType accessType optional, /* cl. 9.11.2.1A O TV 1 IEI=D Sep20 @sic R5s201387 Baseline Moving sic@ */ + ServiceLvlAAContainer serviceLvlAA optional /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_PDU_SESSION_RELEASE_COMPLETE { /* 24.501 cl. 8.3.15 + Significance: dual + Direction: UE to network */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause optional, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + ExtdProtocolConfigOptions extdProtocolConfigurationOptions optional /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } with { + variant "FIELDORDER(msb)"; + } + + type record NG_GSM_STATUS { /* 24.501 cl. 8.3.16 + Significance: dual + Direction: both */ + ExtdProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1 */ + NG_PDU_SessionId pduSessionId, /* cl. 9.4 M V 1 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.6 M V 1 */ + MessageType messageType, /* cl. 9.7 M V 1 */ + GMM_GSM_Cause gsmCause /* cl. 9.11.4.2 M V 1 */ + } with { + variant "FIELDORDER(msb)"; + } + + //---------------------------------------------------------------------------- + // NG Mobility Management (GMM) information elements (24.501 cl. 9.11.3) + //---------------------------------------------------------------------------- + + type record DNN { /* 24.501 cl. 9.11.2.1B */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring dnnValue + }; + + type record EAP_Message { /* 24.501 cl. 9.11.2.2 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring eapMsg /* RFC 5448, RFC 4187 EAP_Message_Type will be encoded in NAS Emulator */ + } with { + variant (iel) "LENGTHTO (eapMsg)" + } + + type record S_NSSAI_Type { // 24.501 cl. 9.11.2.8 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + S_NSSAI_LV lvPart /* separated definition into TLV, LV and V parts Sep22 @sic R5s221179 Baseline Moving sic@ */ + }; + + type record S_NSSAI_LV { // 24.501 cl. 9.11.2.8 + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + S_NSSAI_V vPart + }; + + type record S_NSSAI_V { // 24.501 cl. 9.11.2.8 + O1_Type sst, + O3_Type sd optional, + O1_Type mappedSST optional, + O3_Type mappedSD optional + }; + + type union ServiceLvlAAParam { + SL_AA_DeviceId id, + SL_AA_ServerAddr serverAddress, + SL_AA_Response response, + SL_AA_PayloadType payloadType, + SL_AA_Payload payload, + SL_AA_PendingInd pendingInd, + SL_AA_StatusInd statusInd // @sic R5s230533 sic@ + }; + + type record of ServiceLvlAAParam ServiceLvlAAParamList; + + type record ServiceLvlAAContainer { /* 24.501 cl. 9.11.2.10 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + ServiceLvlAAParamList contents + }; + + type record SL_AA_DeviceId { /* 24.501 cl. 9.11.2.11 */ + IEI8_Type iei ('10'O), + Type4Length_Type iel, + octetstring id + }; + + type record SL_AA_ServerAddr { /* 24.501 cl. 9.11.2.12 */ + IEI8_Type iei ('20'O), + Type4Length_Type iel, + O1_Type addrType, + octetstring addr + }; + + type record SL_AA_Response { /* 24.501 cl. 9.11.2.14 */ + IEI8_Type iei ('30'O), + Type4Length_Type iel, + B4_Type spare, + B2_Type c2ar, + B2_Type slar + + }; + + type record SL_AA_PayloadType { /* 24.501 cl. 9.11.2.15 */ + IEI8_Type iei ('40'O), + Type4Length_Type iel, + O1_Type payloadType + }; + + type record SL_AA_Payload { /* 24.501 cl. 9.11.2.13 */ + IEI8_Type iei ('70'O), + Type6Length_Type iel, + octetstring payload + }; + + type record SL_AA_PendingInd { /* 24.501 cl. 9.11.2.17 */ + IEI4_Type iei ('A'H), + B3_Type spare, + B1_Type slapi + }; + + type record SL_AA_StatusInd { /* 24.501 cl. 9.11.2.18 @sic R5s230533 sic@ */ + IEI8_Type iei, // Jun23 version specifes IEI of 'B'H, but the IEI is defined as 1 octet. + Type4Length_Type iel, + B7_Type spare, + B1_Type uas + }; + + type record NG_GMM_Cap { /* 24.501 cl. 9.11.3.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B1_Type sgc, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type ngIPHC_CP_CIoT, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type n3Data, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type ng_CP_CIoT, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type restrictEC, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type lpp, /* Dec18 */ + B1_Type hoAttach, + B1_Type s1Cap, + B1_Type racs optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type nssaa optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type ngLCS optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type v2xNPC5 optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type v2xEPC5 optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type v2x optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type ng_UP_CIoT optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type ngSRVCC optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type ngProSeL2relay optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngProSe_dc optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngProSe_dd optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type erNSSAI optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngEHC_CP_CIoT optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type multipleUP optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type wusa optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type cag optional, /* Sep20 @sic R5s201387 Baseline Moving, R5s201526 sic@ */ + B1_Type pr optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type rpr optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type piv optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ncr optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type nrPSSI optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngProSeL3rmt optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngProSeL2rmt optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngProSeL3relay optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type mpsiu optional, /* Jun23 @sic R5s230533 sic@ */ + B1_Type uas optional, /* Jun23 @sic R5s230533 sic@ */ + B1_Type nsag optional, /* Jun23 @sic R5s230533 sic@ */ + B1_Type exCAG optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ssnpnsi optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type eventNotification optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type mint optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type nssrg optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B6_Type spareBits optional, /* Jun23 @sic R5s230533 sic@ */ + B1_Type rcman optional, /* Jun23 @sic R5s230533 sic@ */ + B1_Type rcmap optional, /* Jun23 @sic R5s230533 sic@ */ + octetstring spare length (1..7) optional // @sic R5w190307, R5s230533 sic@ + }; + + type record GMM_GSM_Cause { /* 24.501 cl. 9.11.3.2, 9.11.4.2 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_CauseValue_Type causeValue + } with { + variant "FIELDORDER(msb),FORCEOMIT(iei)" + }; + + type record NGSM_CongestionReattemptInd { /* 24.501 cl. 9.11.3.2, 9.11.4.21 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spareBits, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type catbo, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type abo + } with { + variant "FIELDORDER(msb),FORCEOMIT(iei)" + }; + + type DRXParamCommon NG_DRXparameter; // 24.501 cl. 9.11.3.2A + + type DRXParamCommon NB_N1ModeDRXParams; // 24.501 cl. 9.11.3.73 + + type record NG_MobileIdentity { // 24.501 cl. 9.11.3.4 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + BcdDigit_Bit idDigit1, // 1st identitity digit + B1_Type oddEvenInd, // Odd/even indicator or Spare + NAS_IdType typeOfId, // Type of identity + octetstring otherDigits length (1..infinity) optional // Other identity digits, could be any length @sic R5-192389, @sic R5w190307 sic@ sic@ + } with { + variant "FIELDORDER(msb),FORCEOMIT(iei)" + }; + + type record NG_NetworkFeatureSupport { /* 24.501 cl 9.11.3.5 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B1_Type mpsi, + B1_Type iwk_N26, + B2_Type emf, + B2_Type emc, + B1_Type imsVoPS_n3GPP, + B1_Type imsVoPS_3GPP, + B1_Type ng_UP_CIoT optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B1_Type ngIPHC_CP_CIoT optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B1_Type n3Data optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B1_Type ng_CP_CIoT optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B2_Type restrictEC optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B1_Type mcsi optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type emcn3 optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type spareBit optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type pr optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type rpr optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type piv optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ncr optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ngEHC_CP_CIoT optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B1_Type atsInd optional, /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + B1_Type ngLCS optional /* Sep20 @sic R5s201387, R5s221179 Baseline Moving sic@ */ + }; + + type record RegistrationResult { /* 24.501 cl. 9.11.3.6 */ + // IEI is always skipped + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B1_Type spare, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type disasterRoamingResult, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type emergencyRegistered, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type nssaaPerformed, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type smsAllowed, + B3_Type resultValue + }; + + type record RegistrationType { /* 24.501 cl. 9.11.3.7 */ + // IEI is always skipped + B1_Type fOR, + B3_Type registrationType + }with{ variant "FIELDLENGTH(4), FIELDORDER(msb)"}; + + type record NG_TrackingAreaId { /* 24.501 cl. 9.11.3.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + O3_Type tac /* NG TAC 3 octets */ + }; + + type record length (1..16) of O3_Type NG_NAS_TacList; + + type record NG_PartialTai { + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + O3_Type tac + }; + + type record NG_Type0Element { + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NG_NAS_TacList tacList + }; + + type record NG_Type1Element { + NG_PartialTai partialTac + }; + + type record length (1..16) of NG_PartialTai NG_PlmnAndTacs; + + type record NG_Type2Element { + NG_PlmnAndTacs plmnAndTacs + }; + + type record NG_Type3Element { + NAS_PlmnId plmnId /* MCC + MNC 3 digits each */ + }; + + type record length (1..16) of NG_Type0Element NG_Type0List; + type record length (1..16) of NG_Type1Element NG_Type1List; + type record length (1..16) of NG_Type2Element NG_Type2List; + + type union NG_PartialTaiType { + NG_Type0List type0List, + NG_Type1List type1List, + NG_Type2List type2List, + NG_Type3Element type3 // Type 3 elements only allowed in SAIList + }; + + type record NG_ListOfPartialTaiList { + B1_Type allowedType, + B2_Type typeOfList, + B5_Type numberOfElements, + NG_PartialTaiType partialTaiList + }; + + type NG_TrackingAreaIdList ServiceAreaIdList; // 24.501 cl. 9.11.3.45 TAIList can be Type 0, 1 or 2; SAIList can be Type 0, 1, 2 or 3 + + type record NG_TrackingAreaIdList { /* 24.501 cl. 9.11.3.9 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + NG_TrackingAreaIdList_LV lvPart /* separated definition into TLV and LV parts Sep22 @sic R5s221179 Baseline Moving sic@ */ + }; + + type record NG_TrackingAreaIdList_LV { /* 24.501 cl. 9.11.3.9 */ + Type4Length_Type iel, + record length (1..16) of NG_ListOfPartialTaiList listOfPartialTais + }; + + type record NG_UpdateType { /* 24.501 cl. 9.11.3.9A */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B2_Type spare, + B2_Type eps_PNB_CIoT, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B2_Type ng_PNB_CIoT, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type ngRAN_RCU, + B1_Type smsRequested + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record ABBA { /* 24.501 cl. 9.11.3.10 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring abbaValue + } with { + variant "FIELDORDER(msb)"; + variant (iel) "LENGTHTO (abbaValue)"; + variant "FORCEOMIT(iei)"; + } + + type record AccessType { /* 24.501 cl. 9.11.2.1A */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B2_Type spare, + B2_Type accessType + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record AdditionalSecurityInfo { /* 24.501 cl 9.11.3.12 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spareBits, /* Dec18 */ + B1_Type rinmr, /* Dec18 */ + B1_Type hdp + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record AddInfoRequest { /* 24.501 cl 9.11.3.12A */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B7_Type spareBits, + B1_Type cipherKey + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record ConfigUpdateInd { /* 24.501 cl. 9.11.3.18 */ + IEI4_Type iei, // currently only used as TV + B2_Type spare, + B1_Type red, //registration requested + B1_Type ack //acknowledgement requested + } with { + variant "FIELDORDER(msb)"; + }; + + type record CAGInfoList { /* 24.501 cl. 9.11.3.18A */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + record of CAG_Info listOfCAGInfos optional + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record CAG_Info { /* 24.501 cl. 9.11.3.18A */ + Type4Length_Type iel, + CAG_Info_V cagValue // Sep22 @sic R5s221179 Baseline Moving sic@ + } with { + variant "FIELDORDER(msb)"; + }; + + type record CAG_Info_V { /* 24.501 cl. 9.11.3.18A, 9.11.3.86 */ + NAS_PlmnId plmn, + B7_Type spareBits, + B1_Type cagOnly, + record of O4_Type listOfCAGIds optional + } with { + variant "FIELDORDER(msb)"; + }; + + type record ExtdCAGInfoList { /* 24.501 cl. 9.11.3.86 */ + IEI8_Type iei, + Type6Length_Type iel, + record of ExtdCAG_Info listOfCAGInfos optional + } with { + variant "FIELDORDER(msb)"; + }; + + type record ExtdCAG_Info { /* 24.501 cl. 9.11.3.86 */ + Type6Length_Type iel, + CAG_Info_V cagValue // Sep22 @sic R5s221179 Baseline Moving sic@ + } with { + variant "FIELDORDER(msb)"; + }; + + type record CIoTSmallDataContainer { /* 24.501 cl. 9.11.3.18B */ + /* The IEI will not be included in the encoded string */ + Type4Length_Type iel, + B3_Type dataType, + B2_Type ddx, /* set to 00 for dataType = 001 */ + B3_Type pduSessionId, /* set to 00 for dataType = 010 or 001 */ + Type4Length_Type lengthOfAddInfo optional, /* only present for dataType = 010 */ + octetstring addInfo optional, /* not present for dataType = 000 or 001 */ + octetstring dataContents + } with { + variant "FIELDORDER(msb)"; + }; + + type record CIoTSmallDataRxdString { /* 24.501 cl. 9.11.3.18B + This is used in the received NAS and will then be + decoded later into the structured type defined above*/ + IEI8_Type iei, + octetstring encodedstring + } with { + variant "FIELDORDER(msb)"; + }; + + type record NG_CipheringKeyData { /* 24.501 cl. 9.11.3.18C Must differentiate between the 5G and the EPC versions */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + record length (1..16) of NG_CipherDataSet listOfCipherKeyData optional + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record NG_CipherDataSet { /* 24.501 cl. 9.11.3.18C */ + O2_Type id, + O16_Type key, + B3_Type spareBits, + B5_Type c0Length, + octetstring c0 length (1..16), + B4_Type eSpareBits, + B4_Type eSIBLength, + O1_Type eposSIB1 optional, + O1_Type eposSIB2_O1 optional, + O1_Type eposSIB2_O2 optional, + O1_Type eposSIB2_O3 optional, + O1_Type eposSIB2_SIB5 optional, + B4_Type nSpareBits, + B4_Type nSIBLength, + O1_Type nposSIB1 optional, + O1_Type nposSIB2_O1 optional, + O1_Type nposSIB2_O2 optional, + O1_Type nposSIB2_SIB3 optional, + O1_Type nposSIB4_SIB6 optional, + O5_Type validityStartTime, + O2_Type validityDuration, + Type4Length_Type taiLength, + record length (1..16) of NG_ListOfPartialTaiList listOfPartialTais optional + } with { + variant "FIELDORDER(msb)"; + }; + + type record CP_ServiceType { /* 24.301 cl. 9.9.3.18D */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type tsc, // Type of security context: 0 = cached, 1 = mapped + NAS_KsiValue nasKeySetId + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record DeregisterType { // 24.501 cl. 9.11.3.20 + // IEI is always skipped + B1_Type switchOff, + B1_Type reRegistration, + B2_Type accessType + } with { + variant "FIELDORDER(msb)"; + }; + + type record EPS_MessageContainer { /* 24.501 cl. 9.11.3.24 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring epsMsg + } with { + variant "FIELDORDER(msb)"; + variant (iel) "LENGTHTO (epsMsg)"; + variant "FORCEOMIT(iei)"; + }; + + type record LADN_Ind { /* 24.501 cl. 9.11.3.29 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + octetstring listOfLADN_DNNValues length (1..808) optional // @sic R5w190307 sic@ + } with { + variant "FIELDORDER(msb)"; + variant (iel) "LENGTHTO (listOfLADN_DNNValues)"; + variant "FORCEOMIT(iei)"; + }; + + type record ListOfLADN { + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type dnnLength, + octetstring dnnValue, + record length (1..16) of NG_ListOfPartialTaiList listOfPartialTais // same as TAIList IE from 3rd octet + } with { + variant "FIELDORDER(msb)"; + }; + + type record LADN_Info { /* 24.501 cl. 9.11.3.30 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + record of ListOfLADN listOfLADN + } with { + variant "FIELDORDER(msb)"; + }; + + type record MICO_Ind { // 24.501 cl. 9.11.3.31 + IEI4_Type iei, + B2_Type spare, + B1_Type sprti, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type raai + } with { + variant "FIELDORDER(msb)"; + }; + + type record MA_PDUSessionInfo { // 24.501 cl. 9.11.3.31A + IEI4_Type iei, + B4_Type maPDUSession + } with { + variant "FIELDORDER(msb)"; + }; + + type record MappedNSSAI { // 24.501 cl. 9.11.3.31B + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + record length (1..8) of Mapped_S_NSSAIValue s_NSSAI + } with { + variant "FIELDORDER(msb)"; + variant (iel) "LENGTHTO (s_NSSAI)"; + variant "FORCEOMIT(iei)"; + }; + + type record Mapped_S_NSSAIValue { + Type4Length_Type iel, + O1_Type sst, + O3_Type sd optional + } with { + variant "FIELDORDER(msb)"; + }; + + type ReplayedNASMessageContainer NASMessageContainer; // Contents the same 24.501 cl.9.11.3.33 & 24.301 cl. 9.9.3.51 + + type record NG_NAS_SecurityAlgorithms { /* 24.501 cl. 9.11.3.34 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type cipheringType, /* Type of ciphering algorithm */ + B4_Type integrityType /* Type of integrity protection algorithm */ + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record NetworkSlicingInd { // 24.501 cl. 9.11.3.36 + IEI4_Type iei, // @sic R5w190307 sic@ + B2_Type spare, + B1_Type dcni, + B1_Type nssci + } with { + variant "FIELDORDER(msb)"; + }; + + type record of S_NSSAI_LV S_NSSAI_TypeList; + + type record NSSAI { // 24.501 cl. 9.11.3.37 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + NSSAI_LV lvPart /* separated definition into TLV and LV parts Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record NSSAI_LV { // 24.501 cl. 9.11.3.37 + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + S_NSSAI_TypeList s_nssai /* separated definition into TLV and LV parts Sep22 @sic R5s221179 Baseline Moving sic@ */ + } with { + variant "FIELDORDER(msb)"; + }; + + type record InclusionModeNSSAI { // 24.501 cl. 9.11.3.37A + IEI4_Type iei optional, /* present in case of TLV; omit in case of LV @sic R5w190307 sic@ */ + B2_Type spare, + B2_Type inclusionMode + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record AccessCatDefinition { + Type4Length_Type iel, + O1_Type precendence, // @sic R5w200211 sic@ + B1_Type psac, + B2_Type spare2, + B5_Type catNum, + Type4Length_Type criteriaLength, + octetstring criteria, + B3_Type spare3 optional, // @sic R5s220680 sic@ + B5_Type standardAccessCat optional // @sic R5s220680 sic@ + } with { + variant "FIELDORDER(msb)"; + }; + + type record OperatorAccessCatDefinitions { // 24.501 cl. 9.11.3.38 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + record of AccessCatDefinition definitions + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record PayloadContainer { // 24.501 cl. 9.11.3.39 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + octetstring payload + } with { + variant "FIELDORDER(msb)"; + variant (iel) "LENGTHTO (payload)"; + variant "FORCEOMIT(iei)"; + }; + + type record PayloadContainerType { /* 24.501 cl. 9.11.3.40 @sic R5w190208 sic@*/ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type container + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record NG_PDU_SessionId { /* 24.501 cl. 9.11.3.41 */ + IEI8_Type iei optional, + O1_Type sessionId + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type record PDU_SessionErrorCause { + O1_Type sessionId, + O1_Type causeValue + } with { + variant "FIELDORDER(msb)"; + }; + + type record PDU_SessionReactivationError { /* 24.501 cl. 9.11.3.43 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + record of PDU_SessionErrorCause errorCause + } with { + variant "FIELDORDER(msb)"; + variant "FORCEOMIT(iei)"; + }; + + type PDU_SessionStatus AllowedPDU_SessionStatus; /* 24.501 cl. 9.11.3.11 */ + type PDU_SessionStatus PDU_SessionReactivationResult; /* 24.501 cl. 9.11.3.38 */ + type PDU_SessionStatus ULDataStatus; /* 24.501 cl. 9.11.3.57 */ + + type record PDU_SessionStatus { /* 24.501 cl. 9.11.3.44 */ + IEI8_Type iei optional, /* present in case of TV or TLV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B8_Type psi0_7, /* PSI(0)- PSI(7) */ + B8_Type psi8_15, /* PSI(8)- PSI(15)*/ + octetstring spare length (1..30) optional // @sic R5w190307 sic@ + }; + + type record RejectedS_NSSAI { + B4_Type len, // Length of rejected S_NSSAI + B4_Type causeValue, + O1_Type sst, + O3_Type sd optional + }; + + type record RejectedNSSAI { // 24.501 cl. 9.11.3.46 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + record of RejectedS_NSSAI rejectS_NSSAI + }; + + type record NG_Request_Type { /* 24.501 cl. 9.11.3.47 */ + IEI4_Type iei, // currently only used as TV + B1_Type spare, + B3_Type requestValue + }; + + type record SMSInd { /* 24.501 cl. 9.11.3.50A */ + IEI4_Type iei, // currently only used as TV + B3_Type spare, + B1_Type sai + }; + + type record SOR_Header { + B3_Type spare, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type ap, // If data type = 1, value is always 0 (spare) Sep22 @sic R5s221179 Baseline Moving sic@ + B1_Type ack, // If data type = 1, value is always 0 (spare) + B1_Type listType_MSSNPNSI, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type listInd_MSSI, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + B1_Type dataType + }; + + type record SORTransparentContainer { /* 24.501 cl. 9.11.3.51 */ + IEI8_Type iei optional, // @sic R5s200739 sic@ + Type6Length_Type iel optional, // @sic R5s200739 sic@ + SOR_Header header, + O16_Type mac, + O2_Type counter optional, + octetstring data length (1..2026) optional // @sic R5w190307 sic@ + }; + + type record NG_UE_SecurityCapability { /* 24.501 cl. 9.11.3.54 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV @sic R5s190109 sic@ */ + Type4Length_Type iel, + O1_Type ngeaCap, + O1_Type ngiaCap, + O1_Type eeaCap optional, + O1_Type eiaCap optional, + octetstring spare length(1..4) optional // @sic R5w190307 sic@ + }; + + type record S1_UE_SecurityCapability { /* 24.501 cl. 9.11.3.48A */ + IEI8_Type iei optional, + UE_SecurityCapability ieValue + }; + + type record UE_UsageSetting { // 24.501 cl. 9.11.3.55 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B7_Type spare, + B1_Type ueUsageSetting + }; + + type record TruncatedS_TMSIConfig { /* 24.501 cl. 9.11.3.70 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV @sic R5s190109 sic@ */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B4_Type amfSetId, + B4_Type amfPointer + }; + + type record N5GCInd { /* 24.501 cl. 9.11.3.72 */ + IEI4_Type iei optional, + B3_Type spare, + B1_Type ngReg + }; + + type record AddConfigInfo { /* 24.501 cl. 9.11.3.74 */ + IEI4_Type iei optional, + B3_Type spare, + B1_Type scmr + }; + + type union PartialXtdRejectedNSSAI { // @sic RAN5#97 sidebar sic@ + PartialXtdRejectedNSSAIType0 type0, + PartialXtdRejectedNSSAIType1 type1 + }; + + type record of PartialXtdRejectedNSSAI PartialXtdRejectedNSSAI_List; + + type record PartialXtdRejectedNSSAIType0 { + B1_Type spare, + B3_Type typeOfList ('000'B), + B4_Type numOfElements, + record of XtdRejectedS_NSSAI rejectS_NSSAI // @sic RAN5#97 sidebar sic@ + }; + + type record PartialXtdRejectedNSSAIType1 { + B1_Type spare, + B3_Type typeOfList ('001'B), + B4_Type numOfElements, + O1_Type backOffTimerValue, + XtdRejectedS_NSSAI_List rejectS_NSSAI // @sic RAN5#97 sidebar sic@ + }; + + type record of XtdRejectedS_NSSAI XtdRejectedS_NSSAI_List; + + type record XtdRejectedS_NSSAI { + B4_Type len, // Length of rejected S_NSSAI + B4_Type causeValue, + S_NSSAI_V snssai + }; + + type record ExtdRejectedNSSAI { /* 24.501 cl. 9.11.3.75 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV @sic R5s190109 sic@ */ + Type4Length_Type iel, + PartialXtdRejectedNSSAI_List partialXtd // @sic RAN5#97 sidebar sic@ + }; + + type record NG_PagingRestriction { /* 24.501 cl. 9.11.3.77 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV @sic R5s190109 sic@ */ + Type4Length_Type iel, + B4_Type spareBits, + B4_Type typeOfRestriction, + B8_Type psi7_0 optional, + B8_Type psi15_8 optional, + octetstring spare optional + }; + + type record NID { /* 24.301 cl. 9.11.3.79 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + H1_Type digit1, + B4_Type assignmentMode, + hexstring digits2_9 length(8), + B4_Type spare, + H1_Type digit10 + }; + + type record PEIPS_AssistIE { // @sic RAN5#97 sidebar sic@ + B3_Type typeOfInfo, + B5_Type peipsValue // equals paging subgroup id if typeOfInfo = 0 + // equals UE paging probability info if typeOfInfo = 1 + }; + + type record of PEIPS_AssistIE PEIPS_AssistIEList; + + type record PEIPS_AssistInfo { /* 24.501 cl. 9.11.3.80 */ + IEI8_Type iei, + Type4Length_Type iel, + PEIPS_AssistIEList list + }; + + type record NG_AddReqResult { /* 24.501 cl. 9.11.3.81 */ + IEI8_Type iei, + Type4Length_Type iel, + B6_Type spare, + B2_Type prd + }; + + type record NSSRG_Value { /* 24.501 cl. 9.11.3.82 */ + Type4Length_Type iel, + S_NSSAI_LV sNSSAI, + record of O1_Type nssrgValues + }; + + type record of NSSRG_Value NSSRG_ValueList; + + type record NSSRG_Info { /* 24.501 cl. 9.11.3.82 */ + IEI8_Type iei, + Type6Length_Type iel, + NSSRG_ValueList valueList + }; + + type record DisasterPLMNList { /* 24.501 cl. 9.11.3.83 */ + IEI8_Type iei, + Type4Length_Type iel, + record of NAS_PlmnId plmnId optional + }; + + type record RegistrationWaitRange { /* 24.501 cl. 9.11.3.84 */ + IEI8_Type iei, + Type4Length_Type iel, + O1_Type minWaitTime, + O1_Type maxWaitTime + }; + + type record NSAG { /* 24.501 cl. 9.11.3.87 */ + Type4Length_Type iel, // @sic R5s230533 sic@ + O1_Type id, + NSSAI_LV sNSSAIList, + O1_Type priority, + NG_TrackingAreaIdList_LV taiList + }; + + type record NSAG_Info { /* 24.501 cl. 9.11.3.87 */ + IEI8_Type iei, + Type6Length_Type iel, + record of NSAG nsagList + }; + + type record PriorityInd { /* 24.501 cl. 9.11.3.91 */ + IEI4_Type iei, + B3_Type spare, + B1_Type mpsi + }; + + //---------------------------------------------------------------------------- + // NG Session Management (GSM) information elements (24.501 cl. 9.11.4) + //---------------------------------------------------------------------------- + + type record NG_UE_SM_Cap { // 24.501 cl. 9.11.4.1 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B1_Type tpmic, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B4_Type atsssST, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type ept_S1, /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + B1_Type mh6_PDU, + B1_Type rQoS, + B7_Type spareBits optional, // @sic RAN5#97 sidebar sic@ + B1_Type apmqf optional, /* Sep22 @sic R5s221179 Baseline Moving sic@ */ + octetstring spare length (1..11) optional // @sic R5w190307 sic@ + }; + + type record AlwaysOnPDUSessionInd { // 24.501 cl. 9.11.4.3 + IEI4_Type iei optional, + B3_Type spare, + B1_Type apsi + }; + + type AlwaysOnPDUSessionInd AlwaysOnPDUSessionReq; // 24.501 cl. 9.11.4.4 defintions the same + + type record AllowedSSCMode { // 24.501 cl. 9.11.4.5 + IEI4_Type iei optional, + B1_Type spare, + B1_Type ssc3, + B1_Type ssc2, + B1_Type ssc1 + }; + + type record IntegrityProtMaxDataRate { // 24.501 cl. 9.11.4.7 + IEI8_Type iei optional, + O1_Type maxDataRateUL, + O1_Type maxDataRateDL + }; + + type record EPSParameters { + O1_Type id, + Type4Length_Type lenOfContent optional, // this field can included in the epsParam field itself @sic R5s210302 sic@ + octetstring epsParam + }; + + type record MappedEPSContext { + O1_Type epsBearerId, + Type6Length_Type lenOfContext, + B2_Type operationCode, + B1_Type spare, + B1_Type eBit, + B4_Type numOfParams, + record of EPSParameters epsParamsList + }; + + type record MappedEPSBearerContexts { /* 24.501 cl. 9.11.4.8 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + record of MappedEPSContext mappedContextList + }; + + type record MaxNumPacketFilters { /* 24.501 cl. 9.11.4.9 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + B11_Type numOfFilters, + B5_Type spareBits + }; + + type record PDU_Address { /* 24.501 cl. 9.11.4.10 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B4_Type spare, + B1_Type si16LLA, // @sic R5s201526 sic@ + B3_Type typeValue, + octetstring adressInfo length(4..12), + octetstring ipv6Address length(1..16) optional /* Sep20 @sic R5s201387 Baseline Moving sic@ */ + }; + + type record PDU_SessionType { /* 24.501 cl. 9.11.4.11 */ + IEI4_Type iei optional, + B1_Type spare, + B3_Type typeValue + }; + + type record QoS_Flow { + B2_Type spare2, + B6_Type qfi, + B3_Type operationCode, + B6_Type spare6, + B1_Type eBit, + B6_Type numOfParameters, + record of QoSParameters parameterList optional + }; + + type record of QoS_Flow QoS_FlowList; + type record QoSFlowDescr { /* 24.501 cl. 9.11.4.12 */ + IEI8_Type iei, // @sic R5s190470 sic@ + Type6Length_Type iel, + record of QoS_Flow listofFlows + }; + + type record QoS_Rule { + IEI8_Type identifier, + Type6Length_Type iel, + B3_Type ruleOperationCode, + B1_Type dqrBit, + B4_Type numOfPacketFilters, + NG_PacketFilterList packetFilterList optional, + O1_Type precedence optional, + B1_Type spare optional, + B1_Type segregation optional, /* Dec18 */ + B6_Type flowIdentifier optional + }; + + type union NG_PacketFilterList { + NG_PacketFilterList_Type1 modify, + NG_PacketFilterList_Type2 new + }; + + type record of NG_PacketFilter_Type1 NG_PacketFilterList_Type1; + + type record NG_PacketFilter_Type1 { + B4_Type spare, + B4_Type packetFilterId + }; + + type record of NG_PacketFilter_Type2 NG_PacketFilterList_Type2; + + type record NG_PacketFilter_Type2 { + B2_Type spare, + B2_Type direction, + B4_Type packetFilterId, + Type4Length_Type len optional, + octetstring contents length (1..255) optional // @sic R5w190307 sic@ + }; + + type record of QoS_Rule QoS_RuleList; + type record QoS_Rules { // 24.501 cl. 9.11.4.13 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + QoS_RuleList listofQoSRules + }; + + type record Session_AMBR { // 24.501 cl. 9.11.4.14 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + O1_Type unitDL, + O2_Type downlink, + O1_Type unitUL, + O2_Type uplink + }; + + type record SSC_Mode { // 24.501 cl. 9.11.4.16 + IEI4_Type iei optional, + B1_Type spare, + B3_Type sscModeValue + }; + + type record UPU_Header { + B5_Type spare, + B1_Type reg, /* Set to spare for upuDataType = 1 */ + B1_Type ack, /* Set to spare for upuDataType = 1 */ + B1_Type upuDataType + }; + + type record UPU_Param { + B4_Type spare, + B4_Type dataSetType, + Type6Length_Type len, + octetstring dataSet + }; + + type record of UPU_Param UPU_ParamList; + + type record UPU_TransparentContainer { + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + UPU_Header octet4, + O16_Type upuMAC_I, + O2_Type counter optional, /* only present if upuDataType = 0 (in octet4) */ + UPU_ParamList upuList optional /* only present if upuDataType = 0 (in octet4) */ + }; + + type record SM_PDU_DN_RequestContainer { // 24.501 cl. 9.11.4.15 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring dnSpecificId + }; + + type record NGSM_NetworkFeatureSupport { /* 24.501 cl 9.11.4.18 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B7_Type spareBits, + B1_Type ept_S1, + octetstring spare length (1..12) + }; + + type record ATSSSContainer { // 24.501 cl. 9.11.4.22 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring contents + }; + + type record IPHeaderCompressionConfig { // 24.501 cl. 9.11.4.24 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V @sic R5s201526 sic@ */ + B1_Type spare, + B1_Type profile104, + B1_Type profile103, + B1_Type profile102, + B1_Type profile6, + B1_Type profile4, + B1_Type profile3, + B1_Type profile2, + O2_Type maxCID, + O1_Type addParamsType optional, + octetstring addParamsContainer optional + }; + + type record DS_TT_EthernetPortMACAddr { // 24.501 cl. 9.11.4.25 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + O6_Type addressContents + }; + + type record UE_DS_TT_ResidenceTime { // 24.501 cl. 9.11.4.26 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + O8_Type timeContents + }; + + type record PortManagementInfoContainer { // 24.501 cl. 9.11.4.27 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + octetstring contents + }; + + type record EthernetHeaderCompressConfig { /* 24.501 cl 9.11.4.28 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spareBits, + B2_Type cidLength + }; + + type record MBSSessionInfo { /* 24.501 cl 9.11.4.30 */ + B4_Type spareBits, + B2_Type operation, + B2_Type typeOfSessionId, // @sic RAN5#97 sidebar sic@ + octetstring sessionId + }; + + type record RequestedMBSContainer { /* 24.501 cl 9.11.4.30 */ + IEI8_Type iei, + Type6Length_Type iel, + record of MBSSessionInfo sessionInfo + }; + + type record NR_CGI { + O5_Type cellId, + NAS_PlmnId plmn + }; + + type record NR_CGI_List { + Type4Length_Type iel, + record of NR_CGI nrCGI + }; + + type record MBS_ServiceArea { + // depending on value of ReceivedMBSInfo.msai either or both of these fields are included + NG_TrackingAreaIdList_LV taiList optional, + NR_CGI_List nrCGIList optional + }; + + type record ReceivedMBSInfo { /* 24.501 cl 9.11.4.31 */ + B3_Type rejectCause, + B2_Type msai, + B3_Type md, + B3_Type spareBits, // @sic R5s230533 sic@ + B1_Type ipat, // @sic R5s230533 sic@ + B1_Type msci, + B2_Type mti, + B1_Type ipae, + TMGI_LV tmgi, + octetstring sourceIPaddr optional, + octetstring destIPaddr optional, + MBS_ServiceArea serviceArea optional, + octetstring timers optional, + octetstring securityContainer optional + }; + + type record ReceivedMBSContainer { /* 24.501 cl 9.11.4.31 */ + IEI8_Type iei, + Type6Length_Type iel, + record of ReceivedMBSInfo info + }; + + type record TMGI_LV { + Type4Length_Type iel, + O3_Type serviceID, + NAS_PlmnId plmn optional +}; + + type record PDUSessionPairId { /* 24.501 cl 9.11.4.32 */ + IEI8_Type iei, + Type4Length_Type iel, + O1_Type id + }; + + type record RSN { /* 24.501 cl 9.11.4.33 */ + IEI8_Type iei, + Type4Length_Type iel, + O1_Type rsn + }; + + type record NSSAI_DELETE_REQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + B8_Type deleteNSSAI_Type, + NAS_PlmnId configuredNSSAI optional, /* only present if deleteNSSAI_Type = DeleteConfigured */ + AllowedNSSAI allowedNSSAI optional /* only present if deleteNSSAI_Type = DeleteAllowed */ + }; + + type record AllowedNSSAI { + NAS_PlmnId allowedNSSAI, + B6_Type spareBits, + B2_Type accessType + }; + + type record NSSAI_DELETE_RESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + type record UE_TEST_LOOP_NR_SIDELINK_COUNTER_REQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + type record of O4_Type PacketCounterValueList; + + type record NR_SidelinkCounter { + IEI8_Type iei, + Type4Length_Type iel, + PacketCounterValueList counterValue + }; + + type record UE_TEST_LOOP_NR_SIDELINK_COUNTER_RESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + NR_SidelinkCounter pscch optional, /* only present if test loop E is active*/ + NR_SidelinkCounter stch optional, /* only present if test loop E is active*/ + NR_SidelinkCounter pssch optional /* only present if test loop E is active*/ + }; + + type record S1ToN1TransparentContainer { /* 24.501 cl. 9.11.2.9 + 24.501 specifies that this has a length of 10 octets, + but that only the value part is included in the RRC message. + Therefore iei and iel are never used */ + // IEI8_Type iei, + // Type4Length_Type iel, + O4_Type mac optional, + B4_Type ciphAlg, + B4_Type intAlg, + B1_Type spareBit, + B3_Type ncc, + B1_Type tsc, + B3_Type ksi5G, + O2_Type spare + }; + + type record IntraN1TransparentContainer { /* 24.501 cl. 9.11.2.6 + 24.501 specifies that this has a length of 9 octets, + but that only the value part is included in the RRC message. + Therefore iei and iel are never used */ + // IEI8_Type iei, + // Type4Length_Type iel, + O4_Type mac optional, + B4_Type ciphAlg, + B4_Type intAlg, + B3_Type spareBits, + B1_Type kacf, + B1_Type tsc, + B3_Type ksi5G, + O1_Type sequenceNum + }; + + type record SET_UAI_REQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + B6_Type spare, + B2_Type preferredRRCState + }; + + type record SET_UAI_RESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + +} with { + variant "FIELDORDER(msb)"; + encode "RAW"/*"NAS Types"*/ +} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_V2X_MsgContainers.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_V2X_MsgContainers.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..ed625d992ef36c1f3033eb6d4e89ed2c60148783 --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_V2X_MsgContainers.ttcn @@ -0,0 +1,44 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-01-18 15:32:38 +0100 (Tue, 18 Jan 2022) $ +// $Rev: 32443 $ +/******************************************************************************/ + +module NG_V2X_MsgContainers +{ + import from NG_V2X_TypeDefs all; + + type union NG_V2X_Message_Type { + DIRECT_LINK_ESTABLISHMENT_REQUEST Direct_Link_Establishment_Request, + DIRECT_LINK_ESTABLISHMENT_ACCEPT Direct_Link_Establishment_Accept, + DIRECT_LINK_MODIFICATION_REQUEST Direct_Link_Modification_Request, + DIRECT_LINK_MODIFICATION_ACCEPT Direct_Link_Modification_Accept, + DIRECT_LINK_RELEASE_REQUEST Direct_Link_Release_Request, + DIRECT_LINK_RELEASE_ACCEPT Direct_Link_Release_Accept, + DIRECT_LINK_KEEPALIVE_REQUEST Direct_Link_Keepalive_Request, + DIRECT_LINK_KEEPALIVE_RESPONSE Direct_Link_Keepalive_Response, + DIRECT_LINK_AUTHENTICATION_REQUEST Direct_Link_Authentication_Request, + DIRECT_LINK_AUTHENTICATION_RESPONSE Direct_Link_Authentication_Response, + DIRECT_LINK_AUTHENTICATION_REJECT Direct_Link_Authentication_Reject, + DIRECT_LINK_SECURITY_MODE_COMMAND Direct_Link_Security_Mode_Command, + DIRECT_LINK_SECURITY_MODE_COMPLETE Direct_Link_Security_Mode_Complete, + DIRECT_LINK_SECURITY_MODE_REJECT Direct_Link_Security_Mode_Reject, + DIRECT_LINK_REKEYING_REQUEST Direct_Link_Rekeying_Request, + DIRECT_LINK_REKEYING_RESPONSE Direct_Link_Rekeying_Response, + DIRECT_LINK_IDENTIFIER_UPDATE_REQUEST Direct_Link_Identifier_Update_Request, + DIRECT_LINK_IDENTIFIER_UPDATE_ACCEPT Direct_Link_Identifier_Update_Accept, + DIRECT_LINK_IDENTIFIER_UPDATE_ACK Direct_Link_Identifier_Update_Ack, + DIRECT_LINK_IDENTIFIER_UPDATE_REJECT Direct_Link_Identifier_Update_Reject, + DIRECT_LINK_MODIFICATION_REJECT Direct_Link_Modification_Reject, + DIRECT_LINK_ESTABLISHMENT_REJECT Direct_Link_Establishment_Reject, + DIRECT_LINK_AUTHENTICATION_FAILURE Direct_Link_Authentication_Failure + }; + + +// The encoding rule is needed because the types in this file are part of the overall message sent over the air +} with { encode "NAS Types"} diff --git a/ttcn/Lib3GPP/NG_NAS/NG_V2X_TypeDefs.ttcn b/ttcn/Lib3GPP/NG_NAS/NG_V2X_TypeDefs.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6a445e6fa6fba5255cd070d6e4fbf1458c5b7417 --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/NG_V2X_TypeDefs.ttcn @@ -0,0 +1,393 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-05-09 13:11:08 +0200 (Mon, 09 May 2022) $ +// $Rev: 33208 $ +/******************************************************************************/ + +module NG_V2X_TypeDefs { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: Message Types + //---------------------------------------------------------------------------- + const MessageType tsc_MT_DirectLinkEstablishmentRequest := '00000001'B; + const MessageType tsc_MT_DirectLinkEstablishmentAccept := '00000010'B; + const MessageType tsc_MT_DirectLinkEstablishmentReject := '00000011'B; + const MessageType tsc_MT_DirectLinkModificationRequest := '00000100'B; + const MessageType tsc_MT_DirectLinkModificationAccept := '00000101'B; + const MessageType tsc_MT_DirectLinkModificationReject := '00000110'B; + const MessageType tsc_MT_DirectLinkReleaseRequest := '00000111'B; + const MessageType tsc_MT_DirectLinkReleaseAccept := '00001000'B; + const MessageType tsc_MT_DirectLinkKeepaliveRequest := '00001001'B; + const MessageType tsc_MT_DirectLinkKeepaliveResponse := '00001010'B; + const MessageType tsc_MT_DirectLinkAuthenticationRequest := '00001011'B; + const MessageType tsc_MT_DirectLinkAuthenticationResponse := '00001100'B; + const MessageType tsc_MT_DirectLinkAuthenticationReject := '00001101'B; + const MessageType tsc_MT_DirectLinkSecurityModeCommand := '00001110'B; + const MessageType tsc_MT_DirectLinkSecurityModeComplete := '00001111'B; + const MessageType tsc_MT_DirectLinkSecurityModeReject := '00010000'B; + const MessageType tsc_MT_DirectLinkRekeyingRequest := '00010001'B; + const MessageType tsc_MT_DirectLinkRekeyingResponse := '00010010'B; + const MessageType tsc_MT_DirectLinkIdentifierUpdateRequest := '00010011'B; + const MessageType tsc_MT_DirectLinkIdentifierUpdateAccept := '00010100'B; + const MessageType tsc_MT_DirectLinkIdentifierUpdateAck := '00010101'B; + const MessageType tsc_MT_DirectLinkIdentifierUpdateReject := '00010110'B; + const MessageType tsc_MT_DirectLinkAuthenticationFailure := '00010111'B; + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: PDUs + //---------------------------------------------------------------------------- + // Direct Link messages (24.587 cl. 7.3) + //---------------------------------------------------------------------------- + + type record DIRECT_LINK_ESTABLISHMENT_REQUEST { /* 24.587 cl. 7.3.1 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + V2X_ServiceIds v2xServiceId, /* cl. 8.4.3 M LV 5-253 */ + ApplicationLayerId sourceUserInfo, /* cl. 8.4.4 M LV 3-253 */ + PC5_UESecurityCap ueSecurityCapability, /* cl. 8.4.14 M LV 3-9 */ + UE_PC5UnicastSecurityPolicy uePC5UnicastSigSecurityPolicy, /* cl. 8.4.15 M V 1 */ + KeyEstabInfoContainer keyEstabInfoContainer optional, /* cl. 8.4.12 O TLV-E 4-n IEI=74 */ + PC5_Nonce nonce_1 optional, /* cl. 8.4.13 O TV 17 IEI=53 */ + K_NRPsessId_SigBits msb_K_NRPsessId optional, /* cl. 8.4.16 O TV 2 IEI=54 */ + ApplicationLayerId targetUserInfo optional, /* cl. 8.4.4 O TLV 4-254 IEI=28 */ + K_NRPId k_NRPId optional /* cl. 8.4.17 O TV 5 IEI=52 */ + }; + + type record DIRECT_LINK_ESTABLISHMENT_ACCEPT { /* 24.587 cl. 7.3.2 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + ApplicationLayerId sourceUserInfo, /* cl. 8.4.4 M LV 3-253 */ + PC5QoSFlowDescr qosFlowDescr, /* cl. 8.4.5 M LV-E 5-65537 */ + UE_PC5UnicastSecurityPolicy configUEPC5UnicastUPSecurityProtection, /* cl. 8.4.23 M V 1 */ + IPAddressConfig ipAddressConfig optional, /* cl. 8.4.6 O TV 2 IEI=57 */ + LinkLocalIPv6Addr linkLocalIPv6Addr optional /* cl. 8.4.7 O TV 17 IEI=58 */ + }; + + type record DIRECT_LINK_MODIFICATION_REQUEST { /* 24.587 cl. 7.3.4 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type linkModOperationCode, /* cl. 8.4.8 M V 1 */ + PC5QoSFlowDescr qosFlowDescr /* cl. 8.4.5 M LV-E 5-65537 */ + }; + + type record DIRECT_LINK_MODIFICATION_ACCEPT { /* 24.587 cl. 7.3.5 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + PC5QoSFlowDescr qosFlowDescr optional /* cl. 8.4.5 O TLV-E 6-65538 IEI=79 */ + }; + + type record DIRECT_LINK_RELEASE_REQUEST { /* 24.587 cl. 7.3.6 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type pc5SigProtocolCauseValue, /* cl. 8.4.9 M V 1 */ + K_NRP_Id_SigBits msb_K_NRPId /* cl. 8.4.20 M V 2 */ + }; + + type record DIRECT_LINK_RELEASE_ACCEPT { /* 24.587 cl. 7.3.7 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + K_NRP_Id_SigBits lsb_K_NRPId /* cl. 8.4.21 M V 2 */ + }; + + type record DIRECT_LINK_KEEPALIVE_REQUEST { /* 24.587 cl. 7.3.8 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O4_Type keepAliveCounter, /* cl. 8.4.10 M V 4 */ + MaxInactivityPeriod maxInactivityPeriod optional /* cl. 8.4.11 O TV 5 IEI=55 */ + }; + + type record DIRECT_LINK_KEEPALIVE_RESPONSE { /* 24.587 cl. 7.3.9 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O4_Type keepAliveCounter /* cl. 8.4.10 M V 4 */ + }; + + type record DIRECT_LINK_AUTHENTICATION_REQUEST { /* 24.587 cl. 7.3.10 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + KeyEstabInfoContainer keyEstabInfoContainer /* cl. 8.4.12 M LV-E 3-n */ + }; + + type record DIRECT_LINK_AUTHENTICATION_RESPONSE { /* 24.587 cl. 7.3.11 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + KeyEstabInfoContainer keyEstabInfoContainer /* cl. 8.4.12 M LV-E 3-n */ + }; + + type record DIRECT_LINK_AUTHENTICATION_REJECT { /* 24.587 cl. 7.3.12 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type pc5SigProtocolCauseValue /* cl. 8.4.9 M V 1 */ + }; + + type record DIRECT_LINK_SECURITY_MODE_COMMAND { /* 24.587 cl. 7.3.13 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + SelectedSecurityAlgs selectedSecurityAlgs, /* cl. 8.4.18 M V 1 */ + PC5_UESecurityCap ueSecurityCapability, /* cl. 8.4.14 M LV 3-9 */ + UE_PC5UnicastSecurityPolicy uePC5UnicastSigSecurityPolicy, /* cl. 8.4.15 O TV 2 IEI=59 */ + PC5_Nonce nonce_2 optional, /* cl. 8.4.13 O TV 17 IEI=55 */ + K_NRPsessId_SigBits lsb_K_NRPsessId optional, /* cl. 8.4.16 O TV 2 IEI=52 */ + KeyEstabInfoContainer keyEstabInfoContainer optional, /* cl. 8.4.12 O TLV-E 4-n IEI=74 */ + K_NRP_Id_SigBits msb_K_NRPId optional /* cl. 8.4.20 O TV 3 IEI=62 */ + }; + + type record DIRECT_LINK_SECURITY_MODE_COMPLETE { /* 24.587 cl. 7.3.14 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + PC5QoSFlowDescr qosFlowDescr, /* cl. 8.4.5 M LV-E 6-n */ + UE_PC5UnicastSecurityPolicy uePC5UnicastUPSecurityPolicy, /* cl. 8.4.22 M V 1 */ + IPAddressConfig ipAddressConfig optional, /* cl. 8.4.6 O TV 2 IEI=57 */ + LinkLocalIPv6Addr linkLocalIPv6Addr optional, /* cl. 8.4.7 O TV 17 IEI=58 */ + K_NRP_Id_SigBits lsb_K_NRPId optional /* cl. 8.4.20 O TV 3 IEI=52 */ + }; + + type record DIRECT_LINK_SECURITY_MODE_REJECT { /* 24.587 cl. 7.3.15 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type pc5SigProtocolCauseValue /* cl. 8.4.9 M V 1 */ + }; + + type record DIRECT_LINK_REKEYING_REQUEST { /* 24.587 cl. 7.3.16 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + PC5_UESecurityCap ueSecurityCapability, /* cl. 8.4.14 M LV 3-9 */ + KeyEstabInfoContainer keyEstabInfoContainer optional, /* cl. 8.4.12 O TLV-E 4-n IEI=74 */ + PC5_Nonce nonce_1 optional, /* cl. 8.4.13 O TV 17 IEI=53 */ + K_NRPsessId_SigBits msb_K_NRPsessId optional, /* cl. 8.4.16 O TV 2 IEI=54 */ + ReAuthInd reauthenticationInd optional /* cl. 8.4.24 O TV 2 IEI=56 */ + }; + + type record DIRECT_LINK_REKEYING_RESPONSE { /* 24.587 cl. 7.3.17 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber /* cl. 8.4.2 M V 1 */ + }; + + type record DIRECT_LINK_IDENTIFIER_UPDATE_REQUEST { /* 24.587 cl. 7.3.18 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + K_NRPsessId_SigBits msb_K_NRPsessId, /* cl. 8.4.16 M V 1 */ + Layer2Id layer2Id, /* cl. 8.4.25 M V 3 */ + ApplicationLayerId sourceUserInfo optional, /* cl. 8.4.4 O TLV 4-254 IEI=57 */ + LinkLocalIPv6Addr sourceLinkLocalIPv6Addr optional /* cl. 8.4.7 O TV 17 IEI=58 */ + }; + + type record DIRECT_LINK_IDENTIFIER_UPDATE_ACCEPT { /* 24.587 cl. 7.3.19 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + K_NRPsessId_SigBits lsb_K_NRPsessId, /* cl. 8.4.17 M V 1 */ + K_NRPsessId_SigBits msb_K_NRPsessId, /* cl. 8.4.16 M V 1 */ + Layer2Id sourceLayer2Id, /* cl. 8.4.25 M V 3 */ + Layer2Id targetLayer2Id, /* cl. 8.4.25 M V 3 */ + ApplicationLayerId targetUserInfo optional, /* cl. 8.4.4 O TLV 4-254 IEI=28 */ + LinkLocalIPv6Addr targetLinkLocalIPv6Addr optional, /* cl. 8.4.7 O TV 17 IEI=59 */ + ApplicationLayerId sourceUserInfo optional, /* cl. 8.4.4 O TLV 4-254 IEI=57 */ + LinkLocalIPv6Addr sourceLinkLocalIPv6Addr optional /* cl. 8.4.7 O TV 17 IEI=58 */ + }; + + type record DIRECT_LINK_IDENTIFIER_UPDATE_ACK { /* 24.587 cl. 7.3.20 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + K_NRPsessId_SigBits lsb_K_NRPsessId, /* cl. 8.4.17 M V 1 */ + Layer2Id targetLayer2Id, /* cl. 8.4.25 M V 3 */ + ApplicationLayerId targetUserInfo optional, /* cl. 8.4.4 O TLV 4-254 IEI=28 */ + LinkLocalIPv6Addr targetLinkLocalIPv6Addr optional /* cl. 8.4.7 O TV 17 IEI=59 */ + }; + + type record DIRECT_LINK_IDENTIFIER_UPDATE_REJECT { /* 24.587 cl. 7.3.21 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type pc5SigProtocolCauseValue /* cl. 8.4.9 M V 1 */ + }; + + type record DIRECT_LINK_MODIFICATION_REJECT { /* 24.587 cl. 7.3.22 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type pc5SigProtocolCauseValue /* cl. 8.4.9 M V 1 */ + }; + + type record DIRECT_LINK_ESTABLISHMENT_REJECT { /* 24.587 cl. 7.3.23 + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + O1_Type pc5SigProtocolCauseValue /* cl. 8.4.9 M V 1 */ + }; + + type record DIRECT_LINK_AUTHENTICATION_FAILURE { /* 24.587 cl. 7.3.24 + // FFS: Errors in core spec definition! + Significance: dual + Direction: UE to peer UE */ + MessageType messageType, /* cl. 8.4.1 M V 1 */ + SequenceNumber sequenceNumber, /* cl. 8.4.2 M V 1 */ + KeyEstabInfoContainer keyEstabInfoContainer optional /* cl. 8.4.12 O TLV-E 4-n IEI=74 */ + }; + + //**************************************************************************** + // NAS PROTOCOL DEFINITIONS: information elements (24.587 cl. 8.4) + //---------------------------------------------------------------------------- + type O1_Type SequenceNumber; /* 24.587 cl. 8.4.2 */ + + type record V2X_ServiceIds { /* 24.587 cl. 8.4.3 */ + // IEI is not used for this type + Type4Length_Type lenOfContent, + record of O4_Type serviceId + }; + + type record ApplicationLayerId { /* 24.587 cl. 8.4.4 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel, + octetstring appLayerContents + }; + + type record PC5QoS_Flow { /* 24.587 cl. 8.4.5 */ + B2_Type spare2, + B6_Type pqfi, + B3_Type operationCode, + B6_Type spare6, + B1_Type eBit, + B6_Type numOfParameters, + V2X_ServiceIds associatedV2XServiceIds optional, + QoSParametersList parameterList optional + }; + + type record of PC5QoS_Flow PC5QoS_FlowList; + + type record PC5QoSFlowDescr { /* 24.587 cl. 8.4.5 */ + IEI8_Type iei optional, + Type6Length_Type iel, + PC5QoS_FlowList listofFlows + }; + + type record IPAddressConfig { /* 24.587 cl. 8.4.6 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, + B4_Type ipAddrContents + }; + + type record LinkLocalIPv6Addr { /* 24.587 cl. 8.4.7 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O16_Type ipv6Addr + }; + + type record MaxInactivityPeriod { /* 24.587 cl. 8.4.11 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type maxInactivePeriod + }; + + type record KeyEstabInfoContainer { /* 24.587 cl. 8.4.12 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type6Length_Type iel, + octetstring keyEstablishmentInfo + }; + + type record PC5_Nonce { /* 24.587 cl. 8.4.13 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O16_Type nonceValue + }; + + type record PC5_UESecurityCap { /* 24.587 cl. 98.4.14 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + O1_Type ngeaCap, + O1_Type ngiaCap, + octetstring spare length(1..6) optional + }; + + type record UE_PC5UnicastSecurityPolicy { /* 24.587 cl. 8.4.15/22/23 */ + /* Definition is exactly the same for: + UE PC5 Unicast Signalling Security Policy, + UE PC5 Unicast User Plane Security Policy, + Configuration of UE PC5 Unicast User Plane Security Protextion */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spareBit1, + B3_Type cipheringPolcy, + B1_Type spareBit2, + B4_Type integrityPolicy + }; + + type record K_NRPsessId_SigBits { /* 24.587 cl. 8.4.16/19 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type significantBits + }; + + type record K_NRPId { /* 24.587 cl. 8.4.17 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type id + }; + + type record SelectedSecurityAlgs { /* 24.587 cl. 8.4.18 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spareBit1, + B3_Type cipheringPolcy, + B1_Type spareBit2, + B4_Type integrityPolicy + }; + + type record K_NRP_Id_SigBits { /* 24.587 cl. 8.4.20/21 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O2_Type significantBits + }; + + type record ReAuthInd { /* 24.587 cl. 8.4.24 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B7_Type spare, + B1_Type reAuthenticationInd + }; + + type record Layer2Id { /* 24.587 cl. 8.4.25 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O3_Type id + }; + +} with { encode "NAS Types"} diff --git a/ttcn/Lib3GPP/NG_NAS/module.mk b/ttcn/Lib3GPP/NG_NAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..263f7212d06ff6fbb70a3b3d90c9da070f7013b2 --- /dev/null +++ b/ttcn/Lib3GPP/NG_NAS/module.mk @@ -0,0 +1,18 @@ +sources := \ + EAP_TypeDefs.ttcn \ + NG_NAS_Common.ttcn \ + NG_NAS_MsgContainers.ttcn \ + NG_NAS_SecurityFunctions.ttcn \ + NG_NAS_Templates.ttcn \ + NG_NAS_TypeDefs.ttcn \ + NG_NAS_EncdecDeclarations.ttcn + + +##modules :=\ + +#EUTRA_NR_SecurityFunctions.ttcn \ +#NasEmu_Common4G5G.ttcn \ +#NG_NAS_SecurityFunctions.ttcn \ +#NG_NasEmu_CtrlAspTypes.ttcn \ +NG_NASTemplateFunctions.ttcn + diff --git a/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_Common.ttcn b/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_Common.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..725c6ff358b89660a77d5c497f1e5107fb8a9071 --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_Common.ttcn @@ -0,0 +1,667 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2020-11-21 16:39:02 +0100 (Sat, 21 Nov 2020) $ +// $Rev: 29257 $ +/******************************************************************************/ + +module NG_NasEmu_Common { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from NG_NAS_TypeDefs all; + import from NG_NAS_Common all; + import from NG_NAS_MsgContainers all; + import from NG_NasEmu_CtrlAspTypes all; + import from NasEmu_Common4G5G all; + import from NG_SecurityDefinitionsAndExternalFunctions all; + + //**************************************************************************** + // NAS emulation: Local definitions + //---------------------------------------------------------------------------- + + // local type definitions: + type union NG_NasEmu_DecodedNasPduUL_Type { /* Return type for f_NasEmu_DecodeMsg + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + NG_NAS_UL_Message_Type Msg, + Null_Type Invalid + }; + + type record NG_NasEmu_DecodingInfo_Type { /* Return type for f_DecipherAndDecodeNasPdu + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + NG_NAS_MSG_Indication_Type NasIndication optional, /* omit when octetstring cannot be decoded */ + boolean IntegrityError + }; + + type integer NG_NasEmu_SN; /* sequence number as usual (1 octet) + @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + + // local templates: + template (value) NG_NasEmu_DecodingInfo_Type cs_NG_DecodingInfo_Init := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + NasIndication := omit, + IntegrityError := false + }; + + //**************************************************************************** + // NAS emulation: global information + //---------------------------------------------------------------------------- + + type record NG_NasSecurity_Type { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + NG_NAS_SecurityInfo_Type Integrity, + NG_NAS_SecurityInfo_Type Ciphering, + NasCountInfo_Type NasCount, + B5_Type BearerId, + boolean SecurityStarted /* can be set to true after the download of security keys since + ciphering is assumed for all security protected NAS PDUs in UL */ + }; + + /* + * @desc initialise the global information + * @return NG_NasSecurity_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasEmu_NasSecurity_Init() return NG_NasSecurity_Type + { + return valueof(cs_NG_NasSecurity_Init); // valueof cannot be avoided here + } + + //**************************************************************************** + // NAS emulation: Configuration primitives + //---------------------------------------------------------------------------- + + template (present) NG_NAS_CTRL_REQ cr_NG_NAS_CTRL_Security_REQ := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := ?, + Request := { + Security := ? + } + }; + + template (present) NG_NAS_CTRL_REQ cr_NG_NAS_CTRL_NasCount_REQ := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := ?, + Request := { + NasCount := ? + } + }; + + //---------------------------------------------------------------------------- + + template (value) NG_NAS_CTRL_CNF cs_NG_NAS_CTRL_Security_CNF := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := cs_NasCtrlCnfAspCommonPart, + Confirm := { + Security := true + } + }; + + template (value) NG_NAS_CTRL_CNF cs_NG_NAS_CTRL_NasCountSet_CNF := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := cs_NasCtrlCnfAspCommonPart, + Confirm := { + NasCount := { + Set := true + } + } + }; + + template (value) NG_NAS_CTRL_CNF cs_NG_NAS_CTRL_NasCountGet_CNF(template (value) NasCountInfo_Type p_NasCountInfo) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := cs_NasCtrlCnfAspCommonPart, + Confirm := { + NasCount := { + Get := p_NasCountInfo + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) NG_NasSecurity_Type cs_NG_NasSecurity_Init := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Integrity := { + Algorithm := '0000'B, + K_NAS := int2bit(0, 128) + }, + Ciphering := { + Algorithm := '0000'B, + K_NAS := int2bit(0, 128) + }, + NasCount := { + UL := f_NasCountInit(), + DL := f_NasCountInit() + }, + BearerId := '00001'B, /* 3GPP Access */ + SecurityStarted := false + }; + + //**************************************************************************** + // Templates: NAS Signalling + //---------------------------------------------------------------------------- + template (value) NG_NAS_DL_Message_Type cs_NG_SecurityProtected_NasMsg(SecurityHeaderType p_SecurityHeaderType, + MessageAuthenticationCode p_MessageAuthenticationCode, + NAS_SequenceNumber p_NAS_SequenceNumber, + template (value) NG_NAS_Message p_NAS_Message) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Protected_Nas_Message := { + protocolDiscriminator := tsc_EPD_GMM, + spareHalfOctet := tsc_SpareHalfOctet, + securityHeaderType := p_SecurityHeaderType, + messageAuthenticationCode := p_MessageAuthenticationCode, + sequenceNumber := p_NAS_SequenceNumber, + plainNASMessage := p_NAS_Message + } + }; + + template (value) PayloadContainer cs_PayloadContainer (template (omit) IEI8_Type p_IEI, + octetstring p_EncodedGSMMsg) := + { /* 24.501 cl. 9.11.3.39 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, + iel := int2oct(lengthof(p_EncodedGSMMsg), 2), + payload := p_EncodedGSMMsg + }; + + //**************************************************************************** + // NAS emulation: auxiliary functions + //---------------------------------------------------------------------------- + /* + * @desc estimate COUNT (in UL) based on SN of received PDU and previous COUNT + * Note: at the beginning COUNT is intialised with 0 as well as the SN at the UE + * => an overflow is assumed when (previous SN > received SN) + * @param p_PrevCount + * @param p_SequenceNumber + * @return NasCount_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasSecurity_EstimateCOUNT(NasCount_Type p_PrevCount, + NG_NasEmu_SN p_SequenceNumber) return NasCount_Type + { + var integer v_PrevCountValue := oct2int(p_PrevCount); + var integer v_CountValue; + var integer v_MaxSnPlus1; + var integer v_PrevSnValue; + var integer v_ReceivedSnValue; + var integer v_OverflowCounter; /* Note: for normal (long) SN this is the overflow counter as described in 24.301; + for 5 bit SN it includes the 3 most significant bits of the least significant octet (what normally is the SN) */ + v_ReceivedSnValue := p_SequenceNumber; + v_MaxSnPlus1 := 256; + v_OverflowCounter := v_PrevCountValue / v_MaxSnPlus1; + v_PrevSnValue := v_PrevCountValue mod v_MaxSnPlus1; + + if (v_ReceivedSnValue < v_PrevSnValue) { // => overflow + v_OverflowCounter := (v_OverflowCounter + 1) mod 65536; + } + v_CountValue := (v_OverflowCounter * v_MaxSnPlus1) + v_ReceivedSnValue; + + return int2oct(v_CountValue, 4); + }; + + //**************************************************************************** + // NAS emulation: Encoding/Decoding + //---------------------------------------------------------------------------- + /* + * @desc wrapper function for encvalue + * @param p_NasMessage + * @return bitstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasEmu_EncvalueNAS(template (value) NG_NAS_DL_Message_Type p_NasMessage) return bitstring + { + return encvalue(p_NasMessage); + }; + + /* + * @desc wrapper function for decvalue + * @param p_EncodedNasMessage (by reference) + * @param p_NAS_UL_Message (by reference) + * @return integer + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasEmu_DecvalueNAS(inout bitstring p_EncodedNasMessage, + out NG_NAS_UL_Message_Type p_NAS_UL_Message) return integer + { + return decvalue(p_EncodedNasMessage, p_NAS_UL_Message); + }; + //---------------------------------------------------------------------------- + /* + * @desc return a the decoded NAS PDU (v_DecodedNasPduUL.Msg) or v_DecodedNasPduUL.Invalid + * @param p_EncodedMsg + * @return NG_NasEmu_DecodedNasPduUL_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasEmu_DecodeMsg(octetstring p_EncodedMsg) return NG_NasEmu_DecodedNasPduUL_Type + { + var bitstring v_NasPduBitstring; + var NG_NAS_UL_Message_Type v_NAS_UL_Message; + var NG_NasEmu_DecodedNasPduUL_Type v_DecodedNasPduUL; + + v_NasPduBitstring := oct2bit(p_EncodedMsg); + if (f_NG_NasEmu_DecvalueNAS(v_NasPduBitstring, v_NAS_UL_Message) != 0) { /* v_NasPduBitstring needed as a variable since being 'inout' in decvalue + v_NAS_UL_Message is out parameter i.e. needs not to be initialised */ + f_NasEmulationError(__FILE__, __LINE__, "NAS message cannot be decoded"); + v_DecodedNasPduUL.Invalid := true; + } else { + v_DecodedNasPduUL.Msg := v_NAS_UL_Message; + } + return v_DecodedNasPduUL; + } + + /* + * @desc check whether NAS message contains piggybacked message and decode it + * Note: function is called recursively + * @param p_NAS_UL_Message + * @param p_NasSecurityByRef + * @param p_NasCount + * @return template (omit) NG_NAS_UL_PduList_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasEmu_DecodePiggybacked(NG_NAS_UL_Message_Type p_NAS_UL_Message, + NG_NasSecurity_Type p_NasSecurityByRef, + NasCount_Type p_NasCount) return template (omit) NG_NAS_UL_PduList_Type + { + var template (omit) NG_NAS_UL_PduList_Type v_NAS_UL_PduList := omit; + var template (omit) NG_NAS_UL_Pdu_Type v_NAS_UL_Pdu := omit; + var octetstring v_PiggybackedOctetString := ''O; + var octetstring v_CipheredString := ''O; + var octetstring v_NonCleartextString := ''O; // for CP Service Req + var octetstring v_CleartextString := ''O; // for CP Service Req + var NG_NasEmu_DecodedNasPduUL_Type v_DecodedNasPduUL; + + if (ischosen(p_NAS_UL_Message.ul_Nas_Transport)) { + if (p_NAS_UL_Message.ul_Nas_Transport.payloadContainerType.container == tsc_PayloadContainerESMMsg) { // @sic R5w190208 sic@ + // only decode if ESM Msg (other container types must be decoded in test case) + v_PiggybackedOctetString := p_NAS_UL_Message.ul_Nas_Transport.payload.payload; + } + } else if (ischosen(p_NAS_UL_Message.security_Mode_Complete)) { + if (ispresent(p_NAS_UL_Message.security_Mode_Complete.nasMsg)) { + // In this case, the value will be unciphered (as the whole message is ciphered) + v_PiggybackedOctetString := p_NAS_UL_Message.security_Mode_Complete.nasMsg.replayedNASMsgContainerValue; + } + } else if (ischosen(p_NAS_UL_Message.registration_Request)) { + if (ispresent(p_NAS_UL_Message.registration_Request.nasMsg)) { + v_CipheredString := p_NAS_UL_Message.registration_Request.nasMsg.replayedNASMsgContainerValue; + } + } else if (ischosen(p_NAS_UL_Message.service_Request)) { + if (ispresent(p_NAS_UL_Message.service_Request.nasMsg)) { + v_CipheredString := p_NAS_UL_Message.service_Request.nasMsg.replayedNASMsgContainerValue; + } + } else if (ischosen(p_NAS_UL_Message.cp_Service_Request)) { // @sic R5s201387 Baseline Moving sic@ + // This doesn't contain the whole NAS msg, so must be treated separately + if (ispresent(p_NAS_UL_Message.cp_Service_Request.cIoTSmallDataContainer)) { // if this is present, nothing else will be + v_NonCleartextString := p_NAS_UL_Message.cp_Service_Request.cIoTSmallDataContainer.encodedstring; + if (p_NasSecurityByRef.SecurityStarted) { + // if security not started, do nothing and leave piggybacked msg as omit, else... + // Decipher NAS container + v_NonCleartextString := fx_NG_NasDeciphering(v_NonCleartextString, + p_NasSecurityByRef.Ciphering.Algorithm, + p_NasSecurityByRef.Ciphering.K_NAS, + p_NasCount, + p_NasSecurityByRef.BearerId); + // replace this IE with the unciphered version + p_NAS_UL_Message.cp_Service_Request.cIoTSmallDataContainer.encodedstring := v_NonCleartextString; + // now return this whole message as the piggybacked message (all is now decoded and deciphered) + v_NAS_UL_PduList[0].Msg := p_NAS_UL_Message; + v_NAS_UL_PduList[0].PiggybackedPduList := omit; + } + } else if (ispresent(p_NAS_UL_Message.cp_Service_Request.nasMsg)) { + v_NonCleartextString := p_NAS_UL_Message.cp_Service_Request.nasMsg.replayedNASMsgContainerValue; + if (p_NasSecurityByRef.SecurityStarted) { + // if security not started, do nothing and leave piggybacked msg as omit, else... + // Decipher NAS container + v_NonCleartextString := fx_NG_NasDeciphering(v_NonCleartextString, + p_NasSecurityByRef.Ciphering.Algorithm, + p_NasSecurityByRef.Ciphering.K_NAS, + p_NasCount, + p_NasSecurityByRef.BearerId); + // remove this IE from the whole message + p_NAS_UL_Message.cp_Service_Request.nasMsg := omit; + // re-encode the message (now only the cleartext part) + v_CleartextString := bit2oct(encvalue(p_NAS_UL_Message)); + // then put these 2 parts together so the whole message can be decoded + v_PiggybackedOctetString := v_CleartextString & v_NonCleartextString; + } + } + } else { + // NAS message does not contain piggybacked NAS message or decoding must be done in test case + } + + if (lengthof(v_CipheredString) > 0) { + // Only for those initial NAS messages with a ciphered NAS message container + if (p_NasSecurityByRef.SecurityStarted) { + // if security not started, do nothing and leave piggybacked msg as omit, else... + // Decipher complete NAS message + v_PiggybackedOctetString := fx_NG_NasDeciphering(v_CipheredString, + p_NasSecurityByRef.Ciphering.Algorithm, + p_NasSecurityByRef.Ciphering.K_NAS, + p_NasCount, + p_NasSecurityByRef.BearerId); + } + } + + // Now decode piggybacked message, if there is one (or more) + if (lengthof(v_PiggybackedOctetString) > 0) { + + v_DecodedNasPduUL := f_NG_NasEmu_DecodeMsg(v_PiggybackedOctetString); + if (ischosen(v_DecodedNasPduUL.Invalid)) { + // do nothing i.e. keep v_NAS_UL_Pdu as omit + } else { + v_NAS_UL_Pdu.Msg := v_DecodedNasPduUL.Msg; + // recursive call: check whether piggybacked message contains further piggybacked messages + v_NAS_UL_Pdu.PiggybackedPduList := f_NG_NasEmu_DecodePiggybacked(v_DecodedNasPduUL.Msg, p_NasSecurityByRef, p_NasCount); + } + v_NAS_UL_PduList[0] := v_NAS_UL_Pdu; // only one PDU piggybacked considered + } + return v_NAS_UL_PduList; + } + + //---------------------------------------------------------------------------- + /* + * @desc encode piggybacked (GSM) message and add it to the NAS PDU + * Note: if there is a piggybacked GSM message the whole IE of the GMM ie replaced (i.e. not only the octetstring) + * @param p_NAS_DL_Pdu + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_NasEmu_EncodePiggybacked(NG_NAS_DL_Pdu_Type p_NAS_DL_Pdu) return octetstring + { + var template (value) NG_NAS_DL_Message_Type v_NAS_DL_Message := p_NAS_DL_Pdu.Msg; + var NG_NAS_DL_PduList_Type v_PiggybackedPduList; + var NG_NAS_DL_Pdu_Type v_PiggybackedPDU; + var integer v_NoOfPiggybacked; + var octetstring v_EncodedPiggybackedMsg; + + if (ispresent(p_NAS_DL_Pdu.PiggybackedPduList)) { + v_PiggybackedPduList := p_NAS_DL_Pdu.PiggybackedPduList; + v_NoOfPiggybacked := lengthof(v_PiggybackedPduList); + } else { + v_NoOfPiggybacked := 0; + } + + if (v_NoOfPiggybacked > 0) { + v_PiggybackedPDU := v_PiggybackedPduList[0]; + v_EncodedPiggybackedMsg := bit2oct(f_NG_NasEmu_EncvalueNAS(v_PiggybackedPDU.Msg)); + + if (v_NoOfPiggybacked > 1) { + f_NasEmulationError(__FILE__, __LINE__, "number of piggybacked PDUs is > 1 but only one piggy-backed message is considered"); + } + if (ispresent(v_PiggybackedPDU.PiggybackedPduList)) { + f_NasEmulationError(__FILE__, __LINE__, "Only one piggy-backed message is considered"); + /* piggybacking for the piggybacked PDU is ignored */ + } + + if (ischosen(v_NAS_DL_Message.dl_Nas_Transport)) { + v_NAS_DL_Message.dl_Nas_Transport.payload := cs_PayloadContainer(omit, v_EncodedPiggybackedMsg); + + } else { + f_NasEmulationError(__FILE__, __LINE__, "NAS message can not carry piggy-backed NAS PDU"); + /* piggy backed message is ignored */ + } + } + return bit2oct(f_NG_NasEmu_EncvalueNAS(v_NAS_DL_Message)); + } + + //**************************************************************************** + // DL ASP Handling + //---------------------------------------------------------------------------- + /* + * @desc encode and cipher NAS PDU + * @param p_NasSecurityByRef (by reference) + * @param p_NAS_MSG_Request + * @return octetstring + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_EncodeAndCipher_NG_NasPdu(inout NG_NasSecurity_Type p_NasSecurityByRef, + NG_NAS_MSG_Request_Type p_NAS_MSG_Request) return octetstring + { + var SecurityHeaderType v_SecurityStatus := p_NAS_MSG_Request.SecurityProtection.Status; + var boolean v_ForceMacError := p_NAS_MSG_Request.SecurityProtection.ForceMacError; + var octetstring v_EncodedNasPdu; + var NasCount_Type v_CountDL; + var MessageAuthenticationCode v_CalculatedMac; + var NAS_SequenceNumber v_SequenceNumber; + var octetstring v_Octet7toN; + + v_EncodedNasPdu := f_NG_NasEmu_EncodePiggybacked(p_NAS_MSG_Request.Pdu); + + if (v_SecurityStatus != tsc_SHT_NoSecurityProtection) { + + if (not p_NasSecurityByRef.SecurityStarted) { + f_NasEmulationError(__FILE__, __LINE__, "security is not started"); + /* => PDU will not be security protected */ + + } else { + // INCREMENT DL NAS COUNT: + v_CountDL := f_NasSecurity_IncrementCOUNT(p_NasSecurityByRef.NasCount.DL); + p_NasSecurityByRef.NasCount.DL := v_CountDL; + + // APPLY CIPHERING (if necessary): + if ((v_SecurityStatus == tsc_SHT_IntegrityProtected_Ciphered) or + (v_SecurityStatus == tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext)) { + + v_EncodedNasPdu := fx_NG_NasCiphering(v_EncodedNasPdu, + p_NasSecurityByRef.Ciphering.Algorithm, + p_NasSecurityByRef.Ciphering.K_NAS, + v_CountDL, + p_NasSecurityByRef.BearerId); + } + + // APPLY INTEGRITY PROTECTION: + v_SequenceNumber := f_NasSecurity_ExtractSNfromCOUNT(v_CountDL); + v_Octet7toN := v_SequenceNumber & v_EncodedNasPdu; + v_CalculatedMac := fx_NG_NasIntegrityAlgorithm(v_Octet7toN, + p_NasSecurityByRef.Integrity.Algorithm, + p_NasSecurityByRef.Integrity.K_NAS, + v_CountDL, + p_NasSecurityByRef.BearerId, + tsc_DirectionDL); + + if (v_ForceMacError) { + v_CalculatedMac := not4b v_CalculatedMac; // O4_Type + } + + // build up SECURITY PROTECTED NAS message + v_EncodedNasPdu := bit2oct(f_NG_NasEmu_EncvalueNAS(cs_NG_SecurityProtected_NasMsg(v_SecurityStatus, + v_CalculatedMac, + v_SequenceNumber, + v_EncodedNasPdu))); + } + } + return v_EncodedNasPdu; + } + + //**************************************************************************** + // UL ASP Handling + //---------------------------------------------------------------------------- + + template (value) NG_NAS_MSG_Indication_Type cs_NG_NAS_MSG_Indication(NG_NasSecurity_Type p_NasSecurityByRef, + SecurityHeaderType p_NAS_SecurityStatus, + NasCount_Type p_NasCount, + NG_NAS_UL_Message_Type p_NAS_UL_Message) := + { /* local type templates (uses f_NG_NasEmu_DecodePiggybacked) */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + SecurityProtection:= { + Status := p_NAS_SecurityStatus, + NasCount := p_NasCount + }, + Pdu := { + Msg := p_NAS_UL_Message, + PiggybackedPduList := f_NG_NasEmu_DecodePiggybacked(p_NAS_UL_Message, p_NasSecurityByRef, p_NasCount) + } + }; + + template (value) NG_NAS_MSG_Indication_Type cs_NG_NAS_PDU_Ind(SecurityHeaderType p_NAS_SecurityStatus, + NasCount_Type p_NasCount, + NG_NAS_UL_Message_Type p_NAS_UL_Message, + template (omit) NG_NAS_UL_PduList_Type p_Piggybacked := omit) := + { /* local type templates (used to hold both Registration Reqs) */ + SecurityProtection:= { + Status := p_NAS_SecurityStatus, + NasCount := p_NasCount + }, + Pdu := { + Msg := p_NAS_UL_Message, + PiggybackedPduList := p_Piggybacked + } + }; + + /* + * @desc Decipher and decode NAS PDU + * Notes: + * - When receiving a security protected NAS PDU firstly deceiphering is applied; integrity protection is applied on the deciphered NAS PDU; + * - Deciphering is applied on the encoded NAS PDU only (but not on any other IE of SECURITY PROTECTED NAS MESSAGE) since the SN is used for deciphering; + * - if the NAS PDU is security protected (without error) the UL NAS COUNT is incremented + * @param p_NasSecurityByRef (by reference) + * @param p_NAS_DedicatedInformation + * @return template (value) NG_NasEmu_DecodingInfo_Type + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NG_DecipherAndDecodeNasPdu(inout NG_NasSecurity_Type p_NasSecurityByRef, + octetstring p_NAS_DedicatedInformation) return template (value) NG_NasEmu_DecodingInfo_Type + { + var template (value) NG_NasEmu_DecodingInfo_Type v_DecodingInfo := cs_NG_DecodingInfo_Init; // NasIndication := omit, IntegrityError := false + var NG_NasEmu_DecodedNasPduUL_Type v_DecodedNasPduUL; + var octetstring v_IntegrityProtectedOctets; + var NG_SECURITY_PROTECTED_NAS_MESSAGE v_SecurityProtectedNasMsg; + var MessageAuthenticationCode v_ContainedMac; + var MessageAuthenticationCode v_CalculatedMac; + var NG_NasEmu_SN v_SequenceNumber; + var NG_NAS_Message v_EncodedNasPdu; + var NasCount_Type v_CountUL; + var SecurityHeaderType v_SecurityHeader; + + // Decode NAS message: message is either SECURITY_PROTECTED_NAS_MESSAGE or non-protected NAS message + v_DecodedNasPduUL := f_NG_NasEmu_DecodeMsg(p_NAS_DedicatedInformation); + + if (ischosen(v_DecodedNasPduUL.Invalid)) { + return v_DecodingInfo; // v_DecodingInfo is {omit, false} + } + + if (ischosen(v_DecodedNasPduUL.Msg.security_Protected_Nas_Message)) { // SECURITY_PROTECTED_NAS_MESSAGE + + v_SecurityProtectedNasMsg := v_DecodedNasPduUL.Msg.security_Protected_Nas_Message; + + v_SecurityHeader := v_SecurityProtectedNasMsg.securityHeaderType; + v_ContainedMac := v_SecurityProtectedNasMsg.messageAuthenticationCode; + v_SequenceNumber := oct2int(v_SecurityProtectedNasMsg.sequenceNumber); + v_EncodedNasPdu := v_SecurityProtectedNasMsg.plainNASMessage; + v_CountUL := f_NG_NasSecurity_EstimateCOUNT(p_NasSecurityByRef.NasCount.UL, v_SequenceNumber); + + + if ((not p_NasSecurityByRef.SecurityStarted) and (v_SecurityHeader != tsc_SHT_IntegrityProtected)) { + /* Note: A UE is allowed to transmit a security protected Reg request (Security header set to '0001'B) + * at the initial registration in case the USIM used has a valid security context */ + + f_NasEmulationError(__FILE__, __LINE__, "security protected PDU received but security is not started"); + return v_DecodingInfo; // v_DecodingInfo is {omit, false} + + } else { + if (p_NasSecurityByRef.SecurityStarted) { + + // CHECK INTEGRITY + v_IntegrityProtectedOctets := v_SecurityProtectedNasMsg.sequenceNumber & v_EncodedNasPdu; + v_CalculatedMac := fx_NG_NasIntegrityAlgorithm(v_IntegrityProtectedOctets, + p_NasSecurityByRef.Integrity.Algorithm, + p_NasSecurityByRef.Integrity.K_NAS, + v_CountUL, + p_NasSecurityByRef.BearerId, + tsc_DirectionUL); + if (v_ContainedMac == v_CalculatedMac) { + p_NasSecurityByRef.NasCount.UL := v_CountUL; /* write back the latest count value */ + + } else { + // UL NAS COUNT is not updated in case of integrity error + v_DecodingInfo.IntegrityError := true; + } + + // DECIPHERING: + if ((v_SecurityHeader == tsc_SHT_IntegrityProtected_Ciphered) or + (v_SecurityHeader == tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext)) { + + v_EncodedNasPdu := fx_NG_NasDeciphering(v_EncodedNasPdu, + p_NasSecurityByRef.Ciphering.Algorithm, + p_NasSecurityByRef.Ciphering.K_NAS, + v_CountUL, + p_NasSecurityByRef.BearerId); + } + } else { + // NAS security not started yet, but e.g. in case of REG REQ + p_NasSecurityByRef.NasCount.UL := v_CountUL; /* write back the latest count value */ + } + // Decode NAS message + v_DecodedNasPduUL := f_NG_NasEmu_DecodeMsg(v_EncodedNasPdu); + if (ischosen(v_DecodedNasPduUL.Invalid)) { + // Do nothing: v_DecodingInfo.NasIndication remains omit + } else { + v_DecodingInfo.NasIndication := cs_NG_NAS_MSG_Indication(p_NasSecurityByRef, + v_SecurityHeader, + v_CountUL, + v_DecodedNasPduUL.Msg); + } + } + } else { // non security protected PDU + v_DecodingInfo.NasIndication := cs_NG_NAS_MSG_Indication(p_NasSecurityByRef, + tsc_SHT_NoSecurityProtection, + p_NasSecurityByRef.NasCount.UL, /* Note: NAS-Count shall be ignored by the test case + in case of non-protected messages */ + v_DecodedNasPduUL.Msg); + } + return v_DecodingInfo; + } + + //**************************************************************************** + // Configuration Handling + //---------------------------------------------------------------------------- + /* + * @desc handle configuration of the NAS emulation (NAS_CTRL_REQ) + * @param p_Port + * @param p_NasSecurityByRef (by reference) + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + altstep a_NG_NasEmu_ConfigurationHandler(NG_NASEMU_CTRL_PORT p_Port, + inout NG_NasSecurity_Type p_NasSecurityByRef) + { + var NG_NAS_CTRL_REQ v_ConfigAsp; + var NasCountInfo_Type v_NasCountInfo; + + [] p_Port.receive(cr_NG_NAS_CTRL_Security_REQ) -> value v_ConfigAsp { /* NAS SECURITY */ + if (ischosen(v_ConfigAsp.Request.Security.StartRestart)) { /* Start NAS Security */ + p_NasSecurityByRef.SecurityStarted := true; + p_NasSecurityByRef.Integrity := v_ConfigAsp.Request.Security.StartRestart.Integrity; + p_NasSecurityByRef.Ciphering := v_ConfigAsp.Request.Security.StartRestart.Ciphering; + if (ispresent(v_ConfigAsp.Request.Security.StartRestart.NasCountReset)) { + p_NasSecurityByRef.NasCount.UL := f_NasCountInit(); + p_NasSecurityByRef.NasCount.DL := f_NasCountInit(); + } + } else { /* Release: Reset NAS Security */ + p_NasSecurityByRef := f_NG_NasEmu_NasSecurity_Init(); + } + if (v_ConfigAsp.Common.ControlInfo.CnfFlag) { + p_Port.send(cs_NG_NAS_CTRL_Security_CNF); + } + } + [] p_Port.receive(cr_NG_NAS_CTRL_NasCount_REQ) -> value v_ConfigAsp { /* NAS COUNT */ + if (ischosen(v_ConfigAsp.Request.NasCount.Set)) { + v_NasCountInfo := v_ConfigAsp.Request.NasCount.Set; + if (ispresent(v_NasCountInfo.UL)) { + p_NasSecurityByRef.NasCount.UL := v_NasCountInfo.UL; + } /* else: keep as it is */ + if (ispresent(v_NasCountInfo.DL)) { + p_NasSecurityByRef.NasCount.DL := v_NasCountInfo.DL; + } /* else: keep as it is */ + if (v_ConfigAsp.Common.ControlInfo.CnfFlag) { + p_Port.send(cs_NG_NAS_CTRL_NasCountSet_CNF); + } + } else if (ischosen(v_ConfigAsp.Request.NasCount.Get)) { + if (v_ConfigAsp.Common.ControlInfo.CnfFlag) { + p_Port.send(cs_NG_NAS_CTRL_NasCountGet_CNF(p_NasSecurityByRef.NasCount)); + } + } + } + } +} diff --git a/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_CtrlAspTypes.ttcn b/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_CtrlAspTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a5c26cb6b310a254ac091effc4c22b8dda34be1c --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_CtrlAspTypes.ttcn @@ -0,0 +1,80 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2018-12-17 17:07:06 +0100 (Mon, 17 Dec 2018) $ +// $Rev: 23499 $ +/******************************************************************************/ + +module NG_NasEmu_CtrlAspTypes { + import from CommonDefs all; + import from NasEmu_Common4G5G all; + + //**************************************************************************** + + //---------------------------------------------------------------------------- + /* Primitive for Configuration and Control of NAS Security */ + // Note: + // In the primitives only the COUNT is handled (rather than SQN and NasOverflowCounter); + // to deal with SQN and NasOverflowCounter there are common TTCN functions: + // function f_EutranNasCount_GetSQN(NasCount_Type p_Count) return integer; + // function f_EutranPdcpCount_GetOverflowCounter(NasCount_Type) return integer; + // function f_EutranPdcpCount_Set(integer p_OverflowCounter, integer p_SQN) return NasCount_Type; + + type record NG_NAS_SecurityInfo_Type { /* ciphering/integrity algorithm and key */ + B4_Type Algorithm, /* acc. to 24.501 cl. 9.10.3.32 NAS security algorithms */ + B128_Key_Type K_NAS /* key acc. 33.501 Figure 6.2-2 (K_NASint, K_NASenc) */ + }; + + type record NG_NAS_SecurityStartRestart_Type { + NG_NAS_SecurityInfo_Type Integrity optional, /* omit: keep integrity protection as it is */ + NG_NAS_SecurityInfo_Type Ciphering optional, /* omit: keep ciphering as it is */ + Null_Type NasCountReset optional /* omit: maintain NAS COUNT */ + }; + + type union NG_NAS_Security_Type { /* to download or reset NAS security algorithms and keys and to reset NAS COUNT; + in DL security protection is applied acc. to the SecurityProtection info of + the NAS_MSG_Request_Type; + in the UL if a security protected NAS PDU is received it is assumed to be ciphered + (this is because the SECURITY MODE COMMAND is already ciphered for NAS); + (Note: if the latter assumption is not applicable, ciphering needs to be started explicitly); + the NAS emulation shall distinguish between security protected and non-security protected NAS PDUs */ + NG_NAS_SecurityStartRestart_Type StartRestart, + Null_Type Release + }; + + type union NG_NasCtrlRequest_Type { + NG_NAS_Security_Type Security, /* StartRestart/Release of NAS security */ + NAS_CountReq_Type NasCount /* to set or enquire NAS COUNT */ + }; + + type record NG_NAS_CTRL_REQ { + NasCtrlReqAspCommonPart_Type Common, + NG_NasCtrlRequest_Type Request + }; + + type record NG_NAS_CTRL_CNF { + NasCtrlCnfAspCommonPart_Type Common, + NasCtrlConfirm_Type Confirm + }; + + //**************************************************************************** + + group Port_Definitions { + + type port NG_NASCTRL_PORT message { /* EUTRA/NR PTC: Port for configuration of NAS emulation */ + out NG_NAS_CTRL_REQ; + in NG_NAS_CTRL_CNF; + }; + + type port NG_NASEMU_CTRL_PORT message { /* NASEMU PTC: Port for configuration of NAS emulation */ + out NG_NAS_CTRL_CNF; + in NG_NAS_CTRL_REQ; + }; + + } // End group Port_Definitions + +} diff --git a/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_CtrlFunctions.ttcn b/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_CtrlFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..59880e5daf75d04668ea2029138b0aa6e1671c5b --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NG_NasEmu_CtrlFunctions.ttcn @@ -0,0 +1,211 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-03-20 03:51:00 +0100 (Sun, 20 Mar 2022) $ +// $Rev: 32851 $ +/******************************************************************************/ + +module NG_NasEmu_CtrlFunctions { + import from CommonDefs all; + import from NG_NasEmu_CtrlAspTypes all; + import from NasEmu_Common4G5G all; + + //**************************************************************************** + // Configuration of NAS security + //---------------------------------------------------------------------------- + + template (value) NG_NAS_SecurityStartRestart_Type cs_NG_NAS_SecurityInit(B4_Type p_IntegrityAlgorithm, + B128_Key_Type p_K_NASint, + B4_Type p_CipheringAlgorithm, + B128_Key_Type p_K_NASenc, + template (omit) Null_Type p_NasCountReset := true) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Integrity := { + Algorithm := p_IntegrityAlgorithm, + K_NAS := p_K_NASint + }, + Ciphering := { + Algorithm := p_CipheringAlgorithm, + K_NAS := p_K_NASenc + }, + NasCountReset := p_NasCountReset + }; + + template (value) NG_NAS_CTRL_REQ cas_NG_NasSecurityStart_REQ(template (value) NG_NAS_SecurityStartRestart_Type p_SecurityStartRestart) := + { /* Note: NAS security seems to be cell independent */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := cs_NasCtrlReqAspCommonPart, + Request := { + Security := { + StartRestart := p_SecurityStartRestart + } + } + }; + + template (value) NG_NAS_CTRL_REQ cas_NG_NasSecurityRelease_REQ := + { /* @status APPROVED (NR5GC) */ + /* Note: NAS security is cell independent */ + Common := cs_NasCtrlReqAspCommonPart, + Request := { + Security := { + Release := true + } + } + }; + + template (present) NG_NAS_CTRL_CNF car_NG_NasSecurity_CNF := + { /* Note: NAS security seems to be cell independent */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := cr_NasCtrlCnfAspCommonPart, + Confirm := { + Security := true + } + }; + + //**************************************************************************** + // Dealing with DL NAS COUNT + //---------------------------------------------------------------------------- + + template (value) NG_NAS_CTRL_REQ cas_NG_NasCountGet_REQ := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + Common := cs_NasCtrlReqAspCommonPart, + Request := { + NasCount := { + Get := true + } + } + }; + + template (present) NG_NAS_CTRL_CNF car_NG_NasCountGet_CNF := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + Common := cr_NasCtrlCnfAspCommonPart, + Confirm := { + NasCount := { + Get := { + UL := ?, + DL := ? + } + } + } + }; + + template (value) NG_NAS_CTRL_REQ cas_NG_NasCountSet_REQ(template (omit) NasCount_Type p_NASULCount, + template (omit) NasCount_Type p_NASDLCount) := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + Common := cs_NasCtrlReqAspCommonPart, + Request := { + NasCount := { + Set := { + UL := p_NASULCount, + DL := p_NASDLCount + } + } + } + }; + + template (present) NG_NAS_CTRL_CNF car_NG_NasCountSet_CNF := + { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + Common := cr_NasCtrlCnfAspCommonPart, + Confirm := { + NasCount := { + Set := true + } + } + }; + + //**************************************************************************** + /* + * @desc Common function to configure NAS security + * @param p_Port + * @param p_NAS_CTRL_REQ + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_SS_NG_NAS_SecurityConfig(NG_NASCTRL_PORT p_Port, + template (value) NG_NAS_CTRL_REQ p_NAS_CTRL_REQ) + { + p_Port.send(p_NAS_CTRL_REQ); + if (valueof(p_NAS_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + p_Port.receive(car_NG_NasSecurity_CNF); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc configure NAS security at the NasEmu + * @param p_Port + * @param p_NAS_Integrity + * @param p_NAS_Ciphering + * @param p_NasCountReset (default value: true) + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_SS_NG_NAS_ConfigureSecurity(NG_NASCTRL_PORT p_Port, + NG_NAS_SecurityInfo_Type p_NAS_Integrity, + NG_NAS_SecurityInfo_Type p_NAS_Ciphering, + template (omit) Null_Type p_NasCountReset := true) + { + f_SS_NG_NAS_SecurityConfig(p_Port, + cas_NG_NasSecurityStart_REQ(cs_NG_NAS_SecurityInit(p_NAS_Integrity.Algorithm, + p_NAS_Integrity.K_NAS, + p_NAS_Ciphering.Algorithm, + p_NAS_Ciphering.K_NAS, + p_NasCountReset))); + } + + //---------------------------------------------------------------------------- + /* + * @desc common function to query NAS COUNT from the NAS emulator + * @param p_Port + * @return NasCountInfo_Type + * @status APPROVED (NR5GC, NR5GC_IRAT) + */ + function f_SS_NG_NAS_CountGet(NG_NASCTRL_PORT p_Port) return NasCountInfo_Type + { + var NG_NAS_CTRL_CNF v_NG_NAS_CTRL_CNF; + + p_Port.send(cas_NG_NasCountGet_REQ); + p_Port.receive(car_NG_NasCountGet_CNF) -> value v_NG_NAS_CTRL_CNF; + return v_NG_NAS_CTRL_CNF.Confirm.NasCount.Get; + } + + //---------------------------------------------------------------------------- + /* + * @desc common function to set NAS COUNT at the NAS emulator + * @param p_Port + * @param p_NASDLCount + * @param p_NASULCount (default value: omit) + * @status APPROVED (NR5GC, NR5GC_IRAT) + */ + function f_SS_NG_NAS_CountSet(NG_NASCTRL_PORT p_Port, + template (omit) NasCount_Type p_NASDLCount, + template (omit) NasCount_Type p_NASULCount := omit) + { + p_Port.send(cas_NG_NasCountSet_REQ(p_NASULCount, p_NASDLCount)); + p_Port.receive(car_NG_NasCountSet_CNF); + } + + /* + * @desc function to query DL NAS COUNT from the NAS emulator // @sic R5s110382 sic@ + * @param p_Port + * @return O4_Type + */ + function f_SS_NG_NAS_CountGetDLNext(NG_NASCTRL_PORT p_Port) return O4_Type + { + var NasCountInfo_Type v_NasCountInfo := f_SS_NG_NAS_CountGet(p_Port); + return f_NasSecurity_IncrementCOUNT(v_NasCountInfo.DL); + } + + /* + * @desc function to query UL NAS COUNT from the NAS emulator + * @param p_Port + * @return O4_Type + */ + function f_SS_NG_NAS_CountGetULNext(NG_NASCTRL_PORT p_Port) return O4_Type + { + var NasCountInfo_Type v_NasCountInfo := f_SS_NG_NAS_CountGet(p_Port); + return f_NasSecurity_IncrementCOUNT(v_NasCountInfo.UL); + } +} diff --git a/ttcn/Lib3GPP/NasEmulation/NG_SecurityDefinitionsAndExternalFunctions.ttcn b/ttcn/Lib3GPP/NasEmulation/NG_SecurityDefinitionsAndExternalFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c5292528d7aecc59d95ea48ce11f8a685425ecfe --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NG_SecurityDefinitionsAndExternalFunctions.ttcn @@ -0,0 +1,37 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2018-12-01 16:37:27 +0100 (Sat, 01 Dec 2018) $ +// $Rev: 23218 $ +/******************************************************************************/ + +module NG_SecurityDefinitionsAndExternalFunctions { + + import from CommonDefs all; + + //============================================================================ + external function fx_NG_NasIntegrityAlgorithm(octetstring p_EncodedNasPdu, + B4_Type p_IntegrityAlgorithm, + B128_Key_Type p_KNASint, + NasCount_Type p_NasCount, + B5_Type p_BearerId, + MAC_Direction_Type p_Direction) return MessageAuthenticationCode; + + external function fx_NG_NasCiphering(octetstring p_EncodedNasPdu, + B4_Type p_CipheringAlgorithm, + B128_Key_Type p_KNASenc, + NasCount_Type p_NasCount, + B5_Type p_BearerId) return octetstring; + + external function fx_NG_NasDeciphering(octetstring p_CipheredNasMsg, + B4_Type p_CipheringAlgorithm, + B128_Key_Type p_KNASenc, + NasCount_Type p_NasCount, + B5_Type p_BearerId) return octetstring; + + //---------------------------------------------------------------------------- +} diff --git a/ttcn/Lib3GPP/NasEmulation/NasEmu5G_AspTypes_NR.ttcn b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_AspTypes_NR.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..589338231fb6676c7d702b9dc892c890102c44fc --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_AspTypes_NR.ttcn @@ -0,0 +1,58 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2019-05-29 17:47:16 +0200 (Wed, 29 May 2019) $ +// $Rev: 24710 $ +/******************************************************************************/ + +module NasEmu5G_AspTypes_NR { + import from NR_CommonDefs all; + + group System_Interface { + + //**************************************************************************** + // ASP Type Definitions: + //**************************************************************************** + + type record NR_RRC_PDU_REQ { + NR_ReqAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : SRB0, SRB1, SRB2 + * RlcBearerRouting : TTCN provides the id of the cell in which the SS shall send the data out to the UE (for non-split bearers in general same as CellId) + * TimingInfo : Now in normal cases; + * For latency tests TimingInfo can be set to the SFN/subframe in which the RRC messages shall be sent out + * NOTE 1: if the RRC PDU is too long to be sent in one TTI the TimingInfo corresponds to the first TTI + * NOTE 2: the TimingInfo is not changed by the NAS Emu (i.e. the timing info as coming from the test case (SRB_COMMON_REQ) is handed through by the NAS Emu) + * ControlInfo + * CnfFlag:=false; + * FollowOnFlag + * true: Indicates that the message(s) to be sent on the same TTI will follow + * NOTE 1: If the TimingInfo is not the same for messages to be sent on the same TTI, the SS shall produce an error + * NOTE 2: the follow on flag applies only for messages of the same SRB + * false: Indicates that no more message(s) will follow */ + NR_RRC_MSG_Request_Type RrcPdu + }; + type record NR_RRC_PDU_IND { /* common ASP to receive PDUs from SRB0, SRB1 or SRB2 */ + NR_IndAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : SRB0, SRB1, SRB2 + * RlcBearerRouting : The SS shall provide the id of the cell in which the data has been sent from the UE + * TimingInfo : time when message has been received (frame and sub-frame number); this is handed through to the test case by the NAS emulation + * NOTE: normally an RRC PDU is expected in one TTI; nevertheless if it is spread over more than one TTIs TimingInfo shall refer to the end of the PDU i.e. to the last RLC PDU being received; + * Status : OK or RRC integrity error */ + NR_RRC_MSG_Indication_Type RrcPdu + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port NASEMU_NR_SYSTEM_PORT message { /* NASEMU PTC: Port for Sending/Receiving data to/from the SYSTEM Interface */ + out NR_RRC_PDU_REQ; + in NR_RRC_PDU_IND; + }; + + } // End group System_Interface +} diff --git a/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Component_NRNG.ttcn b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Component_NRNG.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e56daa9a2d3a7edfa514a4a8c60752d3562c1c0f --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Component_NRNG.ttcn @@ -0,0 +1,53 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2021-03-20 15:05:59 +0100 (Sat, 20 Mar 2021) $ +// $Rev: 30244 $ +/******************************************************************************/ + +module NasEmu5G_Component_NRNG { + import from NG_NasEmu_CtrlAspTypes all; + import from NasEmu5G_Component_NR_BASE all; + import from NR_Component_NR5GC all; + import from NasEmu_Common4G5G all; + + //---------------------------------------------------------------------------- + // Component definition: + type component NASEMU_NRNG_PTC extends NASEMU_NR_BASE_PTC { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + port NG_NASEMU_CTRL_PORT CTRL; + port NASEMU5G_CO_ORD_PORT EPS; + }; + + //---------------------------------------------------------------------------- + /* + * @desc Create NASEMU, connect it with NR5G PTC and map the system ports + * @param p_System + * @param p_Nr + * @return NASEMU_NRNG_PTC + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NasEmu5G_CreateConnectAndMap_NRNG(NASEMU_NR_SYSTEM p_System, + NR5GC_PTC p_Nr) return NASEMU_NRNG_PTC + { + var NASEMU_NRNG_PTC v_NASEMU_NRNG_PTC := null; + + if (p_Nr != null) { + + // create NAS emulation: + v_NASEMU_NRNG_PTC := NASEMU_NRNG_PTC.create("NASEMU_NRNG") alive; // @sic R5s210270 sic@ + + // connect NAS emulation: + connect(p_Nr:NASCTRL, v_NASEMU_NRNG_PTC:CTRL); + connect(p_Nr:SRB, v_NASEMU_NRNG_PTC:TC_SRB); + + // map NASEMU system ports: + map(v_NASEMU_NRNG_PTC:SYS_SRB, p_System:NR_SRB); + } + return v_NASEMU_NRNG_PTC; + } + +} diff --git a/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Component_NR_BASE.ttcn b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Component_NR_BASE.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6e17d7106fb98d4e87a2a6ce1730fcac499eb044 --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Component_NR_BASE.ttcn @@ -0,0 +1,55 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2021-03-20 15:05:59 +0100 (Sat, 20 Mar 2021) $ +// $Rev: 30244 $ +/******************************************************************************/ + +module NasEmu5G_Component_NR_BASE { + import from NR_ASP_SrbDefs all; + import from NasEmu5G_AspTypes_NR all; + import from NR_Component_Base all; + + //---------------------------------------------------------------------------- + // Component definition: + type component NASEMU_NR_BASE_PTC { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + port NASEMU_NR_SYSTEM_PORT SYS_SRB; + port NASEMU_NR_SRB_PORT TC_SRB; + }; + + type component NASEMU_NR_SYSTEM { /* @status APPROVED (ENDC, IMS, NR5GC, NR5GC_IRAT, POS) */ + port NASEMU_NR_SYSTEM_PORT NR_SRB; + }; + + //---------------------------------------------------------------------------- + /* + * @desc Create NASEMU, connect it with NR5G PTC and map the system ports + * @param p_System + * @param p_NR_BASE + * @return NASEMU_NR_BASE_PTC + * @status APPROVED (ENDC) + */ + function f_NasEmu5G_CreateConnectAndMap_NR_BASE(NASEMU_NR_SYSTEM p_System, + NR_BASE_PTC p_NR_BASE) return NASEMU_NR_BASE_PTC + { + var NASEMU_NR_BASE_PTC v_NASEMU_NR_BASE_PTC := null; + + if (p_NR_BASE != null) { + + // create NAS emulation: + v_NASEMU_NR_BASE_PTC := NASEMU_NR_BASE_PTC.create("NASEMU_NR_BASE") alive; // @sic R5s210270 sic@ + + // connect NAS emulation: + connect(p_NR_BASE:SRB, v_NASEMU_NR_BASE_PTC:TC_SRB); + + // map NASEMU system ports: + map(v_NASEMU_NR_BASE_PTC:SYS_SRB, p_System:NR_SRB); + } + return v_NASEMU_NR_BASE_PTC; + } + +} diff --git a/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Main_NRNG.ttcn b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Main_NRNG.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..155c5d902ecb0a368720e540b22aa29552bb22e9 --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NasEmu5G_Main_NRNG.ttcn @@ -0,0 +1,331 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2021-04-28 17:21:30 +0200 (Wed, 28 Apr 2021) $ +// $Rev: 30488 $ +/******************************************************************************/ + +module NasEmu5G_Main_NRNG { + import from NR_RRC_ASN1_Definitions language "ASN.1:2002" all with {encode "UNALIGNED_PER_OctetAligned"}; + import from NR_CommonDefs all; + import from NR_ASP_SrbDefs all; + import from NasEmu_Common4G5G all; + import from Common4G5G_Templates all; + import from NasEmu5G_AspTypes_NR all; + import from NasEmu5G_Component_NRNG all; + import from NasEmu5G_Component_NR_BASE all; + import from NG_NasEmu_Common all; + import from NG_NAS_MsgContainers all; + import from NR_RRC_Templates all; + import from CommonDefs all; + import from NG_SecurityDefinitionsAndExternalFunctions all; + + //---------------------------------------------------------------------------- + + template (present) NR_SRB_COMMON_REQ car_NRNG_SignallingAspFromTC := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := ?, + Signalling := { + Rrc := *, + Nas := * + } + }; + + template (value) NR_SRB_COMMON_IND cas_NRNG_SignallingAspToTC(template (value) NR_IndAspCommonPart_Type p_Common, + template (omit) NR_RRC_MSG_Indication_Type p_RrcMsg := omit, + template (omit) NG_NAS_MSG_IndicationList_Type p_NasMsg := omit) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := p_Common, + Signalling := { + Rrc := p_RrcMsg, + Nas := p_NasMsg + } + }; + + //---------------------------------------------------------------------------- + + template (present) NR_RRC_PDU_IND car_NRNG_PduFromSYS := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := ?, + RrcPdu := ? + }; + + template (value) NR_RRC_PDU_REQ cas_NRNG_PduToSYS(template (value) NR_ReqAspCommonPart_Type p_Common, + template (value) NR_RRC_MSG_Request_Type p_RRC_MSG_Request) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Common := p_Common, + RrcPdu := p_RRC_MSG_Request + }; + + template (value) NR_RRC_MSG_Request_Type cs_NR_RRC_MSG_RequestDCCH(template (value) DL_DCCH_Message p_DcchRrcPdu) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + Dcch := p_DcchRrcPdu + }; + + //**************************************************************************** + // Templates: RRC Signalling + //---------------------------------------------------------------------------- + // DLInformationTransfer (38.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_NR_DLInformationTransfer(RRC_TransactionIdentifier p_RRC_TI, + template (value) DedicatedNAS_Message p_NAS_DedicatedMsg) := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + message_ := { + c1 := { + dlInformationTransfer := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + dlInformationTransfer := { + dedicatedNAS_Message := p_NAS_DedicatedMsg, + lateNonCriticalExtension := omit, + nonCriticalExtension := omit + } + } + } + } + } + }; + + template (value) RRCReconfiguration_v1530_IEs cs_38508_RRCReconfiguration_NonCriticalExtension_AllOmit := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + masterCellGroup := omit, + fullConfig := omit, + dedicatedNAS_MessageList := omit, + masterKeyUpdate := omit, + dedicatedSIB1_Delivery := omit, + dedicatedSystemInformationDelivery := omit, + otherConfig := omit, + nonCriticalExtension := omit + }; + //---------------------------------------------------------------------------- + /* + * @desc Handling of ASPs coming from the test cases + * @param p_NG_NasSecurityByRef (by reference) + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + altstep a_AspFromTestcaseHandler_NRNG(inout NG_NasSecurity_Type p_NG_NasSecurityByRef) runs on NASEMU_NR_BASE_PTC + { + var NR_SRB_COMMON_REQ v_AspFromTC; + var NR_ReqAspCommonPart_Type v_ReqAspCommonPart; + var template (value) NR_RRC_MSG_Request_Type v_RrcPduToSYS; + var NG_NAS_MSG_Request_Type v_NG_NasPduFromTC; + var template (value) DL_DCCH_Message v_DL_DCCH_Message; + var DedicatedNAS_Message v_NAS_DedicatedMsg[maxDRB]; // we use an array as long as this is an inline type definition in ASN.1 + var integer v_NoOfNasPdus := 0; + var boolean v_RrcPduIsPresent; + var boolean v_NasPduIsPresent; + var integer I; + + [] TC_SRB.receive(car_NRNG_SignallingAspFromTC) -> value v_AspFromTC { + + v_ReqAspCommonPart := v_AspFromTC.Common; + v_RrcPduIsPresent := ispresent(v_AspFromTC.Signalling.Rrc); + v_NasPduIsPresent := ispresent(v_AspFromTC.Signalling.Nas); + + if (v_NasPduIsPresent) { + // Note: in case of RRCReconfiguration there may be more than one NAS PDUs + v_NoOfNasPdus := lengthof(v_AspFromTC.Signalling.Nas); // Note: per ASN.1 definition length is restricted to maxDRB + for (I:=0; I < v_NoOfNasPdus; I:= I + 1) { + v_NG_NasPduFromTC := v_AspFromTC.Signalling.Nas[I]; + v_NAS_DedicatedMsg[I] := f_EncodeAndCipher_NG_NasPdu(p_NG_NasSecurityByRef, v_NG_NasPduFromTC); // encode NAS PDU; apply NAS security (if reqired) + } + } + if (v_RrcPduIsPresent) { + // ******* RRC PDU (containing RRC control information) + v_RrcPduToSYS := v_AspFromTC.Signalling.Rrc; + + if (v_NasPduIsPresent) { + // ***** NAS PDU BEING PIGGY BACKED + if (not ischosen(v_RrcPduToSYS.Dcch)) { + // ***** SRB0 + f_NasEmulationError(__FILE__, __LINE__, "no piggy-backing possible for CCCH message"); + return; /* don't send anything */ + + } else { + // ***** SRB1/2/3 + v_DL_DCCH_Message := v_RrcPduToSYS.Dcch; /* extract RRC message; + Note: since v_RrcPduToSYS is a union v_RrcPduToSYS.Dcch is never omit */ + + if (ischosen(v_DL_DCCH_Message.message_.c1.rrcReconfiguration)) { /* RRC message is RRCConnectionReconfiguration */ + // *** RRC RECONFIGURATION: + if ((v_NoOfNasPdus > 0) and not isvalue(v_DL_DCCH_Message.message_.c1.rrcReconfiguration.criticalExtensions.rrcReconfiguration.nonCriticalExtension)) { // @sic R5s210463 sic@ + v_DL_DCCH_Message.message_.c1.rrcReconfiguration.criticalExtensions.rrcReconfiguration.nonCriticalExtension := cs_38508_RRCReconfiguration_NonCriticalExtension_AllOmit; + } + for (I:=0; I < v_NoOfNasPdus; I:= I + 1) { + v_DL_DCCH_Message.message_.c1.rrcReconfiguration.criticalExtensions.rrcReconfiguration.nonCriticalExtension.dedicatedNAS_MessageList[I] := + v_NAS_DedicatedMsg[I]; + } + + } else if (ischosen(v_DL_DCCH_Message.message_.c1.dlInformationTransfer)) { // RRC message is DLInformationTransfer + // *** DL INFORMATION TRANSFER: + if (v_NoOfNasPdus > 1) { + f_NasEmulationError(__FILE__, __LINE__, "too many NAS PDUs (shall be a maximun of 1 PDU for DLInformationTransfer)"); + return; // don't send anything + } else { + v_DL_DCCH_Message.message_.c1.dlInformationTransfer.criticalExtensions.dlInformationTransfer.dedicatedNAS_Message := + v_NAS_DedicatedMsg[0]; + } + } else { + // *** OTHER RRC PDU: + f_NasEmulationError(__FILE__, __LINE__, "RRC message can not carry piggy-backed NAS PDU"); + return; /* don't do anything else */ + } + v_RrcPduToSYS := cs_NR_RRC_MSG_RequestDCCH(v_DL_DCCH_Message); + } + } + } else { + // ******* NAS PDU only: + if (not v_NasPduIsPresent) { + f_NasEmulationError(__FILE__, __LINE__, "neither RRC nor NAS PDU to be sent"); + return; /* don't send anything */ + } else { + if (v_NoOfNasPdus > 1) { + f_NasEmulationError(__FILE__, __LINE__, "too many NAS PDUs (shall be a maximun of 1 PDU for DLInformationTransfer)"); + return; /* don't send anything */ + } else { + v_RrcPduToSYS := cs_NR_RRC_MSG_RequestDCCH(cs_NR_DLInformationTransfer(tsc_NR_RRC_TI_Def, v_NAS_DedicatedMsg[0])); + } + } + } + + SYS_SRB.send(cas_NRNG_PduToSYS(v_ReqAspCommonPart, v_RrcPduToSYS)); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc handling of ASPs containing an RRC PDU from the system adaptor + * @param p_NG_NasSecurityByRef (by reference) + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + altstep a_AspFromSystemAdaptorHandler_NRNG(inout NG_NasSecurity_Type p_NG_NasSecurityByRef) runs on NASEMU_NR_BASE_PTC + { + var NR_RRC_PDU_IND v_AspFromSYS; + var NR_RRC_MSG_Indication_Type v_RrcIndication; + var UL_DCCH_Message v_RrcPdu; + var ULInformationTransfer_IEs v_ULInformationTransfer; + var template (value) NR_SRB_COMMON_IND v_SRB_COMMON_IND; + var template (value) NG_NasEmu_DecodingInfo_Type v_DecodingInfo; + var DedicatedNAS_Message v_NAS_DedicatedMsg[maxDRB]; // even though there is always only one we use an array + var integer v_NoOfNasPdus; + var boolean v_RrcPduPresent; + var boolean v_IntegrityError; + var integer I; + + [] SYS_SRB.receive(car_NRNG_PduFromSYS) -> value v_AspFromSYS { + v_RrcIndication := v_AspFromSYS.RrcPdu; + v_SRB_COMMON_IND := cas_NRNG_SignallingAspToTC(v_AspFromSYS.Common); + + if (ischosen(v_RrcIndication.Ccch) or ischosen(v_RrcIndication.Ccch1)) { /* CCCH -> SRB0 */ + //@sic R5s191051 sic@ + v_SRB_COMMON_IND.Signalling.Rrc := v_RrcIndication; + + } else { /* DCCH -> SRB1/2/3 */ + v_RrcPdu := v_RrcIndication.Dcch; + v_RrcPduPresent := true; + v_NoOfNasPdus := 0; + v_IntegrityError := false; + + if (ischosen(v_RrcPdu.message_.c1)) { + + if (ischosen(v_RrcPdu.message_.c1.rrcSetupComplete)) { + // RRC SETUP COMPLETE + if (ischosen(v_RrcPdu.message_.c1.rrcSetupComplete.criticalExtensions.rrcSetupComplete)) { + v_NAS_DedicatedMsg[0] := v_RrcPdu.message_.c1.rrcSetupComplete.criticalExtensions.rrcSetupComplete.dedicatedNAS_Message; + v_NoOfNasPdus := 1; + } + + } else if (ischosen(v_RrcPdu.message_.c1.ulInformationTransfer)) { + // UL INFORMATION TRANSFER + if (ischosen(v_RrcPdu.message_.c1.ulInformationTransfer.criticalExtensions.ulInformationTransfer)) { + v_ULInformationTransfer := v_RrcPdu.message_.c1.ulInformationTransfer.criticalExtensions.ulInformationTransfer; + v_NAS_DedicatedMsg[0] := v_ULInformationTransfer.dedicatedNAS_Message; + v_RrcPduPresent := false; + v_NoOfNasPdus := 1; + } + } else if (ischosen(v_RrcPdu.message_.c1.rrcResumeComplete)) { + // RRC RESUME COMPLETE + if (ispresent(v_RrcPdu.message_.c1.rrcResumeComplete.criticalExtensions.rrcResumeComplete.dedicatedNAS_Message)) { // @sic R5s190214 sic@ + v_NAS_DedicatedMsg[0] := v_RrcPdu.message_.c1.rrcResumeComplete.criticalExtensions.rrcResumeComplete.dedicatedNAS_Message; + v_NoOfNasPdus := 1; + } + } else { + // OTHER RRC PDU + } + } else { // c1 only option at the moment + } + + if (v_RrcPduPresent) { + v_SRB_COMMON_IND.Signalling.Rrc := v_RrcIndication; + } + if (v_NoOfNasPdus > 0) { + for (I := 0; I < v_NoOfNasPdus; I := I + 1) { + v_DecodingInfo := f_NG_DecipherAndDecodeNasPdu(p_NG_NasSecurityByRef, v_NAS_DedicatedMsg[I]); + v_SRB_COMMON_IND.Signalling.Nas[I] := v_DecodingInfo.NasIndication; // omit if message cannot be decoded => shall lead to a test case error + v_IntegrityError := v_IntegrityError or valueof(v_DecodingInfo.IntegrityError); // valueof cannot be avoided here + } + if (v_IntegrityError) { // set Error choice of common part only if there is an error + if (ischosen(v_SRB_COMMON_IND.Common.Status.Error)) { /* there is already an error flagged by the SA */ + v_SRB_COMMON_IND.Common.Status.Error.Integrity.Nas := true; + } else { /* the error needs to be set */ + v_SRB_COMMON_IND.Common.Status := cs_IndicationStatus_NasIntegrityError; + } + } + } + } + TC_SRB.send(v_SRB_COMMON_IND); + } + } + + /* + * @desc Handling of NAS integrity returning the calculated MAC + * @param p_NasSecurityByRef (by reference) + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + altstep a_Check4GIntegrity (inout NG_NasSecurity_Type p_NasSecurityByRef) runs on NASEMU_NRNG_PTC + { + var NASEmu_CoOrd_REQ v_ReceivedMsg; + var NasCount_Type v_CountUL; + var MessageAuthenticationCode v_CalculatedMac; + + [] EPS.receive(cr_NASEmu_CoOrd_REQ) -> value v_ReceivedMsg + { + v_CountUL := f_NG_NasSecurity_EstimateCOUNT(p_NasSecurityByRef.NasCount.UL, v_ReceivedMsg.SequenceNumber); + v_CalculatedMac := fx_NG_NasIntegrityAlgorithm(v_ReceivedMsg.IntegrityProtectedOctets, + p_NasSecurityByRef.Integrity.Algorithm, + p_NasSecurityByRef.Integrity.K_NAS, + v_CountUL, + p_NasSecurityByRef.BearerId, + tsc_DirectionUL); + EPS.send(cs_NASEmu_CoOrd_CNF (v_CalculatedMac)); + } + } + + //**************************************************************************** + // Main Loop + //---------------------------------------------------------------------------- + /* + * @desc NAS emulation main loop (started by the MTC) + * @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) + */ + function f_NASEMU_MainLoop_NRNG() runs on NASEMU_NRNG_PTC + { + var NG_NasSecurity_Type v_NG_NasSecurityByRef := f_NG_NasEmu_NasSecurity_Init(); + while (true) { + alt { + [] a_NG_NasEmu_ConfigurationHandler(CTRL, v_NG_NasSecurityByRef); + [] a_AspFromTestcaseHandler_NRNG(v_NG_NasSecurityByRef); + [] a_AspFromSystemAdaptorHandler_NRNG(v_NG_NasSecurityByRef); + [] a_Check4GIntegrity(v_NG_NasSecurityByRef); // @sic 5G Integrity in 4G sic@ + [] any port.receive { + f_NasEmulationError(__FILE__, __LINE__, "unexpected message (skipped)"); + repeat; + } + } + } + } +} diff --git a/ttcn/Lib3GPP/NasEmulation/NasEmu_Common4G5G.ttcn b/ttcn/Lib3GPP/NasEmulation/NasEmu_Common4G5G.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a23cb15cab91a84769df4aef08aeac01c9a54109 --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/NasEmu_Common4G5G.ttcn @@ -0,0 +1,192 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2022-06-15 13:04:40 +0200 (Wed, 15 Jun 2022) $ +// $Rev: 33645 $ +/******************************************************************************/ + +module NasEmu_Common4G5G { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // NAS emulation: Common Control ASPs + //---------------------------------------------------------------------------- + type record NasCtrlReqAspControlInfo_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + boolean CnfFlag + }; + + type record NasCtrlReqAspCommonPart_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + NasCtrlReqAspControlInfo_Type ControlInfo + }; + + type record NasCtrlCnfAspCommonPart_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + // place holder only + }; + + type record NasCountInfo_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + NasCount_Type UL optional, /* UL NAS COUNT is the value corresponding to the latest PDU sent by the UE; + acc. 24.301 cl. 4.4.3.1 at the UE the NAS COUNT is initialised with 0; + => in TTCN (NAS emulation) NAS COUNT is initialised with its max. value; + omit: keep as it is */ + NasCount_Type DL optional /* DL NAS COUNT is the value corresponding to the latest PDU sent to the UE; + acc. 24.301 cl. 4.4.3.1 at the UE the NAS COUNT is initialised with 0; + => in TTCN (NAS emulation) NAS COUNT is initialised with its max. value; + omit: keep as it is */ + }; + + type union NAS_CountReq_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + Null_Type Get, + NasCountInfo_Type Set + }; + + type union NAS_CountCnf_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + NasCountInfo_Type Get, + Null_Type Set + }; + + type union NasCtrlConfirm_Type { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + Null_Type Security, + NAS_CountCnf_Type NasCount + }; + + //**************************************************************************** + // NAS emulation: Local definitions + //---------------------------------------------------------------------------- + + const boolean tsc_NasEmu_TerminateOnError := true; /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + + //**************************************************************************** + // NAS emulation: global information + //---------------------------------------------------------------------------- + + /* + * @desc initialise NAS COUNT + * @return NasCount_Type .. initial NAS COUNT + * Note: NAS COUNT for both UL and DL is the value of the last PDU being receive from or send to the UE; + * => as for both sides the initial value in a PDU shall be 0 (24.301 cl. 4.4.3.1) + * the internal value needs to be set to the maximum value (i.e. when this is incremented it results in 0) + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_NasCountInit() return NasCount_Type + { + var integer v_CountValue := (65536 * 256) - 1; + return int2oct(v_CountValue, 4); + } + + //**************************************************************************** + // NAS emulation: Configuration primitives + //---------------------------------------------------------------------------- + + template (value) NasCtrlCnfAspCommonPart_Type cs_NasCtrlCnfAspCommonPart := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) */ + // place holder only + }; + + template (value) NasCtrlReqAspCommonPart_Type cs_NasCtrlReqAspCommonPart(boolean p_CnfFlag := true) := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + ControlInfo := { + CnfFlag := p_CnfFlag + } + }; + + template (present) NasCtrlCnfAspCommonPart_Type cr_NasCtrlCnfAspCommonPart := + { /* @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS) */ + // place holder only + }; + + //**************************************************************************** + // NAS emulation: Error Handling + //---------------------------------------------------------------------------- + /* + * @desc wrapper to allow controlled termination of the NAS emu + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_NasEmulationError(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + var boolean v_TerminateOnError := tsc_NasEmu_TerminateOnError; + + if (v_TerminateOnError) { + f_SetVerdictInconc(p_FileName, p_LineNo, p_Msg); + } else { + f_ErrorLog(p_FileName, p_LineNo, p_Msg); + } + } + + //**************************************************************************** + // NAS emulation: auxiliary functions + //---------------------------------------------------------------------------- + /* + * @desc get the normal (long) SN from the COUNT + * @param p_Count + * @return NAS_SequenceNumber + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_NasSecurity_ExtractSNfromCOUNT(NasCount_Type p_Count) return NAS_SequenceNumber + { + return int2oct(oct2int(p_Count) mod 256, 1); + }; + + //---------------------------------------------------------------------------- + /* + * @desc increment COUNT (in DL) + * @param p_Count + * @return NasCount_Type .. incremented COUNT + * @status APPROVED (ENDC, IMS, IMS_IRAT, LTE, LTE_A_IRAT, LTE_A_PRO, LTE_A_R10_R11, LTE_A_R12, LTE_IRAT, MCX, NBIOT, NR5GC, NR5GC_IRAT, POS, UTRAN) + */ + function f_NasSecurity_IncrementCOUNT(NasCount_Type p_Count) return NasCount_Type + { + var integer v_CountValue := oct2int(p_Count); + v_CountValue := (v_CountValue + 1) mod (65536 * 256); // the 8 most significant bits are 0 (24.301 cl. 4.4.3.1) + return int2oct(v_CountValue, 4); + }; + + //---------------------------------------------------------------------------- + type record NASEmu_CoOrd_REQ { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + octetstring IntegrityProtectedOctets, + integer SequenceNumber + }; + + type record NASEmu_CoOrd_CNF { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + MessageAuthenticationCode MAC + }; + + template (value) NASEmu_CoOrd_REQ cs_NASEmu_CoOrd_REQ (octetstring p_IntegrityProtectedOctets, integer p_SequenceNumber) := { + /* @status APPROVED (NR5GC_IRAT) */ + IntegrityProtectedOctets := p_IntegrityProtectedOctets, + SequenceNumber := p_SequenceNumber + }; + + template (present) NASEmu_CoOrd_REQ cr_NASEmu_CoOrd_REQ := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + IntegrityProtectedOctets := ?, + SequenceNumber := ? + }; + + template (value) NASEmu_CoOrd_CNF cs_NASEmu_CoOrd_CNF (MessageAuthenticationCode p_MAC) := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + MAC := p_MAC + }; + + template (present) NASEmu_CoOrd_CNF cr_NASEmu_CoOrd_CNF := { /* @status APPROVED (NR5GC_IRAT) */ + MAC := ? + }; + + type port NASEMU4G_CO_ORD_PORT message { /* @status APPROVED (NR5GC_IRAT) */ + out NASEmu_CoOrd_REQ; + in NASEmu_CoOrd_CNF; + }; + + type port NASEMU5G_CO_ORD_PORT message { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + out NASEmu_CoOrd_CNF; + in NASEmu_CoOrd_REQ; + }; + +} diff --git a/ttcn/Lib3GPP/NasEmulation/module.mk b/ttcn/Lib3GPP/NasEmulation/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..17a9b844061ce005fd9cdb5c8fdf22d6480b1958 --- /dev/null +++ b/ttcn/Lib3GPP/NasEmulation/module.mk @@ -0,0 +1,13 @@ +sources:= \ + NasEmu_Common4G5G.ttcn \ + NG_NasEmu_CtrlAspTypes.ttcn + + #NasEmu5G_AspTypes_NR.ttcn \ + #NasEmu5G_Component_NR_BASE.ttcn \ + #NasEmu5G_Component_NRNG.ttcn \ + #NasEmu5G_Main_NRNG.ttcn \ + #NasEmu_Common4G5G.ttcn \ + #NG_NasEmu_Common.ttcn \ + #NG_NasEmu_CtrlAspTypes.ttcn \ + #NG_NasEmu_CtrlFunctions.ttcn \ + #NG_SecurityDefinitionsAndExternalFunctions.ttcn diff --git a/ttcn/Lib3GPP/PicsPixit/EUTRA_NR_Parameters.ttcn b/ttcn/Lib3GPP/PicsPixit/EUTRA_NR_Parameters.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a0799f0a5ced77e7180e35eda1af743e89b94688 --- /dev/null +++ b/ttcn/Lib3GPP/PicsPixit/EUTRA_NR_Parameters.ttcn @@ -0,0 +1,173 @@ +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-09-13 19:58:09 +0200 (Wed, 13 Sep 2023) $ +// $Rev: 37115 $ +/******************************************************************************/ + +module EUTRA_NR_Parameters { + + import from Common4G5G all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar integer pc_noOf_PDNsNewConnection; // @desc Number of UE requested PDN connection establishments after ATTACH in a new signaling connection + // Reference to other Spec: 38.508-2 Table A.4.4-2/6 + + modulepar integer pc_noOf_PDNsSameConnection; // @desc Number of UE requested PDN connection establishments after ATTACH during the same signaling connection + // Reference to other Spec: 38.508-2 Table A.4.4-2/5 + + modulepar ENDC_BandCombination_Type px_ENDC_BandCombination := DC_25A_n41A; // @desc EN-DC Band Combination + + modulepar ENDC_CA_BandCombination_Type px_ENDC_CA_BandCombination := DC_1A_n28A_n78A; + // @desc EN-DC CA Band Combination + + modulepar ENDC_BandCombination_Type px_ENDC_SecondaryBandCombination := DC_1A_n77A; // @desc Secondary EN-DC Band Combination + + modulepar NEDC_BandCombination_Type px_NEDC_BandCombination := DC_n28A_3A; // @desc NE-DC Band Combination + + modulepar NEDC_BandCombination_Type px_NEDC_SecondaryBandCombination := DC_n28A_39A; + // @desc Secondary NE-DC Band Combination + + modulepar integer px_NR_PrimaryBand := 1; // @desc NR primary band + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_5GCN := false; // @desc UE supports 5GS Core + // Reference: 38.508-2 Table A.4.1-5/1 + + modulepar boolean pc_EN_DC := false; // @desc EN-DC (Option 3) + // Reference: 38.508-2 Table A.4.1-3/2 + + modulepar boolean pc_EPS_UPIP := false; // @desc Support of user plane integrity protection with EPS + // Reference: 38.508-2 Table A.4.3.7-1/50 + + modulepar boolean pc_IP_Ping := false; // @desc Support of ICMP or ICMP IPv6 + // Reference: 38.508-2 Table A.4.4-1/1 + + modulepar boolean pc_InterBand_CA_BetweenFR1_FR2 := false; // @desc Inter-Band CA between FR1 and FR2 + // Reference: 38.508-2 Table A.4.1-4A/7 + + modulepar boolean pc_InterBand_CA_WithinFR1 := false; // @desc Inter-Band CA within FR1 + // Reference: 38.508-2 Table A.4.1-4A/5 + + modulepar boolean pc_InterBand_CA_WithinFR2 := false; // @desc Inter-Band CA within FR2 + // Reference: 38.508-2 Table A.4.1-4A/6 + + modulepar boolean pc_InterBand_ENDC_IncludingFR1_FR2 := false; // @desc Inter-Band EN-DC including FR1 and FR2 + // Reference: 38.508-2 Table A.4.1-4/5 + + modulepar boolean pc_InterBand_ENDC_IncludingFR2 := false; // @desc Inter-Band EN-DC including FR2 + // Reference: 38.508-2 Table A.4.1-4/4 + + modulepar boolean pc_InterBand_ENDC_WithinFR1 := false; // @desc Inter-Band EN-DC within FR1 + // Reference: 38.508-2 Table A.4.1-4/3 + + modulepar boolean pc_InterBand_NRDC_BetweenFR1_FR2 := false; // @desc Inter-Band NR-DC between FR1 and FR2 + // Reference: 38.508-2 Table A.4.1-4/6 + + modulepar boolean pc_IntraBand_Contiguous_CA_WithinFR1 := false; // @desc Intra-Band Contiguous CA within FR1 + // Reference: 38.508-2 Table A.4.1-4A/1 + + modulepar boolean pc_IntraBand_Contiguous_CA_WithinFR2 := false; // @desc Intra-Band Contiguous CA within FR2 + // Reference: 38.508-2 Table A.4.1-4A/3 + + modulepar boolean pc_IntraBand_Contiguous_ENDC := false; // @desc Intra-Band Contiguous EN-DC + // Reference: 38.508-2 Table A.4.1-4/1 + + modulepar boolean pc_IntraBand_NonContiguous_CA_WithinFR1 := false; + // @desc Intra-Band Non-contiguous CA within FR1 + // Reference: 38.508-2 Table A.4.1-4A/2 + + modulepar boolean pc_IntraBand_NonContiguous_CA_WithinFR2 := false; + // @desc Intra-Band Non-contiguous CA within FR2 + // Reference: 38.508-2 Table A.4.1-4A/4 + + modulepar boolean pc_IntraBand_NonContiguous_ENDC := false; // @desc Intra-Band Non-Contiguous EN-DC + // Reference: 38.508-2 Table A.4.1-4/2 + + modulepar boolean pc_TransferEmergencyPDUN1toS1noN26 := false; // @desc Support of Emergency PDU session transfer from N1 mode to S1 mode when network does not support N26 interface + // Reference: 38.508-2 Table A.4.4-2/8 + + modulepar boolean pc_TransferEmergencyPDUS1toN1noN26 := false; // @desc Support of Emergency PDN connection transfer from S1 mode to N1 mode when network does not support N26 interface + // Reference: 38.508-2 Table A.4.4-2/9 + + modulepar boolean pc_configuredUL_GrantType1 := false; // @desc Support Type 1 PUSCH transmissions with configured grant + // Reference: 38.508-2 Table A.4.3.2-1/10 + + modulepar boolean pc_configuredUL_GrantType2 := false; // @desc Support Type 2 PUSCH transmissions with configured grant + // Reference: 38.508-2 Table A.4.3.2-1/11 + + modulepar boolean pc_data_centric := false; // @desc Support of UE's usage setting as data centric + // Reference: 38.508-2 Table A.4.4-2/10 + + modulepar boolean pc_dynamicPowerSharingENDC := false; // @desc Support dynamic EN-DC power sharing for at least one EN-DC band combination_FR1 only + // Reference: 38.508-2 Table A.4.3.2-1/17 + + modulepar boolean pc_dynamicSwitchRA_Type0_1_PDSCH := false; // @desc Support dynamic switching between resource allocation Types 0 and 1 for PDSCH + // Reference: 38.508-2 Table A.4.3.2-1/26 + + modulepar boolean pc_dynamicSwitchRA_Type0_1_PUSCH := false; // @desc Support dynamic switching between resource allocation Types 0 and 1 for PUSCH + // Reference: 38.508-2 Table A.4.3.2-1/27 + + modulepar boolean pc_eutra_EPC_HO_ToNR_FDD_FR1_r15 := false; // @desc Support inter-RAT Handover to NR FR1 FDD from EUTRA connected to EPC + // Reference: 38.508-2 Table A.4.3.8-1/7 + + modulepar boolean pc_eutra_EPC_HO_ToNR_TDD_FR1_r15 := false; // @desc Support inter-RAT Handover to NR FR1 TDD from EUTRA connected to EPC + // Reference: 38.508-2 Table A.4.3.8-1/6 + + modulepar boolean pc_eutra_EPC_HO_ToNR_TDD_FR2_r15 := false; // @desc Support inter-RAT Handover to NR FR2 TDD from EUTRA connected to EPC + // Reference: 38.508-2 Table A.4.3.8-1/8 + + modulepar boolean pc_gp10_en_dc := false; // @desc Support NR supports gap pattern 10 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/16 + + modulepar boolean pc_gp11_en_dc := false; // @desc Support NR supports gap pattern 1 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/17 + + modulepar boolean pc_gp4_en_dc := false; // @desc Support NR supports gap pattern 4 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/10 + + modulepar boolean pc_gp5_en_dc := false; // @desc Support NR supports gap pattern 5 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/11 + + modulepar boolean pc_gp6_en_dc := false; // @desc Support NR supports gap pattern 6 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/12 + + modulepar boolean pc_gp7_en_dc := false; // @desc Support NR supports gap pattern 7 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/13 + + modulepar boolean pc_gp8_en_dc := false; // @desc Support NR supports gap pattern 8 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/14 + + modulepar boolean pc_gp9_en_dc := false; // @desc Support NR supports gap pattern 9 for independent measurement gap configuration on FR1 and per-UE gap in (NG) EN-DC + // Reference: 38.508-2 Table A.4.3.6-1/15 + + modulepar boolean pc_idleInactiveEUTRA_MeasReport := false; // @desc Support configuration of E-UTRA measurements in RRC_IDLE/RRC_INACTIVE and reporting of the corresponding results upon network request as specified in TS 38.331 + // Reference: 38.508-2 Table A.4.3.6.1/55 + + modulepar boolean pc_inactiveState := false; // @desc Support of RRC_INACTIVE as specified in TS 38.331 + // Reference: 38.508-2 Table A.4.3.7-1/19 + + modulepar boolean pc_interRAT_NR_ToENDC := false; // @desc Support inter-RAT Handover from NR to EN-DC + // Reference: 38.508-2 Table A.4.3.8-1/10 + + modulepar boolean pc_ra_Type0_PUSCH := false; // @desc Support resource allocation Type 0 for PUSCH + // Reference: 38.508-2 Table A.4.3.2-1/7 + + modulepar boolean pc_srb3 := false; // @desc Support direct SRB between the SN and the UE + // Reference: 38.508-2 Table A.4.3.7-1/3 + + modulepar boolean pc_ss_SINR_Meas := false; // @desc Support SS-SINR measurements + // Reference: 38.508-2 Table A.4.3.6-1/6 + + +} diff --git a/ttcn/Lib3GPP/PicsPixit/NAS_5GC_Parameters.ttcn b/ttcn/Lib3GPP/PicsPixit/NAS_5GC_Parameters.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a7ff95f5a43d1382662661b00fd12a8e4843fd4b --- /dev/null +++ b/ttcn/Lib3GPP/PicsPixit/NAS_5GC_Parameters.ttcn @@ -0,0 +1,92 @@ +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-09-13 15:45:17 +0200 (Wed, 13 Sep 2023) $ +// $Rev: 37096 $ +/******************************************************************************/ + +module NAS_5GC_Parameters { + + import from CommonDefs all; + import from NG_NAS_TypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar integer pc_noOf_PDUsNewConnection; // @desc Number of UE-requested PDU session establishments after REGISTRATION in a new signaling connection + // Reference to other Spec: 38.508-2 Table A.4.4-2/4 + + modulepar integer pc_noOf_PDUsSameConnection; // @desc Number of UE requested PDU session establishments after REGISTRATION during the same signaling connection + // Reference to other Spec: 38.508-2 Table A.4.4-2/3 + + modulepar NAS_5GC_AKA_Type px_NAS_5GC_AuthenticationType := AKA_5G; // @desc NAS 5GC Authentication type + // Supported values: AKA_5G, AKAP_EAP + + modulepar B4_Type px_NAS_5GC_CipheringAlgorithm := '0010'B; // @desc NAS 5GC Ciphering Algorithm + + modulepar B4_Type px_NAS_5GC_IntegrityAlgorithm := '0010'B; // @desc NAS 5GC Integrity Algorithm + + modulepar integer px_NAS_5GC_XRES_Length := 16; // @desc NAS 5GC XRES length, in octets, used in Authentication + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_5GC_MUSIM := false; // @desc Support one or more Multi-SIM features include N1 NAS signalling connection release/Paging indication for voice services/Reject paging request/Paging restriction/IMSI offset and so on. + // Reference: 38.508-2 Table A.4.3.13-1/1 + + modulepar boolean pc_5GC_MUSIM_NCR := false; // @desc Support of Multi-SIM N1 NAS signalling connection release + // Reference: 38.508-2 Table A.4.3.13-1/2 + + modulepar boolean pc_5GC_MUSIM_PIV := false; // @desc Support of Multi-SIM Paging indication for voice services + // Reference: 38.508-2 Table A.4.3.13-1/3 + + modulepar boolean pc_5GC_MUSIM_PR := false; // @desc Support of Multi-SIM Paging restriction + // Reference: 38.508-2 Table A.4.3.13-1/5 + + modulepar boolean pc_5GC_MUSIM_RPR := false; // @desc Support of Multi-SIM Reject paging request + // Reference: 38.508-2 Table A.4.3.13-1/4 + + modulepar boolean pc_5GC_RACS := false; // @desc Support of RACS + // Reference: 38.508-2 Table A.4.3.7-1/17 + + modulepar boolean pc_5GC_RACS_Manufacturer_URCID := false; // @desc UE support of Manufacturer assigned radio capability ID + // Reference: 38.508-2 Table A.4.3.7-1/35 + + modulepar boolean pc_Additional_PDU_establishment := false; // @desc ExpectedNoOfPDUSessionsAtRegistration + 1 + // Reference: 38.508-2 Table A.4.3.7-1/9 + + modulepar boolean pc_SNPN_EmergencyService := false; // @desc Support of emergency services in NR connected to 5GCN in SNPN Access mode + // Reference: 38.508-2 Table A.4.3.7-1/56 + + modulepar boolean pc_SNPN_PLMN := false; // @desc Support of PLMN access in SNPN Access mode + // Reference: 38.508-2 Table A.4.3.7-1/57 + + modulepar boolean pc_UserInitiated_SNPN_Reselection := false; // @desc Support of autonomous search function to detect CAG cells on serving and non-serving frequencies + // Reference: 38.508-2 Table A.4.3.7-1/30 + + modulepar boolean pc_V2XCNPC5 := false; // @desc Support of V2X communication over NR-PC5 + // Reference: 38.508-2 Table A.4.3.7-1/34 + + modulepar boolean pc_accessing_SNPN_usingCH := false; // @desc Support of accessing SNPN using credentials from a Credentials Holder + // Reference: 38.508-2 Table A.4.3.7-1/52 + + modulepar boolean pc_musimLeaveConnected_r17 := false; // @desc Supports providing MUSIM assistance information with indication of leaving RRC_CONNECTED state + // Reference: 38.508-2 Table A.4.3.13-1/7 + + modulepar boolean pc_musim_GapPreference_r17 := false; // @desc Supports providing MUSIM assistance information with MUSIM gap preference and related MUSIM gap configuration + // Reference: 38.508-2 Table A.4.3.13-1/6 + + modulepar boolean pc_onboarding_SNPN := false; // @desc Support of Onboarding Stand-alone Non-Public Network + // Reference: 38.508-2 Table A.4.3.7-1/53 + + modulepar boolean pc_sms_over_NAS := false; // @desc Support of SMS over NAS + // Reference: 38.508-2 Table A.4.3.7-1/6 + + +} diff --git a/ttcn/Lib3GPP/PicsPixit/Parameters.ttcn b/ttcn/Lib3GPP/PicsPixit/Parameters.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1ff7fb927ac34f358f858a52893a2ac1f82e9390 --- /dev/null +++ b/ttcn/Lib3GPP/PicsPixit/Parameters.ttcn @@ -0,0 +1,1262 @@ +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +// All rights reserved. +// @version: IWD_23wk37 +// $Date: 2023-08-05 13:41:59 +0200 (Sat, 05 Aug 2023) $ +// $Rev: 36519 $ +/******************************************************************************/ + +module Parameters { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar APN_DefaultConfiguration_Type pc_APN_Default_Configuration := None; // @desc The DNN/APN configuration specified in TS 38.508-1 [2], Table 4.8.4-1 which is to be used for the default DNN/APN. + // The value provided shall match one of the DNN/APN types if a Default DNN will be established, e.g. internet, ims, etc. or shall be set to none if the UE will not establish default DNN/APN. + // Supported values: none, internet, ims, urllc, miot, v2x, ethernet, mbs + // Reference to other Spec: 38.508-1, Table 4.8.4-2A + + modulepar charstring pc_APN_ID_Ethernet:="ethernet"; // @desc APN/DNN ID of type Ethernet + // The APN/DNN Network Identifier portion of the Access Point / Data Network Name, as defined in TS 23.003 [26], subclause 9.1 OR "none" if the UE will not establish PDN/PDU of type Ethernet + // If the provided value is different to "none" then for this APN/DNN the DNN/APN configuration of type "Ethernet" as specified in TS 38.508-1 [2], Table 4.8.4-1 applies. + + modulepar charstring pc_APN_ID_IMS:="ims"; // @desc APN/DNN ID of type IMS + // The APN/DNN Network Identifier portion of the Access Point / Data Network Name, as defined in TS 23.003 [x1], subclause 9.1 OR "none" if the UE will not establish PDN/PDU of type IMS + // If the provided value is different to "none" then for this APN/DNN the DNN/APN configuration of type "IMS" as specified in TS 38.508-1 [2], Table 4.8.4-1 applies. + // Reference to other Spec: 38.508-1, Table 4.8.4-2A + + modulepar charstring pc_APN_ID_Internet:="internet"; // @desc APN/DNN ID of type Internet + // The APN/DNN Network Identifier portion of the Access Point / Data Network Name, as defined in TS 23.003, subclause 9.1 OR "none" if the UE will not establish PDN/PDU of type Internet + // If the provided value is different to "none" then for this APN/DNN the DNN/APN configuration of type "Internet" as specified in TS 38.508-1 [2], Table 4.8.4-1 applies. + // Reference to other Spec: 38.508-1, Table 4.8.4-2A + + modulepar charstring pc_APN_ID_MIOT:="iot"; // @desc APN/DNN ID of type MIOT + // The APN/DNN Network Identifier portion of the Access Point / Data Network Name, as defined in TS 23.003 [x1], subclause 9.1 OR "none" if the UE will not establish PDN/PDU of type MIOT + // If the provided value is different to "none" then for this APN/DNN the DNN/APN configuration of type "MIOT" as specified in TS 38.508-1 [2], Table 4.8.4-1 applies. + // Reference to other Spec: 38.508-1, Table 4.8.4-2A + + modulepar charstring pc_APN_ID_URLLC:="urllc"; // @desc APN/DNN ID of type URLLC + // The APN/DNN Network Identifier portion of the Access Point / Data Network Name, as defined in TS 23.003 [x1], subclause 9.1 OR "none" if the UE will not establish PDN/PDU of type URLLC + // If the provided value is different to "none" then for this APN/DNN the DNN/APN configuration of type "URLLC" as specified in TS 38.508-1 [2], Table 4.8.4-1 applies. + // Reference to other Spec: 38.508-1, Table 4.8.4-2A + + modulepar charstring pc_APN_ID_V2X:="v2x"; // @desc APN/DNN ID of type V2X + // The APN/DNN Network Identifier portion of the Access Point / Data Network Name, as defined in TS 23.003 [x1], subclause 9.1 OR "none" if the UE will not establish PDN/PDU of type V2X + // If the provided value is different to "none" then for this APN/DNN the DNN/APN configuration of type "V2X" as specified in TS 38.508-1 [2], Table 4.8.4-1 applies. + // Reference to other Spec: 38.508-1, Table 4.8.4-2A + + modulepar octetstring px_AccessPointName:='00'O; // @desc Access Point Name + + modulepar integer px_AquireGNSS_MaxTime := 60; // @desc The maximume time (in seconds) taken for the UE to acquire GNSS and derive UTC time (and normally position) and then start to transit or receive as appropriate + + modulepar EUTRA_ATTACH_TESTED_Type px_AttachTypeTested := EPS_ATTACH_ONLY; // @desc Attach Type to be tested, if UE supports both pc_Attach and pc_Combined_Attach + // Supported values: EPS_ATTACH_ONLY, COMBINED_ATTACH + + modulepar B16_Type px_AuthAMF:='0000000000000000'B; // @desc Authentication Management Field (16 bits). The value shall be different from '1111 1111 1111 111'B (AMFresynch). + // Default value: no default value can be proposed + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar B128_Type px_AuthK := oct2bit('000102030405060708090A0B0C0D0E0F'O); + // @desc Authentication Key + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O8_Type px_EllipsoidPointWithAltitude:='1234567890123456'O; // @desc Ellipsoid Point With Altitude value to be provided in Update UE location information (see 36.509 cl 6.12) + + modulepar charstring px_EmergencyCallNumber := "112"; // @desc Emergency Number used by UE to initiate an emergency call + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar integer px_FDD_OperationBand:=1; // @desc The operation band under test, as defined in 34.108 clause 5.1.1. Value 1 means Band 1, 2 means Band 2 etc.This pixit shall be set in synchronisation with the values that are being set to 6 other Pixits viz: px_UARFCN_D_High, px_UARFCN_D_Mid,px_UARFCN_L_Mid + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O3_Type px_HorizontalVelocity:='012345'O; // @desc Horizontal Velocity to be provided in Update UE location information (see 36.509 cl 6.12) + + modulepar hexstring px_IMEISV_Def:=''H; // @desc Default IMEISV value. No default can be proposed as this is a manufacturer defined value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMEI_Def:=''H; // @desc Default IMEI value transmitted by UE. Digit 15 shall be set as a Spare Digit, i.e. shall be set to '0' (see TS 23.003) + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMSI_Def := '001010123456063'H; + // @desc Default IMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMSI_Diff := '001010654321063'H; + // @desc Different IMSI from the IMSI stored in the USIM + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_IP_MTU_Size := 65535; // @desc MTU size. This value is specific to the SS. + + modulepar charstring px_IPv4_Address1_NW:=""; // @desc IPv4 Gateway Address in PDN1 + + modulepar charstring px_IPv4_Address1_RemoteUE:=""; // @desc IPv4 Address of remote UE connected to PDN1 + + modulepar charstring px_IPv4_Address1_UE:=""; // @desc IPv4 Address connected to PDN1 + + modulepar charstring px_IPv4_Address2_NW:=""; // @desc IPv4 Gateway Address in PDN2 + + modulepar charstring px_IPv4_Address2_RemoteUE:=""; // @desc IPv4 Address of remote UE connected to PDN2 + + modulepar charstring px_IPv4_Address2_UE:=""; // @desc IPv4 Address connected to PDN2 + + modulepar charstring px_IPv4_Address2a_UE:=""; // @desc IPv4 Address connected to PDN2a + + modulepar charstring px_IPv4_Address3_NW:=""; // @desc IPv4 Gateway Address in PDN3 + + modulepar charstring px_IPv4_Address3_RemoteUE:=""; // @desc IPv4 Address of remote UE connected to PDN3 + + modulepar charstring px_IPv4_Address3_UE:=""; // @desc IPv4 Address connected to PDN3 + + modulepar charstring px_IPv4_Address4_NW:=""; // @desc IPv4 Gateway Address in PDN4 + + modulepar charstring px_IPv4_Address4_UE:=""; // @desc IPv4 Address connected to PDN4 + + modulepar charstring px_IPv4_Address5_NW:=""; // @desc IPv4 Gateway Address in PDN5 + + modulepar charstring px_IPv4_Address5_UE:=""; // @desc IPv4 Address connected to PDN5 + + modulepar charstring px_IPv4_Address6_NW:=""; // @desc IPv4 Gateway Address in PDN6 + + modulepar charstring px_IPv4_Address6_UE:=""; // @desc IPv4 Address connected to PDN6 + + modulepar charstring px_IPv4_Address_HomeAgent:=""; // @desc IPv4 Home Address Agent + + modulepar charstring px_IPv6_Address1_NW:=""; // @desc IPv6 Gateway Address in PDN1 + + modulepar charstring px_IPv6_Address1_RemoteUE:=""; // @desc IPv6 Address of remote UE in PDN1 + + modulepar charstring px_IPv6_Address1_UE:=""; // @desc IPv6 Address in PDN1 + + modulepar charstring px_IPv6_Address2_NW:=""; // @desc IPv6 Gateway Address in PDN2 + + modulepar charstring px_IPv6_Address2_RemoteUE:=""; // @desc IPv6 Address of remote UE in PDN2 + + modulepar charstring px_IPv6_Address2_UE:=""; // @desc IPv6 Address in PDN2 + + modulepar charstring px_IPv6_Address2a_UE:=""; // @desc IPv6 Address in PDN2a + + modulepar charstring px_IPv6_Address3_NW:=""; // @desc IPv6 Gateway Address in PDN3 + + modulepar charstring px_IPv6_Address3_RemoteUE:=""; // @desc IPv6 Address of remote UE in PDN3 + + modulepar charstring px_IPv6_Address3_UE:=""; // @desc IPv6 Address in PDN3 + + modulepar charstring px_IPv6_Address4_NW:=""; // @desc IPv6 Gateway Address in PDN4 + + modulepar charstring px_IPv6_Address4_UE:=""; // @desc IPv6 Address in PDN4 + + modulepar charstring px_IPv6_Address5_NW:=""; // @desc IPv6 Gateway Address in PDN5 + + modulepar charstring px_IPv6_Address5_UE:=""; // @desc IPv6 Address in PDN5 + + modulepar charstring px_IPv6_Address6_NW:=""; // @desc IPv6 Gateway Address in PDN6 + + modulepar charstring px_IPv6_Address6_UE:=""; // @desc IPv6 Address in PDN6 + + modulepar charstring px_IPv6_Address_HomeAgent:=""; // @desc IPv6 Home Address Agent + + modulepar integer px_MFBI_UTRAN_FrequencyBand:=0; // @desc A supported UTRAN MFBI frequency band. + // Reference to other Spec: 34.123-3, Table B.1.20 + + modulepar B3_Type px_NAS_CipheringAlgorithm := '001'B; // @desc NAS Ciphering Algorithm (eea1) + + modulepar B3_Type px_NAS_IntegrityProtAlgorithm := '001'B; // @desc NAS Integrity Algorithm (eia1) + + modulepar octetstring px_PTMSI_Def := 'C2345678'O; // @desc Default PTMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar octetstring px_PTMSI_SigDef := 'AB1234'O; // @desc Default PTMSI signature (3 octets, 3GPP 24.008 / 10.5.5.8). + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar bitstring px_PWS_CB_DataCodingScheme:=''B; // @desc CMAS or ETWS data coding scheme of the alphabet/codingand the applied language (see TS 23.401) + + modulepar charstring px_PWS_CB_DataPage1:=""; // @desc ETWS or CMAS Page 1 warning data message + + modulepar charstring px_PWS_CB_DataPage2:=""; // @desc ETWS or CMAS Page 2 warning data message + + modulepar charstring px_PWS_CB_DataPage3:=""; // @desc CMAS or ETWS Page 3 warning data message + + modulepar charstring px_PWS_CB_DataPage4:=""; // @desc CMAS or ETWS Page 4 warning data message + + modulepar RATComb_Tested_Type px_RATComb_Tested := EUTRA_UTRA; // @desc This parameter represents the network RAT capability/preference and indicates which, if any is supported, RAT combination is to be tested + // Supported values: EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only + + modulepar boolean px_SMS_ChkMsgReceived := true; // @desc Whether the operator can check an MT Short Message received + + modulepar integer px_SMS_IndexOffset := 0; // @desc Memory location index at UE for SMS storage, used in +CMSS command + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_MsgFrmt := "1"; // @desc SMS message format (see TS 27.005 cl.3.2.). NOTE: Default value is for text mode. Change value to 0 to execute tests with PDU mode + + modulepar charstring px_SMS_PrefMem1 := "SM"; // @desc SMS Preferred Memory 1 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_PrefMem2 := "SM"; // @desc SMS Preferred Memory 2 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_PrefMem3 := "MT"; // @desc SMS Preferred Memory 3 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_Service := "0"; // @desc SMS Service of TS 27.005 [31], clause 3.2.1 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar SinglePLMN_TestedType px_SinglePLMN_Tested := MultiPLMN; // @desc This parameter represents the network capability/preference to support multi PLMNs on the same test Band and indicates the preference of multi PLMNs or single PLMN test environment. This PIXIT shall be set to SinglePLMN when only one frequency is defined for the test band + // Supported values: SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand + + modulepar octetstring px_TMSI_Def := '12345678'O; // @desc Default TMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O1_Type px_TestLoopModeB_Delay := '5A'O; // @desc This parameter represents the IP PDU delay to be used for UE test loop mode B intest cases, where long delay may be needed e.g. because of user interaction. + + modulepar CS_PS_MODE px_UE_CS_PS_UsageSetting_Tested := VOICE_CENTRIC; + // @desc specifies which CS/PS mode is under test @sic R5s120274 sic@ + // Supported values: VOICE_CENTRIC, DATA_CENTRIC + + modulepar PS_MODE px_UE_PS_UsageSetting_Tested := VOICE_CENTRIC; // @desc specifies which PS mode is under test @sic R5s120274 sic@ + // Supported values: VOICE_CENTRIC, DATA_CENTRIC + + modulepar UTRAN_FDD_TDD_Type px_UTRAN_ModeUnderTest := UTRAN_FDD; // @desc specifies which radio access technology is being tested in UTRAN + // Supported values: UTRAN_FDD, UTRAN_TDD + + modulepar integer px_UTRAN_OverlappingNotSupportedFrequencyBandMFBI:=1; + // @desc A not supported UTRAN frequency band that is overlapping with a supported MFBI band (px_MFBI_UTRAN_FrequencyBand). This pixit shall be set also in accordance with the values of the 3 Pixits: px_UARFCN_D_High, px_UARFCN_D_Mid,px_UARFCN_L_Mid. + + modulepar boolean px_WLAN_PDN1_ToOffload := true; // @desc If set to true, the first PDN connection is offloaded to WLAN. If set to false, the second PDN connection is offloaded to WLAN. + + modulepar B128_Type px_eAuthRAND := oct2bit('A3DE0C6D363E30C364A4078F1BF8D577'O); + // @desc Random Challenge + + modulepar NAS_Mcc px_eJapanMCC_Band6 := '442'H; // @desc Japan MCC code to be used for Band 6. The same value will be used for E-UTRAN and Inter-RAT cells. Type is different to that defined in 34.123-3. + + modulepar integer px_ePrimaryFrequencyBand := 1; // @desc E-UTRAN primary frequency band + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_1xCSfallback := false; // @desc Support of 1xCS fallback + // Reference: 36.523-2, A.4.2.1.1-1/3 + + modulepar boolean pc_1xRTT := false; // @desc UE supports CDMA2000 1xRTT band class + // Reference: 36.523-2, A.4.1-1/4 + + modulepar boolean pc_A5_4_CS := false; // @desc Support of A5/4 + // Reference: 51.010-2, A.2/87 + + modulepar boolean pc_Allowed_CSG_list := false; // @desc Support of Allowed CSG list + // Reference: 36.523-2 A.4.4-1/2 + + modulepar boolean pc_Attach := false; // @desc Support EPS attach (with or without pre-configuration) + // Reference: 36.523-2 A.4.4-2/1 + + modulepar boolean pc_Auto_PDN_Connectivity := false; // @desc Support of automatic PDN Connectivity in EUTRAN + // Reference: 36.523-2 A.4.4-1/68 + + modulepar boolean pc_Automatic_EPS_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) + // Reference: 36.523-2 A.4.4-1/64 + + modulepar boolean pc_Automatic_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) during Network Initiated Detach with detach type set to re-attach required + // Reference: 36.523-2 A.4.4-1/27 + + modulepar boolean pc_Available_PLMNs_AcT_Ind := false; // @desc Support of AccessTechnology indication in available PLMNs list + // Reference: 36.523-2 A.4.4-1/78 + + modulepar boolean pc_BSRVCC := false; // @desc UE indicates g.3gpp.ps2cs-srvcc-orig-pre-alerting media feature tag in INVITE request + // Reference: 34.229-2 A.12/36 + + modulepar boolean pc_CMAS_Message := false; // @desc Support of CMAS message + // Reference: 36.523-2 A.4.4-1/58 + + modulepar boolean pc_CS := false; // @desc UE supports CS domain services + // Reference: 34.123-2 A.3/1 + + modulepar boolean pc_CS_Em_Call_in_1xRTT := false; // @desc Support for establishing the emergency call using the CS domain in 1xRTT + // Reference: 36.523-2 A.4.4-1/37 + + modulepar boolean pc_CS_Em_Call_in_GERAN := false; // @desc Support for establishing the emergency call using the CS domain in GERAN + // Reference: 36.523-2 A.4.4-1/36 + + modulepar boolean pc_CS_Em_Call_in_UTRA := false; // @desc Support for establishing the emergency call using the CS domain in UTRA + // Reference: 36.523-2 A.4.4-1/35 + + modulepar boolean pc_CS_Fallback := false; // @desc The UE supports CS fallback for voice calls. If true, pc_CS and at least one of pc_FDD, pc_TDD_HCR, pc_TDD_LCR, pc_TDD_VHCR or pc_UMTS_GSM is also true. + // Reference: 36.523-2, A.4.2.1.1-1/1 + + modulepar boolean pc_CS_PS_data_centric := false; // @desc Support of CS/PS mode 2 + // Reference: 36.523-2 A.4.4-2/5 + + modulepar boolean pc_CS_PS_voice_centric := false; // @desc Support of configuring the UE to voice centric + // Reference: 36.523-2 A.4.4-2/4 + + modulepar boolean pc_Combined_Attach := false; // @desc Support combined EPS/IMSI attach (with or without pre-configuration) + // Reference: 36.523-2 A.4.4-2/2 + + modulepar boolean pc_DSMIPv6 := false; // @desc Support of Mobility management based on Dual-Stack Mobile IPv6 + // Reference: 36.523-2 A.4.4-1/6 + + modulepar boolean pc_DaylightSavingTime := false; // @desc UE stores/updates the daylight saving time when receives information + // Reference: 36.523-2 A.4.4-1/93 + + modulepar boolean pc_DualRM_Coding := false; // @desc Dual RM Coding + // Reference: 36.523/2 A.4.4-1/147 + + modulepar boolean pc_EAB := false; // @desc Support of Extended Access Barring + // Reference: 36.523-2 A.4.4-1A/4 + + modulepar boolean pc_EAB_override := false; // @desc Support of Extended Access Barring Override + // Reference: 36.523-2 A.4.4-1/91 + + modulepar boolean pc_EDTM := false; // @desc Support for EDTM + // Reference: 36.523-2 A.4.4-1/38 + + modulepar boolean pc_EMM_Information := false; // @desc Support of EMM Information message + // Reference: 36.523-2 A.4.4-1/9 + + modulepar boolean pc_EPC_RACS := false; // @desc Support of RACS + // Reference: 36.523-2 A.4.4-1/215 + + modulepar boolean pc_EPS_IMS_EmergencyCall := false; // @desc Support of MS emergency call in EPS + // Reference: 36.523-2, A.4.2.1.1-1/4 + + modulepar boolean pc_EPS_Services_Disable := false; // @desc Support of disabling of EPS services + // Reference: 36.523-2 A.4.4-1/26 + + modulepar boolean pc_ESM_MO_Bearer_Allocation := false; // @desc Support of ESM UE requested bearer resource allocation procedure + // Reference: 36.523-2 A.4.4-1/18 + + modulepar boolean pc_ESM_MO_Bearer_Modification := false; // @desc Support of ESM UE requested bearer resource modification procedure + // Reference: 36.523-2 A.4.4-1/19 + + modulepar boolean pc_ESM_Notification := false; // @desc Support of ESM Notification procedure + // Reference: 36.523-2 A.4.4.1/71 + + modulepar boolean pc_ESM_UE_Modification_NW_TFT := false; // @desc Support for UE requested modification of network allocated TFTs + // Reference: 36.523-2 A.4.4-1/54 + + modulepar boolean pc_ETWS_message := false; // @desc Support of ETWS message + // Reference: 36.523-2 A.4.4-1/20 + + modulepar boolean pc_E_UTRAN_2_GERAN_PSHO := false; // @desc Support for inter-RAT PS handover from E_UTRAN to GERAN + // Reference: 36.523-2 A.4.4-1/52 + + modulepar boolean pc_E_UTRA_WLAN_offload := false; // @desc Support Offload to/from WLAN and supports S2b + // Reference: 36.523-2 A.4.2.1.1-1/8 + + modulepar boolean pc_EmergSpeech := false; // @desc Emergency Call + // Reference: 34.123-2 A.2/2 + + modulepar boolean pc_FDD := false; // @desc UE supports UTRA band as defined in TS 25.101 + // Reference: 34.123-2 A.1/1 + + modulepar boolean pc_FeatrGrp_101_F := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3a/1 + + modulepar boolean pc_FeatrGrp_101_T := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3b/1 + + modulepar boolean pc_FeatrGrp_102_F := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3a/2 + + modulepar boolean pc_FeatrGrp_102_T := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3b/2 + + modulepar boolean pc_FeatrGrp_103_F := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/3 + + modulepar boolean pc_FeatrGrp_103_T := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/3 + + modulepar boolean pc_FeatrGrp_104_F := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/4 + + modulepar boolean pc_FeatrGrp_104_T := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/4 + + modulepar boolean pc_FeatrGrp_105_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/5 + + modulepar boolean pc_FeatrGrp_105_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/5 + + modulepar boolean pc_FeatrGrp_106_F := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/6 + + modulepar boolean pc_FeatrGrp_106_T := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/6 + + modulepar boolean pc_FeatrGrp_107_F := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/7 + + modulepar boolean pc_FeatrGrp_107_T := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/7 + + modulepar boolean pc_FeatrGrp_108_F := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/8 + + modulepar boolean pc_FeatrGrp_108_T := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/8 + + modulepar boolean pc_FeatrGrp_109_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3a/9 + + modulepar boolean pc_FeatrGrp_109_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3b/9 + + modulepar boolean pc_FeatrGrp_10_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1a/10 + + modulepar boolean pc_FeatrGrp_10_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1b/10 + + modulepar boolean pc_FeatrGrp_110_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3a/10 + + modulepar boolean pc_FeatrGrp_110_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3b/10 + + modulepar boolean pc_FeatrGrp_111_F := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3a/11 + + modulepar boolean pc_FeatrGrp_111_T := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3b/11 + + modulepar boolean pc_FeatrGrp_112_F := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3a/12 + + modulepar boolean pc_FeatrGrp_112_T := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3b/12 + + modulepar boolean pc_FeatrGrp_113_F := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3a/13 + + modulepar boolean pc_FeatrGrp_113_T := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3b/13 + + modulepar boolean pc_FeatrGrp_114_F := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3a/14 + + modulepar boolean pc_FeatrGrp_114_T := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3b/14 + + modulepar boolean pc_FeatrGrp_115_F := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3a/15 + + modulepar boolean pc_FeatrGrp_115_T := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3b/15 + + modulepar boolean pc_FeatrGrp_116_F := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3a/16 + + modulepar boolean pc_FeatrGrp_116_T := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3b/16 + + modulepar boolean pc_FeatrGrp_11_F := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1a/11 + + modulepar boolean pc_FeatrGrp_11_T := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1b/11 + + modulepar boolean pc_FeatrGrp_12_F := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1a/12 + + modulepar boolean pc_FeatrGrp_12_T := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1b/12 + + modulepar boolean pc_FeatrGrp_13_F := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1a/13 + + modulepar boolean pc_FeatrGrp_13_T := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1b/13 + + modulepar boolean pc_FeatrGrp_14_F := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1a/14 + + modulepar boolean pc_FeatrGrp_14_T := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1b/14 + + modulepar boolean pc_FeatrGrp_15_F := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1a/15 + + modulepar boolean pc_FeatrGrp_15_T := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1b/15 + + modulepar boolean pc_FeatrGrp_16_F := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1a/16 + + modulepar boolean pc_FeatrGrp_16_T := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1b/16 + + modulepar boolean pc_FeatrGrp_17_F := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1a/17 + + modulepar boolean pc_FeatrGrp_17_T := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1b/17 + + modulepar boolean pc_FeatrGrp_18_F := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1a/18 + + modulepar boolean pc_FeatrGrp_18_T := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1b/18 + + modulepar boolean pc_FeatrGrp_19_F := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1a/19 + + modulepar boolean pc_FeatrGrp_19_T := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1b/19 + + modulepar boolean pc_FeatrGrp_1_F := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1a/1 + + modulepar boolean pc_FeatrGrp_1_T := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1b/1 + + modulepar boolean pc_FeatrGrp_20_F := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1a/20 + + modulepar boolean pc_FeatrGrp_20_T := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1b/20 + + modulepar boolean pc_FeatrGrp_21_F := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1a/21 + + modulepar boolean pc_FeatrGrp_21_T := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1b/21 + + modulepar boolean pc_FeatrGrp_22_F := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/22 + + modulepar boolean pc_FeatrGrp_22_T := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/22 + + modulepar boolean pc_FeatrGrp_23_F := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/23 + + modulepar boolean pc_FeatrGrp_23_T := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/23 + + modulepar boolean pc_FeatrGrp_24_F := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/24 + + modulepar boolean pc_FeatrGrp_24_T := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/24 + + modulepar boolean pc_FeatrGrp_25_F := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/25 + + modulepar boolean pc_FeatrGrp_25_T := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/25 + + modulepar boolean pc_FeatrGrp_26_F := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/26 + + modulepar boolean pc_FeatrGrp_26_T := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/26 + + modulepar boolean pc_FeatrGrp_27_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1a/27 + + modulepar boolean pc_FeatrGrp_27_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1b/27 + + modulepar boolean pc_FeatrGrp_28_F := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1a/28 + + modulepar boolean pc_FeatrGrp_28_T := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1b/28 + + modulepar boolean pc_FeatrGrp_29_F := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1a/29 + + modulepar boolean pc_FeatrGrp_29_T := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1b/29 + + modulepar boolean pc_FeatrGrp_2_F := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1a/2 + + modulepar boolean pc_FeatrGrp_2_T := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1b/2 + + modulepar boolean pc_FeatrGrp_30_F := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1a/30 + + modulepar boolean pc_FeatrGrp_30_T := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1b/30 + + modulepar boolean pc_FeatrGrp_31_F := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1a/31 + + modulepar boolean pc_FeatrGrp_31_T := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1b/31 + + modulepar boolean pc_FeatrGrp_33_F := false; // @desc Inter-RAT ANR features for UTRAN including: Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/1 + + modulepar boolean pc_FeatrGrp_33_T := false; // @desc Inter-RAT ANR features for UTRAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/1 + + modulepar boolean pc_FeatrGrp_34_F := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/2 + + modulepar boolean pc_FeatrGrp_34_T := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/2 + + modulepar boolean pc_FeatrGrp_35_F := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/3 + + modulepar boolean pc_FeatrGrp_35_T := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/3 + + modulepar boolean pc_FeatrGrp_36_F := false; // @desc Inter-RAT ANR features for HRPD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/4 + + modulepar boolean pc_FeatrGrp_36_T := false; // @desc Inter-RAT ANR features for HRPD including: Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to portStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/4 + + modulepar boolean pc_FeatrGrp_37_F := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/5 + + modulepar boolean pc_FeatrGrp_37_T := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/5 + + modulepar boolean pc_FeatrGrp_38_F := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/6 + + modulepar boolean pc_FeatrGrp_38_T := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/6 + + modulepar boolean pc_FeatrGrp_39_F := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/7 + + modulepar boolean pc_FeatrGrp_39_T := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/7 + + modulepar boolean pc_FeatrGrp_3_F := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1a/3 + + modulepar boolean pc_FeatrGrp_3_T := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1b/3 + + modulepar boolean pc_FeatrGrp_40_F := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/8 + + modulepar boolean pc_FeatrGrp_40_T := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/8 + + modulepar boolean pc_FeatrGrp_41_F := false; // @desc Measurement reporting event: Event B1 Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1d/9 + + modulepar boolean pc_FeatrGrp_41_T := false; // @desc Measurement reporting event: Event B1 Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1e/9 + + modulepar boolean pc_FeatrGrp_42_F := false; // @desc DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments) + // Reference: 36.523-2 A.4.5-1d/10 + + modulepar boolean pc_FeatrGrp_42_T := false; // @desc DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments) + // Reference: 36.523-2 A.4.5-1e/10 + + modulepar boolean pc_FeatrGrp_4_F := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1a/4 + + modulepar boolean pc_FeatrGrp_4_T := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1b/4 + + modulepar boolean pc_FeatrGrp_5_F := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1a/5 + + modulepar boolean pc_FeatrGrp_5_T := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1b/5 + + modulepar boolean pc_FeatrGrp_6_F := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1a/6 + + modulepar boolean pc_FeatrGrp_6_T := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1b/6 + + modulepar boolean pc_FeatrGrp_7_F := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1a/7 + + modulepar boolean pc_FeatrGrp_7_T := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1b/7 + + modulepar boolean pc_FeatrGrp_8_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1a/8 + + modulepar boolean pc_FeatrGrp_8_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1b/8 + + modulepar boolean pc_FeatrGrp_9_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1a/9 + + modulepar boolean pc_FeatrGrp_9_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1b/9 + + modulepar boolean pc_FullNameNetwork := false; // @desc Support of storage of the network full name + // Reference: 36.523-2 A.4.4-1/12 + + modulepar boolean pc_GERAN := false; // @desc UE Supports GSM and/or GPRS + // Reference: 36.523-2 A.4.1-1/7 + + modulepar boolean pc_GERAN_2_E_UTRAN_PSHO := false; // @desc Support of GERAN to E-UTRAN PS Handover + // Reference: 36.523-2 A.4.4-1/29 + + modulepar boolean pc_GERAN_2_E_UTRAN_meas := false; // @desc Supports Neighbour Cell measurements and Network controlled & autonomous cell reselection to E-UTRAN + // Reference: 36.523-2 A.4.4-1/21 + + modulepar boolean pc_GERAN_2_E_UTRAN_measreporting_CCN := false; // @desc Supports CCN towards E-UTRAN, E-UTRAN Neighbour cell measurement reporting and Network controlled cell reselection to E-UTRAN + // Reference: 36.523-2 A.4.4-1/39 + + modulepar boolean pc_HO_from_UTRA_to_eFDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (FDD) + // Reference: 36.523-2 A.4.4-1/8 + + modulepar boolean pc_HO_from_UTRA_to_eTDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (TDD) + // Reference: 36.523-2 A.4.4-1/53 + + modulepar boolean pc_HRPD := false; // @desc UE supports CDMA2000 HRPD band class + // Reference: 36.523-2, A.4.1-1/3 + + modulepar boolean pc_IMS := false; // @desc Support of IMS + // Reference: 36.523-2 A.4.4-1/25 + + modulepar boolean pc_IMSI_Detach := false; // @desc Support of detach for non-EPS services + // Reference: 36.523-2 A.4.4-1/34 + + modulepar boolean pc_IMS_APN_default := false; // @desc Configured with IMS APN as default APN + // Reference: 36.523-2 A.4.4-2/11 + + modulepar boolean pc_IMS_CS_PS_SRVCC := false; // @desc UE Supports CS to PS SRVCC + // Reference: 34.229-2 A.12/40 + + modulepar boolean pc_IMS_CS_PS_SRVCCAlert := false; // @desc UE Supports CS to PS SRVCC in alerting state + // Reference: 34.229-2 A.12/41 + + modulepar boolean pc_IMS_CS_PS_SRVCCMidCall := false; // @desc UE Supports CS to PS SRVCC and the MSC server assisted mid-call feature + // Reference: 34.229-2 A.12/42 + + modulepar boolean pc_IMS_SRVCCAlert := false; // @desc UE indicates g.3gpp.srvcc-alerting media feature tag in INVITE request or 180 response + // Reference: 34.229-2 A.12/34 + + modulepar boolean pc_IMS_emergency_call := false; // @desc Support of IMS emergency call + // Reference: 36.523-2 A.4.2.1.1-1/4 + + modulepar boolean pc_IPv4 := false; // @desc UE supports IPv4 (also defined in 36.523-2 A.4.4-1/95) + // Reference: 34.229-2 A.7/1 + + modulepar boolean pc_IPv6 := false; // @desc UE supports IPv6 (also defined in 36.523-2 A.4.4-1/96) + // Reference: 34.229-2 A.7/2 + + modulepar boolean pc_ISR := false; // @desc Support of ISR + // Reference: 36.523-2 A.4.4-1/5 + + modulepar boolean pc_ImmConnect := false; // @desc Immediate connection supported for all circuit switched basic services + // Reference: 34.123-2 A.20/6 + + modulepar boolean pc_InterFreq_ProximityIndication := false; // @desc Support of Inter Frequency Proximity Indication + // Reference: 36.523-2 A.4.4.1-76 + + modulepar boolean pc_IntraFreq_ProximityIndication := false; // @desc Support of Intra Frequency Proximity Indication + // Reference: 36.523-2 A.4.4.1-75 + + modulepar boolean pc_KeepEpsBearerParametersAfterNormalDetach := false; + // @desc If the UE supports this, then the next ATTACH after DETACH shall be done using AT command AT+CGATT=1. + // Otherwise it shall be done using AT+CGDCONT=1,"IP" followed by AT+CGACT=1 + // Reference: 36.523-2 A.4.4.2-10 + + modulepar boolean pc_LAP := false; // @desc Support of Low Access Priority Indication. + // Reference: 34.123-2 A.10/31 + + modulepar boolean pc_LAP_override := false; // @desc Support of Low Access Prioirty Override + // Reference: 34.123-2 A.10/37 + + modulepar boolean pc_LocalTimeZone := false; // @desc Support of storage of the local time zone + // Reference: 36.523-2 A.4.4-1/14 + + modulepar boolean pc_LoggedMeasurementsIdle := false; // @desc Support of logged measurements in RRC_IDLE + // Reference: 36.523-2 A.4.4-1/62 + + modulepar boolean pc_Manual_CSG_Selection := false; // @desc Support of Manual CSG selection + // Reference: 36.523-2 A.4.4-1/49 + + modulepar boolean pc_Multiple_PDN := false; // @desc Support for multiple PDN connections + // Reference: 36.523-2 A.4.4-1/30 + + modulepar boolean pc_NG114_v1_0 := false; // @desc Version 1.0 as of 07 August 2020 + // Reference: 34.229-2 Table A.21/1 + + modulepar boolean pc_NG114_v2_0 := false; // @desc Version 2.0 as of 07 August 2021 + // Reference: 34.229-2 Table A.21/2 + + modulepar boolean pc_NG_RAN_NR := false; // @desc NG-RAN NR (Option 2) + // Reference: 38.508-2 Table A.4.1-3/1 + + modulepar boolean pc_NR_5GC_EmergencyServices := false; // @desc Support of emergency services in NR connected to 5GCN + // Reference: 38.508-2 Table A.4.3.7-1/14 + + modulepar boolean pc_No_USIM_TestExecution := false; // @desc Support of test execution with no USIM + // Reference: 34.123-2 A.20/90 + + modulepar boolean pc_PLMN_EF_LRPLMNSI_Automatic_Mode_Exception := false; + // @desc Support of Automatic Mode EF_LRPLMSI PLMN Selection Expression + // Reference: 36.523-2 A.4.4-1/97 + + modulepar boolean pc_PLMN_Manual_Mode_Exception := false; // @desc Support of Manual Mode PLMN Selection Expression + // Reference: 36.523-2 A.4.4-1/98 + + modulepar boolean pc_PS := false; // @desc Packet Switched + // Reference: 34.123-2 A.3/2 + + modulepar boolean pc_PS_data_centric := false; // @desc Support of configuring the UE to PS data centric + // Reference: 36.523-2 A.4.4-2/8 + + modulepar boolean pc_PS_voice_centric := false; // @desc Support of configuring the UE to PS voice centric + // Reference: 36.523-2 A.4.4-2/7 + + modulepar boolean pc_PWS_UpperLayer := false; // @desc Presence of PWS upper layer for functions like duplicate definition + // Reference: 36.523-2 A.4.4-1/67 + + modulepar boolean pc_ProvideDST_inUse := false; // @desc UE supports a mechanism to provide daylight saving time + // Reference: 36.523-2 A.4.4-2/29 + + modulepar boolean pc_Provide_IMS_APN := false; // @desc Configured to provide IMS APN during initial attach + // Reference: 36.523-2 A.4.4-2/13 + + modulepar boolean pc_Provide_IMS_as_second_APN := false; // @desc Configured to provide IMS APN as the 2nd PDN connection + // Reference: 36.523-2 A.4.4-2/14 + + modulepar boolean pc_Provide_Internet_as_second_APN := false; // @desc Configured to provide Internet APN as the 2nd PDN connection + // Reference: 36.523-2 A.4.4-2/15 + + modulepar boolean pc_RLF_ReportForInterRAT_MRO := false; // @desc Support of Radio Link Failure Report for InterRAT MRO + // Reference: 36.523-2 A.4.4-1/94 + + modulepar boolean pc_ROHC_profile0x0001 := false; // @desc Support for ROHC profile0x0001 + // Reference: 36.523-2 A.4.4-1/40 + + modulepar boolean pc_ROHC_profile0x0002 := false; // @desc Support for ROHC profile0x0002 + // Reference: 36.523-2 A.4.4-1/41 + + modulepar boolean pc_ROHC_profile0x0003 := false; // @desc Support for ROHC profile0x0003 + // Reference: 36.523-2 A.4.4-1/42 + + modulepar boolean pc_ROHC_profile0x0004 := false; // @desc Support for ROHC profile0x0004 + // Reference: 36.523-2 A.4.4-1/43 + + modulepar boolean pc_ROHC_profile0x0006 := false; // @desc Support for ROHC profile0x0006 + // Reference: 36.523-2 A.4.4-1/44 + + modulepar boolean pc_ROHC_profile0x0101 := false; // @desc Support for ROHC profile0x0101 + // Reference: 36.523-2 A.4.4-1/45 + + modulepar boolean pc_ROHC_profile0x0102 := false; // @desc Support for ROHC profile0x0102 + // Reference: 36.523-2 A.4.4-1/46 + + modulepar boolean pc_ROHC_profile0x0103 := false; // @desc Support for ROHC profile0x0103 + // Reference: 36.523-2 A.4.4-1/47 + + modulepar boolean pc_ROHC_profile0x0104 := false; // @desc Support for ROHC profile0x0104 + // Reference: 36.523-2 A.4.4-1/48 + + modulepar boolean pc_Rach_Report := false; // @desc Support of delivery of rachReport upon request from the network + // Reference: 36.523-2 A.4.4-1/85 + + modulepar boolean pc_Re_Attach_AfterDetachColl := false; // @desc Support of automatic re-activation of the EPS bearers during network initiated detach, even though UE has initiated a detach procedure with detach type set to EPS detach or combined EPS/IMSI detach + // Reference: 36.523-2 A.4.4-1/55 + + modulepar boolean pc_RequestIPv4HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv4 address of the Home Agent during Attach procedure + // Reference: 36.523-2 A.4.4-1/23 + + modulepar boolean pc_RequestIPv6HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv6 address of the Home Agent during Attach procedure + // Reference: 36.523-2 A.4.4-1/22 + + modulepar boolean pc_SI_Neighbour_UMTS_Autonomous_Gaps := false; // @desc Upon configuration of si-RequestForHO by the network, supports acquistion of relevant information from a neighbouring UMTS cell by reading the SI of the neighbouring cell using autonomous gaps and reporting + // Reference: 36.523-2, A.4.4-1/100 + + modulepar boolean pc_SI_Neighbour_interFreq_Autonomous_Gaps := false; + // @desc Supports upon configuration of si-requestForHO by the network acquisition of relevant information from a neighbouring intrer-frequency cell by reading the SI of the neighouring cell using autonomous gaps and reporting + // Reference: 36.523-2, A.4.4-1/104 + + modulepar boolean pc_SI_Neighbour_intraFreq_Autonomous_Gaps := false; + // @desc Supports upon configuration of si-requestForHO by the network acquisition of relevant information from a neighbouring intra-frequency cell by reading the SI of the neighouring cell using autonomous gaps and reporting + // Reference: 36.523-2, A.4.4-1/103 + + modulepar boolean pc_SMS_SGs := false; // @desc The UE supports SMS over SGs and is configured for SMS over SGs. If true, at least one of pc_SMS_SGs_MT and pc_SMS_SGs_MO is true. If it is set to true, pc_combined_attach shall be set to true + // + // Reference: 36.523-2, A.4.2.1.1-1/2 + + modulepar boolean pc_SMS_SGs_MO := false; // @desc Support of Short Message Service (SMS) MO over SGs + // Reference: 36.523-2 A.4.4-1/4 + + modulepar boolean pc_SMS_SGs_MT := false; // @desc Support of Short Message Service (SMS) MT over SGs + // Reference: 36.523-2 A.4.4-1/3 + + modulepar boolean pc_SMS_SGs_Multi_MO := false; // @desc Support of sending concatenated multiple short message over SGs + // Reference: 36.523-2 A.4.4.1-72 + + modulepar boolean pc_SRVCC_GERAN_UTRAN := false; // @desc Support for SRVCC from E-UTRAN to GERAN/UTRAN + // Reference: 36.523-2 A.4.4-1/32 + + modulepar boolean pc_Semi_Persistence_Scheduling := false; // @desc Support of semi persistance scheduling + // Reference: 36.523-2 A.4.4-1/50 + + modulepar boolean pc_ShortNameNetwork := false; // @desc Support of storage of the network short name + // Reference: 36.523-2 A.4.4-1/13 + + modulepar boolean pc_Speech := false; // @desc UE supports Speech + // Reference: 34.123-2 A.2/1 + + modulepar boolean pc_Squal_based_CellReselection_between_E_UTRAN_and_GERAN := false; + // @desc Support of Squal based cell reselection to E-UTRAN from GERAN + // Reference: 36.523-2 A.4.4-1/79 + + modulepar boolean pc_Squal_based_CellReselection_to_E_UTRAN_from_UTRAN := false; + // @desc Support of Squal based cell reselection to E-UTRAN from UTRAN + // Reference: 36.523-2 A.4.4-1/57 + + modulepar boolean pc_Squal_based_CellReselection_to_UTRAN_from_E_UTRAN := false; + // @desc Support of Squal based cell reselection to UTRAN from E-UTRAN + // Reference: 36.523-2 A.4.4-1/56 + + modulepar boolean pc_StandaloneGNSS_Location := false; // @desc Support of standalone GNSS receiver to provide detailed location information in RRC measurement report and logged measurements in RRC_IDLE + // Reference: 36.523-2 A.4.4-1/63 + + modulepar boolean pc_SupportOpModeA := false; // @desc UE supports Operation Mode A + // Reference: 34.123-2 A.3/3 + + modulepar boolean pc_SwitchOnOff := false; // @desc switch on/off supported + // Reference: 34.123-2 A.20/35 + + modulepar boolean pc_TAU_connected_in_IMS := false; // @desc Support of TAU in connected mode. Applicable when configured to pc_voice_PS_1_CS_2 and pc_Attach + // Reference: 36.523-2 A.4.4.1-73 + + modulepar boolean pc_TAU_idle_in_IMS := false; // @desc Support of TAU in idle mode. Applicable when configured to pc_voice_PS_1_CS_2 and pc_Attach + // Reference: 36.523-2 A.4.4.1-74 + + modulepar boolean pc_TDD_HCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/2 + + modulepar boolean pc_TDD_LCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/3 + + modulepar boolean pc_TDD_VHCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/8 + + modulepar boolean pc_TTI_Bundling := false; // @desc Support of TTI Bundling + // Reference: 36.523-2 A.4.4-1/51 + + modulepar boolean pc_TestModeforCSGproximity := false; // @desc Support of UE radio bearer test mode for CSG proximity testing + // Reference: 34.123-2 A.13/5 + + modulepar boolean pc_UE_supports_user_initiated_PDN_disconnect := false; + // @desc UE supports user initiated PDN disconnect + // Reference: 36.523-2 A.4.4-2/16 + + modulepar boolean pc_UL_MIMO := false; // @desc Support of UL MIMO + // Reference: 36.523-2 A.4.4-1/70 + + modulepar boolean pc_UMI_ProcNeeded_DuringCSFB := false; // @desc Requiring UMI proceeding to paging response + // Reference: 36.523-2 A.4.4-2/6 + + modulepar boolean pc_UMTS_GSM := false; // @desc UE supports GSM as defined in 21.904 + // Reference: 34.123-2 A.1/4 + + modulepar boolean pc_USIM_Removal := false; // @desc USIM removable without power down supported + // Reference: 36.523-2, A4.4-1/1 + + modulepar boolean pc_UTRA := false; // @desc UE supports UTRA + // Reference: 36.523-2 A.4.1-1/6 + + modulepar boolean pc_UTRAN_ANR := false; // @desc Support of UTRAN ANR + // Reference: 36.523-2 A.4.4-1/65 + + modulepar boolean pc_UTRAN_ProximityIndication := false; // @desc Support of UTRAN Proximity Indication + // Reference: 36.523-2 A.4.4.1/77 + + modulepar boolean pc_UTRA_FeatrGrp_1 := false; // @desc Support of UTRA CELL_PCH and URA_PCH to RRC_IDLE cell reselection + // Reference: 36.523-2 A.4.5-2/1 + + modulepar boolean pc_UTRA_FeatrGrp_2 := false; // @desc Support of EUTRAN measurements and reporting in connected mode + // Reference: 36.523-2 A.4.5-2/2 + + modulepar boolean pc_UTRA_FeatrGrp_3 := false; // @desc Support of UTRA CELL_FACH absolute priority cell reselection for high priority layers + // Reference: 36.523-2 A.4.5-2/3 + + modulepar boolean pc_UTRA_FeatrGrp_4 := false; // @desc Support of UTRA CELL_FACH absolute priority cell reselection for all layers + // Reference: 36.523-2 A.4.5-2/4 + + modulepar boolean pc_UeAssistedAgps := false; // @desc Support of UE assisted Network Assisted GPS L1 C/A + // Reference: 37.571-3 A.4.3-1/11 + + modulepar boolean pc_UeBasedAgps := false; // @desc Support of UE based Network Assisted GPS L1 C/A + // Reference: 37.571-3 A.4.3-1/10 + + modulepar boolean pc_UniversalAndLocalTimeZone := false; // @desc Support of storage of the universal time and local time zone + // Reference: 36.523-2 A.4.4-1/15 + + modulepar boolean pc_UpdateUE_LocationInformation := false; // @desc Update UE Location Information + // Reference: 36.523-2 A.4.3-2/3 + + modulepar boolean pc_UserInitiatedPLMN_Reselection := false; // @desc Support user initiated PLMN reselection in automatic mode + // Reference: 36.523-2 A.4.4-1/69 + + modulepar boolean pc_VoLTE := false; // @desc Support of VoLTE in GSMA PRD IR.92: "IMS profile for Voice and SMS" + // Reference: 36.523-2 A.4.4-1/33 + + modulepar boolean pc_WLAN_Meas_Imm_MDT := false; // @desc Support of WLAN Measurement Collection in Immediate MDT + // Reference: 36.523-2, A.4.4-1/187 + + modulepar boolean pc_WLAN_Meas_logged_MDT := false; // @desc Support of WLAN Measurement Collection in logged MDT + // Reference: 36.523-2, A.4.4-1/185 + + modulepar boolean pc_WLAN_voice := false; // @desc Support for IR.51 + // Reference: 36.523-2, A.4.4-1/117 + + modulepar boolean pc_XCAP_only_APN := false; // @desc Configured with an APN for XCAP only usage + // Reference: 36.523-2 A.4.4-2/12 + + modulepar boolean pc_XCAP_over_Internet_APN := false; // @desc Configured to use Internet APN for XCAP signalling + // Reference: 36.523-2 A.4.4-2/17 + + modulepar boolean pc_ZUC := false; // @desc Support of ZUC algorithm + // Reference: 36.523-2 A.4.4-1/99 + + modulepar boolean pc_eCall_Test_Call := false; // @desc Capability to trigger a Test eCall + // Reference: 34.123-2 A.10/19 + + modulepar boolean pc_eFDD := false; // @desc UE supports EUTRA FDD + // Reference: 36.523-2 A.4.1-1/1 + + modulepar boolean pc_eFDD_MultiBand := false; // @desc Support of multiple E-UTRA FDD bands + // Reference: 36.523-2 A.4.1-2/1 + + modulepar boolean pc_eMBMS := false; // @desc Support of eMBMS + // Reference: 36.523-2 A.4.2.1.1-1/5 + + modulepar boolean pc_eMBMS_SC := false; // @desc Support of eMBMS service continuity + // Reference: 36.523-2 A.4.2.1.1-1/7 + + modulepar boolean pc_eMinimumPeriodicSearchTimer := false; // @desc Support of Minimum Periodic Search Timer + // Reference: 36.523-2 A.4.4-1/84 + + modulepar boolean pc_eRedirectionUTRA := false; // @desc Support of use of the UTRA system information provided by RRCConnectionRelease upon redirection + // Reference: 36.523-2 A.4.4-1/31 + + modulepar boolean pc_eTDD := false; // @desc UE supports EUTRA TDD + // Reference: 36.523-2 A.4.1-1/2 + + modulepar boolean pc_eTDD_MultiBand := false; // @desc Support of multiple E-UTRA TDD bands + // Reference: 36.523-2 A.4.1-2/2 + + modulepar boolean pc_eWLAN := false; // @desc WLAN + // Reference: 36.523-2 A.4.1-1/5 + + modulepar boolean pc_multipleTimingAdvance := false; // @desc Support of multiple timing advances + // Reference: 36.523-2 A.4.4-1A/3 + + modulepar boolean pc_ue_CategoryDL_0 := false; // @desc UE Category DL 0 + // Reference: 36.523-2 A.4.3.2-2/1 + + modulepar boolean pc_ue_CategoryDL_10 := false; // @desc UE Category DL 10 + // Reference: 36.523-2 A.4.3.2-2/5 + + modulepar boolean pc_ue_CategoryDL_11 := false; // @desc UE Category DL 11 + // Reference: 36.523-2 A.4.3.2-2/6 + + modulepar boolean pc_ue_CategoryDL_12 := false; // @desc UE Category DL 12 + // Reference: 36.523-2 A.4.3.2-2/7 + + modulepar boolean pc_ue_CategoryDL_13 := false; // @desc UE Category DL 13 + // Reference: 36.523-2 A.4.3.2-2/8 + + modulepar boolean pc_ue_CategoryDL_14 := false; // @desc UE Category DL 14 + // Reference: 36.523-2 A.4.3.2-2/9 + + modulepar boolean pc_ue_CategoryDL_15 := false; // @desc UE Category DL 15 + // Reference: 36.523-2 A.4.3.2-2/10 + + modulepar boolean pc_ue_CategoryDL_16 := false; // @desc UE Category DL 16 + // Reference: 36.523-2 A.4.3.2-2/11 + + modulepar boolean pc_ue_CategoryDL_17 := false; // @desc UE Category DL 17 + // Reference: 36.523-2 A.4.3.2-2/12 + + modulepar boolean pc_ue_CategoryDL_18 := false; // @desc UE Category DL 18 + // Reference: 36.523-2 A.4.3.2-2/13 + + modulepar boolean pc_ue_CategoryDL_19 := false; // @desc UE Category DL 19 + // Reference: 36.523-2 A.4.3.2-2/14 + + modulepar boolean pc_ue_CategoryDL_1bis := false; // @desc Only in combination with Category UL 1bis and Category 1 UE + // Reference: 36.523-2 A.4.3.2-2A/2 + + modulepar boolean pc_ue_CategoryDL_20 := false; // @desc UE Category DL 20 + // Reference: 36.523-2 A.4.3.2-2/15 + + modulepar boolean pc_ue_CategoryDL_21 := false; // @desc UE Category DL 21 + // Reference: 36.523-2 A.4.3.2-2/16 + + modulepar boolean pc_ue_CategoryDL_22 := false; // @desc UE Category DL 22 + // Reference: 36.523-2 A.4.3.2-2/17 + + modulepar boolean pc_ue_CategoryDL_23 := false; // @desc UE Category DL 23 + // Reference: 36.523-2 A.4.3.2-2/18 + + modulepar boolean pc_ue_CategoryDL_24 := false; // @desc UE Category DL 24 + // Reference: 36.523-2 A.4.3.2-2/19 + + modulepar boolean pc_ue_CategoryDL_25 := false; // @desc UE Category DL 25 + // Reference: 36.523-2 A.4.3.2-2/20 + + modulepar boolean pc_ue_CategoryDL_26 := false; // @desc UE Category DL 26 + // Reference: 36.523-2 A.4.3.2-2/21 + + modulepar boolean pc_ue_CategoryDL_4 := false; // @desc UE Category DL 4 + // Reference: 36.523-2 A.4.3.2-2/1A + + modulepar boolean pc_ue_CategoryDL_6 := false; // @desc UE Category DL 6 + // Reference: 36.523-2 A.4.3.2-2/2 + + modulepar boolean pc_ue_CategoryDL_7 := false; // @desc UE Category DL 7 + // Reference: 36.523-2 A.4.3.2-3/4 + + modulepar boolean pc_ue_CategoryDL_9 := false; // @desc UE Category DL 9 + // Reference: 36.523-2 A.4.3.2-2/4 + + modulepar boolean pc_ue_CategoryDL_M1 := false; // @desc Only in combination with Category UL M1 + // Reference: 36.523-2 A.4.3.2-2A/1 + + modulepar boolean pc_ue_CategoryDL_M2 := false; // @desc Only in combination with Category UL M2 + // Reference: 36.523-2 A.4.3.2-2A/3 + + modulepar boolean pc_ue_CategoryUL_0 := false; // @desc UE Category UL 0 + // Reference: 36.523-2 A.4.3.2-3/1 + + modulepar boolean pc_ue_CategoryUL_13 := false; // @desc UE Category UL 13 + // Reference: 36.523-2 A.4.3.2-3/6 + + modulepar boolean pc_ue_CategoryUL_14 := false; // @desc UE Category UL 14 + // Reference: 36.523-2 A.4.3.2-3/7 + + modulepar boolean pc_ue_CategoryUL_15 := false; // @desc UE Category UL 15 + // Reference: 36.523-2 A.4.3.2-3/8 + + modulepar boolean pc_ue_CategoryUL_16 := false; // @desc UE Category UL 16 + // Reference: 36.523-2 A.4.3.2-3/9 + + modulepar boolean pc_ue_CategoryUL_17 := false; // @desc UE Category UL 17 + // Reference: 36.523-2 A.4.3.2-3/10 + + modulepar boolean pc_ue_CategoryUL_18 := false; // @desc UE Category UL 18 + // Reference: 36.523-2 A.4.3.2-3/11 + + modulepar boolean pc_ue_CategoryUL_19 := false; // @desc UE Category UL 19 + // Reference: 36.523-2 A.4.3.2-3/12 + + modulepar boolean pc_ue_CategoryUL_1bis := false; // @desc Only in combination with Category DL 1bis + // Reference: 36.523-2 A.4.3.2-3A/2 + + modulepar boolean pc_ue_CategoryUL_20 := false; // @desc UE Category UL 20 + // Reference: 36.523-2 A.4.3.2-3/13 + + modulepar boolean pc_ue_CategoryUL_21 := false; // @desc UE Category UL 21 + // Reference: 36.523-2 A.4.3.2-3/14 + + modulepar boolean pc_ue_CategoryUL_22 := false; // @desc UE Category UL 22 + // Reference: 36.523-2 A.4.3.2-3/15 + + modulepar boolean pc_ue_CategoryUL_23 := false; // @desc UE Category UL 23 + // Reference: 36.523-2 A.4.3.2-3/16 + + modulepar boolean pc_ue_CategoryUL_24 := false; // @desc UE Category UL 24 + // Reference: 36.523-2 A.4.3.2-3/17 + + modulepar boolean pc_ue_CategoryUL_25 := false; // @desc UE Category UL 25 + // Reference: 36.523-2 A.4.3.2-3/18 + + modulepar boolean pc_ue_CategoryUL_26 := false; // @desc UE Category UL 26 + // Reference: 36.523-2 A.4.3.2-3/19 + + modulepar boolean pc_ue_CategoryUL_3 := false; // @desc UE Category UL 3 + // Reference: 36.523-2 A.4.3.2-3/2 + + modulepar boolean pc_ue_CategoryUL_5 := false; // @desc UE Category UL 5 + // Reference: 36.523-2 A.4.3.2-3/3 + + modulepar boolean pc_ue_CategoryUL_7 := false; // @desc UE Category UL 7 + // Reference: 36.523-2 A.4.3.2-3/4 + + modulepar boolean pc_ue_CategoryUL_8 := false; // @desc UE Category UL 8 + // Reference: 36.523-2 A.4.3.2-3/5 + + modulepar boolean pc_ue_CategoryUL_M1 := false; // @desc Only in combination with Category DL M1 + // Reference: 36.523-2 A.4.3.2-3A/1 + + modulepar boolean pc_ue_CategoryUL_M2 := false; // @desc Only in combination with Category DL M2 + // Reference: 36.523-2 A.4.3.2-3A/3 + + modulepar boolean pc_ue_Category_1 := false; // @desc UE Category 1 + // Reference: 36.523-2 A.4.3.2-1/1 + + modulepar boolean pc_ue_Category_10 := false; // @desc UE Category 10 + // Reference: 36.523-2 A.4.3.2-1/10 + + modulepar boolean pc_ue_Category_11 := false; // @desc UE Category 11 + // Reference: 36.523-2 A.4.3.2-1/11 + + modulepar boolean pc_ue_Category_12 := false; // @desc UE Category 12 + // Reference: 36.523-2 A.4.3.2-1/12 + + modulepar boolean pc_ue_Category_2 := false; // @desc UE Category 2 + // Reference: 36.523-2 A.4.3.2-1/2 + + modulepar boolean pc_ue_Category_3 := false; // @desc UE Category 3 + // Reference: 36.523-2 A.4.3.2-1/3 + + modulepar boolean pc_ue_Category_4 := false; // @desc UE Category 4 + // Reference: 36.523-2 A.4.3.2-1/4 + + modulepar boolean pc_ue_Category_5 := false; // @desc UE Category 5 + // Reference: 36.523-2 A.4.3.2-1/5 + + modulepar boolean pc_ue_Category_6 := false; // @desc UE Category 6 + // Reference: 36.523-2 A.4.3.2-1/6 + + modulepar boolean pc_ue_Category_7 := false; // @desc UE Category 7 + // Reference: 36.523-2 A.4.3.2-1/7 + + modulepar boolean pc_ue_Category_8 := false; // @desc UE Category 8 + // Reference: 36.523-2 A.4.3.2-1/8 + + modulepar boolean pc_ue_Category_9 := false; // @desc UE Category 9 + // Reference: 36.523-2 A.4.3.2-1/9 + + modulepar boolean pc_voiceOverNR := false; // @desc Support IMS voice over NR + // Reference: 38.508-2 Table A.4.3.7-1/32 + + modulepar boolean pc_voice_PS_1_CS_2 := false; // @desc Configured voice domain preference + // Reference: 36.523-2 A.4.4-2/9 + + +} diff --git a/ttcn/Lib3GPP/PicsPixit/module.mk b/ttcn/Lib3GPP/PicsPixit/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..30c76666b4e78934f9c039eec3627cbd03abc75a --- /dev/null +++ b/ttcn/Lib3GPP/PicsPixit/module.mk @@ -0,0 +1,13 @@ + sources:= \ + EUTRA_NR_Parameters.ttcn \ + NAS_5GC_Parameters.ttcn \ + Parameters.ttcn + + #EUTRA_NR_Parameters.ttcn \ + #IMS_CC_Parameters.ttcn \ + #IMS_CommonParameters.ttcn \ + #module.mk \ + #NAS_5GC_Parameters.ttcn \ + #NR_Parameters.ttcn \ + #Parameters.ttcn \ + #POS_Parameters.ttcn diff --git a/ttcn/Lib3GPP/module.mk b/ttcn/Lib3GPP/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..e0370b2ac931efab4352899f1213fbd582cdc4e6 --- /dev/null +++ b/ttcn/Lib3GPP/module.mk @@ -0,0 +1,14 @@ +sources := \ + ## Parameters.ttcn \ + ## NAS_5GC_Parameters.ttcn + +modules :=\ + Common \ + Common4G5G \ + CommonIP \ + EPS_NAS \ + NAS \ + NG_NAS \ + NasEmulation \ + PicsPixit + diff --git a/ttcn/LibCommon b/ttcn/LibCommon new file mode 160000 index 0000000000000000000000000000000000000000..21bad7c51917d19bebdff5b36983e22922421976 --- /dev/null +++ b/ttcn/LibCommon @@ -0,0 +1 @@ +Subproject commit 21bad7c51917d19bebdff5b36983e22922421976 diff --git a/ttcn/LibNGAP/lib/LibNGAP_EncdecDeclarations.ttcn b/ttcn/LibNGAP/lib/LibNGAP_EncdecDeclarations.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6a044f39272fcea61c7d10a3cfb23863dbcd59b0 --- /dev/null +++ b/ttcn/LibNGAP/lib/LibNGAP_EncdecDeclarations.ttcn @@ -0,0 +1,120 @@ +/** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides external function declarations. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module LibNGAP_EncdecDeclarations { + + import from LibNGAP_TypesAndValues all; + import from NGAP_PDU_Descriptions language "ASN.1:2002" all; + import from NGAP_IEs language "ASN.1:2002" all; + + external function fx_enc_NGAP_PDU (NGAP_PDU p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + external function fx_dec_NGAP_PDU (inout bitstring pdu, out NGAP_PDU p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + + //TODO: if no additional type in TypesAndvalues remove + //external function fx_enc_ProtocolIE (ProtocolIE p) return bitstring + // with {extension "prototype(convert) encode(LibNGAP_codec)"} + //external function fx_dec_ProtocolIE (inout bitstring pdu, out ProtocolIE p) return integer + // with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + /*external function fx_enc_NGAP_IEs (NGAP_IEs p) return bitstring + with {extension "prototype(convert) encode(LibNGAP_codec)"} + external function fx_dec_NGAP_IEs (inout bitstring pdu, out NGAP_IEs p) return integer + with {extension "prototype(sliding) decode(LibNGAP_codec)"}*/ + //external function dec_PDUSessionResourceSetupResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceSetupResponseTransfer p) return integer + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + external function fx_dec_PDUSessionResourceSetupResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceSetupResponseTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceSetupRequestTransfer(NGAP_IEs.PDUSessionResourceSetupRequestTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceSetupUnsuccessfulTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceSetupUnsuccessfulTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + + external function fx_enc_PDUSessionResourceSetupUnsuccessfulTransfer(NGAP_IEs.PDUSessionResourceSetupUnsuccessfulTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceReleaseCommandTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceReleaseCommandTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceReleaseCommandTransfer(NGAP_IEs.PDUSessionResourceReleaseCommandTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceReleaseResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceReleaseResponseTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceReleaseResponseTransfer(NGAP_IEs.PDUSessionResourceReleaseResponseTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceModifyConfirmTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyConfirmTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceModifyConfirmTransfer(NGAP_IEs.PDUSessionResourceModifyConfirmTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceModifyIndicationTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyIndicationTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceModifyIndicationTransfer(NGAP_IEs.PDUSessionResourceModifyIndicationTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceModifyIndicationUnsuccessfulTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyIndicationUnsuccessfulTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceModifyIndicationUnsuccessfulTransfer(NGAP_IEs.PDUSessionResourceModifyIndicationUnsuccessfulTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceModifyResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyResponseTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceModifyResponseTransfer(NGAP_IEs.PDUSessionResourceModifyResponseTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_PDUSessionResourceModifyUnsuccessfulTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyUnsuccessfulTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceModifyUnsuccessfulTransfer(NGAP_IEs.PDUSessionResourceModifyUnsuccessfulTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + + external function fx_dec_UEContextSuspendRequestTransfer(inout bitstring pdu, out NGAP_IEs.UEContextSuspendRequestTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_UEContextSuspendRequestTransfer(NGAP_IEs.UEContextSuspendRequestTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + + external function fx_dec_PDUSessionResourceModifyRequestTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyRequestTransfer p) return integer + with {extension "prototype(sliding) decode(PER:ALIGNED)"} + //with {extension "prototype(sliding) decode(LibNGAP_codec)"} + + external function fx_enc_PDUSessionResourceModifyRequestTransfer(NGAP_IEs.PDUSessionResourceModifyRequestTransfer p) return bitstring + with {extension "prototype(convert) encode(PER:ALIGNED)"} + +} // End of module LibNGAP_EncdecDeclarations \ No newline at end of file diff --git a/ttcn/LibNGAP/lib/LibNGAP_Pixits.ttcn b/ttcn/LibNGAP/lib/LibNGAP_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..0b8285254948bd6423f5d515cbaee4b6da52ab5e --- /dev/null +++ b/ttcn/LibNGAP/lib/LibNGAP_Pixits.ttcn @@ -0,0 +1,659 @@ + /** +* @author ETSI / TTF033 +* @version $URL$ +* $Id$ +* @desc This module provides PIXITS for NGAP protocol. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module LibNGAP_Pixits { + + // LibCommon + import from LibCommon_DataStrings all; + + // LibNGAP + import from NGAP_IEs language "ASN.1:1997" all; + import from NGAP_CommonDataTypes language "ASN.1:1997" all; + + /** + * @desc Define the network transportation layer + */ + type enumerated TransportProtocol { + UDP_E, + TCP_E, + SCTP_E + } + + /** + * @desc Network transportation layer setting + */ + group LibNGAP_Pixit_Parameters { + + /** + * @desc boolean (This is an operator option, not a protocol option), True, if IPv6 addresses are used + */ + modulepar boolean PX_IPv6 := false; + + /** + * @desc enumerated (This is an operator option, not a protocol option) + */ + modulepar TransportProtocol PX_NGAP_TRANSPORT_PROTOCOL := SCTP_E; + + } // End of group LibNGAP_Pixit_Parameters + + /** + * @desc Network transportation layer timers + */ + group LibNGAP_Timers { + + /** + * @desc float for TWait default value for waiting an operator action + */ + modulepar float PX_NGAP_TWAIT:= 30.0; + + modulepar integer PX_TIMER_T3560 := 500; // Default value is 500ms + // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) + + } // End of group NGAP_Timers + + /** + * @desc Unique identifier assigned by the AMF to the UE for NGAP signaling purposes + * @see EETSI TS 138 413 V16.12.0 (2023-05)TSI + */ + modulepar AMF_UE_NGAP_ID PX_AMF_UE_NGAP_ID := 102; + + /** + * @desc This IE carries an identifier assigned by the RAN to the UE for the purposes of NGAP signaling + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar RAN_UE_NGAP_ID PX_RAN_UE_NGAP_ID := 1; + + /** + * @desc The identifier for the PDU session + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar PDUSessionID PX_PDU_SESSION_ID := 0; + + /** + * @desc Single Network Slice Selection Assistance Information + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar SST PX_SST := '01'O; + + /** + * @desc Single Network Slice Selection Assistance Information + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar Oct3 PX_SD := '000000'O; + + /** + * @desc + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar TransportLayerAddress PX_TRANSPORT_LAYER_ADDRESS := oct2bit('0a0000a2'O); // 10.0.0.162 + + /** + * @desc + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar TransportLayerAddress PX_SOURCE_TRANSPORT_LAYER_ADDRESS := oct2bit('0a0000a2'O); // 10.0.0.162 + + /** + * @desc + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar TransportLayerAddress PX_MC_TRANSPORT_LAYER_ADDRESS := oct2bit('0a0000a2'O); // 10.0.0.162 + + /** + * @desc GPRS Tunneling Protocol - Tunnel Endpoint Identifier + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar GTP_TEID PX_GTP_TEID := '4f485cc3'O; + + /** + * @desc To identify QoS flow + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar QosFlowIdentifier PX_QOS_FLOW_IDENTIFIER := 1; + + /** + * @desc To Indicate alternative sets of QoS parameters for the QoS flow + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.10 GBR QoS Flow Information + */ + modulepar AlternativeQoSParaSetIndex PX_ALTERNATIVE_QOS_PARA_SET_INDEX := 1; + + /** + * @desc To indicate the QoS parameters set which can currently be fulfilled + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.153 Alternative QoS Parameters Set Notify Index + */ + modulepar AlternativeQoSParaSetNotifyIndex PX_ALTERNATIVE_QOS_PARA_SET_NOTIFY_INDEX := 0; + + /** + * @desc The Mobile Country Code (MCC) and Mobile Network Code (MNC) + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.3.5 PLMN Identity + */ + modulepar PLMNIdentity PX_PLMN_IDENTITY := '00f110'O; // MCC: 1, MNC: 01 + + /** + * @desc The leftmost bits of the E-UTRA Cell Identity IE correspond to the ng-eNB ID + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.9 E-UTRA CGI + */ + modulepar EUTRACellIdentity PX_EUTRA_CELL_IDENTITY := hex2bit('1234501'H); + + modulepar NRCellIdentity PX_NR_CELL_IDENTITY := hex2bit('123450123'H); + /** + * @desc + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar octetstring PX_PDU_SESSION_RESOURCE_RELEASE_COMMAND_TRANSFER := '1000'O; + + /** + * @desc The expected activity time in seconds + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.94 Expected UE Activity Behaviour + */ + modulepar ExpectedActivityPeriod PX_EXPECTED_ACTIVITY_PERIOD := 10; + + /** + * @desc The expected idle time in seconds + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.94 Expected UE Activity Behaviour + */ + modulepar ExpectedIdlePeriod PX_EXPECTED_IDLE_PERIOD := 10; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_INITIAL_SETUP_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_UE_CONTEXT_RELEASE_COMMAND_CAUSE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_UE_CONTEXT_MODIFICATION_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_UE_CONTEXT_SUSPEND_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_UE_CONTEXT_RESUME_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_HANDOVER_REQUIRED := resource_optimisation_handover; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_HANDOVER_PREPARATION_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_HANDOVER_REQUEST := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_HANDOVER_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_HANDOVER_CANCEL := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_CAUSE_MULTIPLE_LOCATION_REPORTING := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_NG_SETUP_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_RAN_CONFIGURATION_UPDATE_FAILURE := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseRadioNetwork PX_AMF_CONFIGURATION_UPDATE_FAILURE := unspecified; + + + modulepar CauseTransport PX_xxx_1 := unspecified; + + modulepar CauseProtocol PX_xxx_2 := unspecified; + + /** + * @desc To indicate the reason for a particular event for the NGAP protocol + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.2 Cause + */ + modulepar CauseNas PX_CAUSE_NAS_NON_DELIVERY_INDICATION := unspecified; + + modulepar CauseMisc PX_xxx_4 := unspecified; + + + /** + * @desc To indicate the RRC state of the UE + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.92 RRC State + */ + modulepar RRCState PX_RRC_STATE := inactive; + + /** + * @desc To identify the AMF within the global 5G network + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause + */ + modulepar AMFPointer PX_AMF_POINTER:= '000001'B; + + /** + * @desc To identify the AMF within the global 5G network + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause + */ + modulepar AMFRegionID PX_AMF_REGION_ID:= '10000000'B; + + /** + * @desc To identify the AMF within the global 5G network + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause + */ + modulepar AMFSetID PX_AMF_SET_ID:= '0000000100'B; + + /** + * @desc + * @see ETSI TS 133 401 + */ + modulepar UL_NAS_MAC PX_UL_NAS_MAC := '0000000000000000'B; + + /** + * @desc + * @see ETSI TS 133 401 + */ + modulepar UL_NAS_Count PX_UL_NAS_COUNT := '00000'B; + + /** + * @desc + * @see ETSI TS 133 401 + */ + modulepar DL_NAS_MAC PX_DL_NAS_MAC := '0000000000000000'B; + + /** + * @desc To indicate the reason for RRC Connection Establishment/Resume + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.111 RRC Establishment Cause + */ + modulepar RRCEstablishmentCause PX_RRC_ESTABLISHMENT_CAUSE := notAvailable; + + /** + * @desc To indicate the reason for RRC Connection Establishment/Resume + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.111 RRC Establishment Cause + */ + modulepar RRCEstablishmentCause PX_RRC_RESUME_CAUSE := notAvailable; + + /** + * @desc To indicate which kind of handover was triggered in the source side + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.22 Handover Type + */ + modulepar HandoverType PX_HANDOVER_TYPE := intra5gs; + + /** + * @desc To indicates the UE Aggregate Maximum Bit Rate as specified in TS 23.501 in the downlink direction (bit/s) + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.58 UE Aggregate Maximum Bit Rate + */ + modulepar BitRate PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_DL := 100000000; + + /** + * @desc To indicates the UE Aggregate Maximum Bit Rate as specified in TS 23.501 in the uplink direction (bit/s) + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.58 UE Aggregate Maximum Bit Rate + */ + modulepar BitRate PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_UL := 1000000; + + /** + * @desc Each position in the bitmap represents an encryption algorithm + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.86 UE Security Capabilities + */ + modulepar NRencryptionAlgorithms PX_NR_ENCRYPTION_ALGORITHMS; + + /** + * @desc Each position in the bitmap represents an encryption algorithm + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.86 UE Security Capabilities + */ + modulepar NRintegrityProtectionAlgorithms PX_NR_INTEGRITY_PROTECTION_ALGORITHMS; + + /** + * @desc Each position in the bitmap represents an encryption algorithm + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.86 UE Security Capabilities + */ + modulepar EUTRAencryptionAlgorithms PX_EUTRA_ENCRYPTION_ALGORITHMS; + + /** + * @desc Each position in the bitmap represents an encryption algorithm + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.86 UE Security Capabilities + */ + modulepar EUTRAintegrityProtectionAlgorithms PX_EUTRA_INTEGRITY_PROTECTION_ALGORITHMS; + + modulepar NextHopChainingCount PX_NEXT_HOP_CHAINING_COUNT; + + modulepar SecurityKey PX_NEXT_HOP_NH; + + /** + * @desc Contains the DRB ID + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.53 DRB ID + */ + modulepar DRB_ID PX_DRB_ID := 1; + + /** + * @desc To indicate the Paging DRX as defined in TS 38.304 and TS 36.304 + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.90 Paging DRX + */ + modulepar PagingDRX PX_PAGING_DRX := v32; + + /** + * @desc To uniquely identify the AMF + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.3.21 AMF Name + */ + modulepar AMFName PX_AMF_NAME := "amarisoft.amf.5gc.mnc001.mcc001.3gppnetwork.org"; + + /** + * @desc Human readable name of the NG-RAN node + * @see ETSI TS 138 413 V16.12.0 (2023-05) + */ + modulepar RANNodeName PX_RAN_NODE_NAME := "gnb0012345"; + + /** + * @desc To identify the warning message + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.35 Message Identifier + */ + modulepar MessageIdentifier PX_MESSAGE_IDENTIFIER := '0000000000000000'B; + + /** + * @desc To identifies a particular message from the source and type indicated by the Message Identifier and is altered every time the message with a given Message Identifier is changed + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.36 Serial Number + */ + modulepar SerialNumber PX_SERIAL_NUMBER := '0000000000000000'B; + + /** + * @desc To indicate the periodicity of the warning message to be broadcast + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.49 Repetition Period + */ + modulepar RepetitionPeriod PX_REPETITION_PERIOD := 3; + + /** + * @desc To indicate the number of times a message is to be broadcast + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.1.38 Number of Broadcasts Requested + */ + modulepar NumberOfBroadcastsRequested PX_NUMBER_OF_BROADCASTS_REQUESTED := 4; + + modulepar octetstring PX_SOURCE_TO_TARGET_TRANSPARENT_CONTAINER; + + modulepar EPS_TAC PX_EPS_TAC := '0000'O; + + modulepar Bit20 PX_MACRO_NGENB_ID; + + modulepar Bit18 PX_SHORT_MACRO_NGENB_ID; + + modulepar Bit21 PX_LONG_MACRO_NGENB_ID; + + modulepar Bit10 PX_UE_IDENTITY_INDEX_VALUE; + + modulepar PeriodicRegistrationUpdateTimer PX_PERIODIC_REGISTRATION_UPDATE_TIMER; + + modulepar NGRANTraceID PX_NGRAN_TRACE_ID; + + modulepar InterfacesToTrace PX_INTERFACES_TO_TRACE; + + modulepar UERadioCapabilityID PX_U_E_RADIO_CAPABILITY_ID; + + modulepar Extended_ConnectedTime PX_EXTENDED_CONNECTED_TIME; + + modulepar BitRate PX_UE_SIDELINK_AGGREGATE_MAXIMUM_BIT_RATE; + + modulepar FiveQI PX_FIVE_QI; + + modulepar bitstring PX_GNB_ID := '10101010101010101010101010101010'B; + + /** + * @desc To indicate IMEISV value with a mask, to identify a terminal model without identifying an individual Mobile Equipment. + * @see 138 413 V16.12.0 (2023-05) Clause 9.3.1.54 Masked IMEISV + */ + modulepar bitstring PX_MaskedIMEISV; + + /** + * @desc To indicate local configuration for RRM strategies such as camp priorities in Idle mode and control of inter-RAT/inter-frequency handover in Active mode + * @see 138 413 V16.12.0 (2023-05) Clause 9.3.1.61 Index to RAT/Frequency Selection Priority + */ + modulepar integer PX_Index_to_RAT_Frequency_Selection_Priority; + + /** + * @desc eNB Identity. + * @see ETSI TS 136 413 Clause 9.2.1.37 Global eNB ID + */ + //modulepar ENB_ID PX_eNB_ID := { + // homeENB_ID := '0000000000000000000000000000'B + //}; + + /** + * @desc eNB Identity. + * @see ETSI TS 136 413 Clause 9.2.1.37 Global eNB ID + */ + // modulepar ENB_ID PX_eNB_ID_UNKNOWN := { + // homeENB_ID := '1100000000000000000000000000'B + // }; + + /** + * @desc Cell Identity. + */ + //modulepar CellIdentity PX_CELL_ID := '0000000000000000000000000000'B; + + /** + * @desc The TAC is used to uniquely identify a Tracking Area Code. + * @see ETSI TS 136 413 Clause 9.2.3.7 TAC + */ + /** + * @desc To uniquely identify a Tracking Area Code + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.3.3.10 TAC + */ + //modulepar TAC PX_TAC := '000000'O; + modulepar TAC PX_TACode := '000000'O; + + /** + * @desc The MME Group ID. + */ + //modulepar MME_Group_ID PX_MME_GROUP_ID := '0000'O; + + /** + * @desc The MME Code to uniquely identify an MME within an MME pool area. + * @see ETSI TS 136 413 Clause 9.2.3.12 MMEC + */ + //modulepar MME_Code PX_MME_CODE := '01'O; + + /** + * @desc The relative processing capacity of an MME with respect to the other MMEs in the pool in order to load-balance MMEs within a pool defined in TS 23.401. + * @see ETSI TS 136 413 Clause 9.2.3.17 Relative MME Capacity + */ + //modulepar RelativeMMECapacity PX_RELATIVE_MME_CAPACITY := 128; + + /** + * @desc The Message Identifier IE identifies a warning message. + * @see ETSI TS 136 413 Clause 9.2.1.44 Message Identifier + */ + //modulepar MessageIdentifier PX_MESSAGE_IDENTIFIER := oct2bit('0000'O); + + /** + * @desc The Serial Number IE identifies a particular message from the source and type indicated by the Message Identifie. + * @see ETSI TS 136 413 Clause 9.2.1.45 Serial Number + */ + //modulepar SerialNumber PX_SERIAL_NUMBER := oct2bit('0000'O); + + /** + * @desc The Repetition Period IE indicates the periodicity of the warning message to be broadcast. + * @see ETSI TS 136 413 Clause 9.2.1.48 Repetition Period + */ + //modulepar RepetitionPeriod PX_REPETITION_PERIOD := 1; + + /** + * @desc The Number of Broadcast Requested IE indicates the number of times a message is to be broadcast. + * @see ETSI TS 136 413 Clause 9.2.1.49 Number of Broadcasts Requested + */ + //modulepar NumberOfBroadcasts PX_NUMBER_OF_BROADCASTS_REQUESTED := 1; + + /** + * @desc The Emergency Area ID IE is used to indicate the area which has the emergency impact. + * @see ETSI TS 136 413 Clause 9.2.1.47 Emergency Area ID + */ + //modulepar EmergencyAreaID PX_EMERGENCY_AREA_ID := '000000'O; + + /** + * @desc Event Type. + * @see ETSI TS 136 413 Clause 9.2.1.34 Request Type + */ + //modulepar EventType PX_EVENT_TYPE := direct; + + /** + * @desc Report Area. + * @see ETSI TS 136 413 Clause 9.2.1.34 Request Type + */ + //modulepar ReportArea PX_REPORT_AREA := ecgi; + + /** + * @desc The E-UTRAN Trace ID. + * @see ETSI TS 136 413 Clause 9.2.1.4 Trace Activation + */ + //modulepar E_UTRAN_Trace_ID PX_EUTRAN_TRACE_ID := '0000000000000000'O; + + /** + * @desc The interfaces to trace. + * @see ETSI TS 136 413 Clause 9.2.1.4 Trace Activation + */ + //modulepar InterfacesToTrace PX_INTERFACES_TO_TRACE := '00000000'B; + + /** + * @desc The trace depth. + * @see ETSI TS 136 413 Clause 9.2.1.4 Trace Activation + */ + //modulepar TraceDepth PX_TRACE_DEPTH := medium; + + /** + * @desc Transport Layer Address. + * @see ETSI TS 136 413 Clause 9.2.2.1 Transport Layer Address + */ + //modulepar TransportLayerAddress PX_TRANSPORT_LAYER_ADDRESS := oct2bit('0a00000a'O); + + /** @desc CDMA2000 message + * @see ETSI TS 136 413 Clause 9.2.1.23 CDMA2000-PDU + */ + //modulepar octetstring PX_CDMA200_PDU := ''O; + + /** @desc CDMA2000 RAT type + * @see ETSI TS 136 413 Clause 9.2.1.24 CDMA2000 RAT Type + */ + //modulepar Cdma2000RATType PX_CDMA200_RAT_TYPE := hRPD; + + /** @desc CDMA2000 Reference Cell ID + * @see ETSI TS 136 413 Clause 9.2.1.25 CDMA2000 Sector ID + */ + //modulepar octetstring PX_CDMA200_SECTOR_ID := ''O; + + /** @desc The Paging DRX as defined in TS 36.304. + * @see ETSI TS 136 413 Clause 9.2.1.16 Paging DRX + */ + //modulepar PagingDRX PX_PAGING_DRX := v256; + + /** @desc The identifier of the Closed Subscriber Group, as defined in TS 23.003. + * @see ETSI TS 136 413 Clause 9.2.1.62 CSG Id + */ + //modulepar Bit27 PX_CSG_ID := '000000000000000000000000000'B; + + /** @desc The UE Identity Index value IE is used by the eNB to calculate the Paging Frame TS 36.304. + * @see ETSI TS 136 413 Clause 9.2.3.10 UE Identity Index value + */ + //modulepar UEIdentityIndexValue PX_UE_IDENTITY_INDEX_VALUE := '0000000000'B; + + /** @desc The International Mobile Subscriber Identity, which is commonly used to identify the UE in the CN. + * @see ETSI TS 136 413 Clause 9.2.3.11 IMSI + */ + //modulepar IMSI PX_IMSI := '000000'O; + + /** @desc Indicates whether Paging is originated from the CS or PS domain. + * @see ETSI TS 136 413 Clause 9.2.3.22 CN Domain + */ + //modulepar CNDomain PX_CNDOMAIN := ps; + + /** @desc Indicates a not supported algorithm. + * @see ETSI TS 136 413 Clause 9.2.1.40 UE Security Capabilities + */ + //modulepar EncryptionAlgorithms PX_UNSUPPORTED_ENCRYPTION_ALGORITHM := '1111111111111111'B; + + /** @desc Indicates a supported encription algorithm. + * @see ETSI TS 136 413 Clause 9.2.1.40 UE Security Capabilities + */ + ///modulepar EncryptionAlgorithms PX_ENCRYPTION_ALGORITHM := '0101010101010101'B; + + /** @desc Indicates a supported integrity protection algorithm. + * @see ETSI TS 136 413 Clause 9.2.1.40 UE Security Capabilities + */ + //modulepar IntegrityProtectionAlgorithms PX_INTEGRITY_PROTECTION_ALGORITHM := '0101010101010101'B; + + /** @desc Indicates the procedure value. + * @see ETSI TS 136 413 Clause 9.2.1.21 Criticality Diagnostics + */ + //modulepar ProcedureCode PX_PROCEURE_CODE := 0; + + /** @desc Indicates triggering message value + * @see ETSI TS 136 413 Clause 9.2.1.21 Criticality Diagnostics + */ + //modulepar TriggeringMessage PX_TRIGGERING_CODE := initiating_message; + + /** @desc Indicates a the criticality + * @see ETSI TS 136 413 Clause 9.2.1.21 Criticality Diagnostics + */ + //modulepar Criticality PX_CRITICALITY := ignore; + + /** @desc Indicates the transport layer address. + */ + //modulepar TransportLayerAddress PX_TPORT_LAYER_ADDR := '1'B; + + /** @desc Indicates an unacceptable transport layer address. + */ + //modulepar TransportLayerAddress PX_INVALID_TPORT_LAYER_ADDR := '0'B; + + /** @desc Indicates the Downlink GTP TEID. + */ + //modulepar GTP_TEID PX_DL_GTP_TEID := '00000000'O; + + /** @desc Indicates the source_ToTarget_TransparentContainer value. + * @see ETSI TS 136 413 Clause 9.2.1.56 Source to Target Transparent Container + */ + //modulepar Source_ToTarget_TransparentContainer PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER := '12121212'O; + + /** @desc Indicates the target_ToSource_TransparentContainer value. + * @see ETSI TS 136 413 Clause 9.2.1.57 Target to Source Transparent Container + */ + //modulepar Target_ToSource_TransparentContainer PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER := '12121212'O; + +} // End of module LibNGAP_Pixits + diff --git a/ttcn/LibNGAP/lib/LibNGAP_Templates.ttcn b/ttcn/LibNGAP/lib/LibNGAP_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8a73cfbce796e31d4da395f06b19318e8690af8b --- /dev/null +++ b/ttcn/LibNGAP/lib/LibNGAP_Templates.ttcn @@ -0,0 +1,24449 @@ +/** + * @author ETSI / TTF033 + * @version $URL$ + * $Id$ + * @desc This module provides templates for NGAP protocol. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 138 413 / 3GPP TS 38.413 version 16.12 Release 16 + */ +module LibNGAP_Templates { + + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; + + // Lib3GPP/NAS + import from NAS_CommonTypeDefs all; + + // LibNGAP + import from NGAP_Constants language "ASN.1:2002" all; + import from NGAP_CommonDataTypes language "ASN.1:2002" all; + import from NGAP_IEs language "ASN.1:2002" all; + import from NGAP_PDU_Contents language "ASN.1:2002" all; + import from NGAP_PDU_Descriptions language "ASN.1:2002" all; + import from NGAP_Containers language "ASN.1:2002" all; + + import from LibNGAP_TypesAndValues all; + import from LibNGAP_Pixits all; + + group g_NGAP { + + group g_NGAP_PDU { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1.1 PDU SESSION RESOURCE SETUP REQUEST + */ + template (value) NGAP_PDU m_ngap_initMsg( + in template (value) InitiatingMessage p_msg + ) := { + initiatingMessage := p_msg + } // End of template m_ngap_initMsg + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 8.1 List of NGAP Elementary Procedures + */ + template (value) NGAP_PDU m_ngap_succMsg( + in template (value) SuccessfulOutcome p_msg + ) := { + successfulOutcome := p_msg + } // End of template m_ngap_succMsg + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 8.1 List of NGAP Elementary Procedures + */ + template (value) NGAP_PDU m_ngap_unsuccMsg( + in template (value) UnsuccessfulOutcome p_msg + ) := { + unsuccessfulOutcome := p_msg + } // End of template m_ngap_unsuccMsg + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1.1 PDU SESSION RESOURCE SETUP REQUEST + */ + template (present) NGAP_PDU mw_ngap_initMsg( + template (present) InitiatingMessage p_msg := ? + ) := { + initiatingMessage := p_msg + } // End of template mw_ngap_initMsg + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 8.1 List of NGAP Elementary Procedures + */ + template (present) NGAP_PDU mw_ngap_succMsg( + template (present) SuccessfulOutcome p_msg := ? + ) := { + successfulOutcome := p_msg + } // End of template mw_ngap_succMsg + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 8.1 List of NGAP Elementary Procedures + */ + template (present) NGAP_PDU mw_ngap_unsuccMsg( + template (present) UnsuccessfulOutcome p_msg := ? + ) := { + unsuccessfulOutcome := p_msg + } // End of template mw_ngap_unsuccMsg + + } // End of group Receive + + } // End of group g_NGAP_PDU + + group Message_Functional_Definition_and_Content { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1 PDU Session Management Messages + */ + group PDU_Session_Management_Messages { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1 PDU Session Management Messages + */ + group PDU_SESSION_RESOURCE_SETUP_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1.1 PDU SESSION RESOURCE SETUP REQUEST + */ + template (value) InitiatingMessage m_n2_PDUSessionResourceSetupRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSetupListSUReq p_pDUSessionResourceSetupListSUReq + ) := { + procedureCode := id_PDUSessionResourceSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSUReq, + criticality := ignore, + value_ := { PDUSessionResourceSetupListSUReq := p_pDUSessionResourceSetupListSUReq } + } + } + } + } + } // End of template m_n2_PDUSessionResourceSetupRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1.1 PDU SESSION RESOURCE SETUP REQUEST + */ + template (present) InitiatingMessage mw_n2_PDUSessionResourceSetupRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceSetupListSUReq p_pDUSessionResourceSetupListSUReq := ? + ) := { + procedureCode := id_PDUSessionResourceSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSUReq, + criticality := ignore, + value_ := { PDUSessionResourceSetupListSUReq := p_pDUSessionResourceSetupListSUReq } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceSetupRequest + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_SETUP_REQUEST + + group PDU_SESSION_RESOURCE_SETUP_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1.2 PDU SESSION RESOURCE SETUP RESPONSE + */ + template (value) SuccessfulOutcome m_n2_PDUSessionResourceSetupResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSetupListSURes p_pDUSessionResourceSetupListSURes + ) := { + procedureCode := id_PDUSessionResourceSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSURes, + criticality := ignore, + value_ := { PDUSessionResourceSetupListSURes := p_pDUSessionResourceSetupListSURes } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceSetupResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.1.2 PDU SESSION RESOURCE SETUP RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceSetupResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceSetupListSURes p_pDUSessionResourceSetupListSUReq := ? + ) := { + procedureCode := id_PDUSessionResourceSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSURes, + criticality := ignore, + value_ := { PDUSessionResourceSetupListSURes := p_pDUSessionResourceSetupListSUReq} + } + } + } + } + } // End of template mw_n2_PDUSessionResourceSetupResponse + + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceSetupResponseFailed( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceFailedToSetupListSURes p_pDUSessionResourceFailedToSetupListSUReq := ? + ) := { + procedureCode := id_PDUSessionResourceSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceFailedToSetupListSURes, + criticality := ignore, + value_ := { PDUSessionResourceFailedToSetupListSURes := p_pDUSessionResourceFailedToSetupListSUReq} + } + } + } + } + } // End of template mw_n2_PDUSessionResourceSetupResponse + + } // End of group Receive + } // End of group PDU_SESSION_RESOURCE_SETUP_RESPONSE + + group PDU_SESSION_RESOURCE_RELEASE_COMMAND { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.3 PDU SESSION RESOURCE RELEASE COMMAND + */ + template (value) InitiatingMessage m_n2_PDUSessionResourceReleaseCommand( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceToReleaseListRelCmd p_pDUSessionResourceToReleaseListRelCmd + ) := { + + procedureCode := id_PDUSessionResourceToReleaseListRelCmd, + criticality := reject, + value_ := { + PDUSessionResourceReleaseCommand := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceToReleaseListRelCmd, + criticality := reject, + value_ := { PDUSessionResourceToReleaseListRelCmd := p_pDUSessionResourceToReleaseListRelCmd } + } + } + } + } + } // End of template m_n2_PDUSessionResourceReleaseCommand + + } // End of group Send + + group Receive { + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.3 PDU SESSION RESOURCE RELEASE COMMAND + */ + template (present) InitiatingMessage mw_n2_PDUSessionResourceReleaseCommand( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceToReleaseListRelCmd p_pDUSessionResourceToReleaseListRelCmd := ? + ) := { + + procedureCode := id_PDUSessionResourceToReleaseListRelCmd, + criticality := reject, + value_ := { + PDUSessionResourceReleaseCommand := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceToReleaseListRelCmd, + criticality := reject, + value_ := { PDUSessionResourceToReleaseListRelCmd := p_pDUSessionResourceToReleaseListRelCmd } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceReleaseCommand + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_RELEASE_COMMAND + + group PDU_SESSION_RESOURCE_RELEASE_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.4 PDU SESSION RESOURCE RELEASE RESPONSE + */ + template (value) SuccessfulOutcome m_n2_PDUSessionResourceReleaseResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceReleasedListRelRes p_pDUSessionResourceReleasedListRelRes + ) := { + + procedureCode := id_PDUSessionResourceRelease, + criticality := reject, + value_ := { + PDUSessionResourceReleaseResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceReleasedListRelRes, + criticality := reject, + value_ := { PDUSessionResourceReleasedListRelRes := p_pDUSessionResourceReleasedListRelRes + } + } + } + } + } + } // End of template m_n2_PDUSessionResourceReleaseResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.4 PDU SESSION RESOURCE RELEASE RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceReleaseResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceReleasedListRelRes p_pDUSessionResourceReleasedListRelRes := ? + ) := { + + procedureCode := id_PDUSessionResourceRelease, + criticality := reject, + value_ := { + PDUSessionResourceReleaseResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceReleasedListRelRes, + criticality := reject, + value_ := { PDUSessionResourceReleasedListRelRes := p_pDUSessionResourceReleasedListRelRes + } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceReleaseResponse + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_RELEASE_RESPONSE + + group PDU_SESSION_RESOURCE_MODIFY_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.5 PDU SESSION RESOURCE MODIFY REQUEST + */ + template (value) InitiatingMessage m_n2_PDUSessionResourceModify( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceModifyListModReq p_pDUSessionResourceModifyListModReq + ) := { + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := reject, + value_ := { PDUSessionResourceModifyListModReq := p_pDUSessionResourceModifyListModReq } + } + } + } + } + } // End of template m_n2_PDUSessionResourceModify + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.5 PDU SESSION RESOURCE MODIFY REQUEST + */ + template (present) InitiatingMessage mw_n2_PDUSessionResourceModify( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceModifyListModReq p_pDUSessionResourceModifyListModReq := ? + ) := { + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := reject, + value_ := { PDUSessionResourceModifyListModReq := p_pDUSessionResourceModifyListModReq } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceModify + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_MODIFY_REQUEST + + group PDU_SESSION_RESOURCE_MODIFY_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.6 PDU SESSION RESOURCE MODIFY RESPONSE + */ + template (value) SuccessfulOutcome m_n2_PDUSessionResourceModifyResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceModifyListModRes p_pDUSessionResourceModifyListModRes + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := reject, + value_ := { PDUSessionResourceModifyListModRes := p_pDUSessionResourceModifyListModRes + } + } + } + } + } + } // End of template m_n2_PDUSessionResourceModifyResponse + + template (value) SuccessfulOutcome m_n2_PDUSessionResourceModifyResponseFailedToMod( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID, + in template (value) PDUSessionResourceFailedToModifyListModRes p_pDUSessionResourceFailedToModifyListModRes + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceFailedToModifyListModRes, + criticality := reject, + value_ := { PDUSessionResourceFailedToModifyListModRes := p_pDUSessionResourceFailedToModifyListModRes + } + } + } + } + } + } // End of template m_n2_PDUSessionResourceModifyResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.6 PDU SESSION RESOURCE MODIFY RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceModifyResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceModifyListModRes p_pDUSessionResourceModifyListModRes := ? + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := reject, + value_ := { PDUSessionResourceModifyListModRes := p_pDUSessionResourceModifyListModRes + } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceModifyResponse + + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceModifyResponseFailedToMod( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceFailedToModifyListModRes p_pDUSessionResourceFailedToModifyListModRes := ? + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceFailedToModifyListModRes, + criticality := reject, + value_ := { PDUSessionResourceFailedToModifyListModRes := p_pDUSessionResourceFailedToModifyListModRes + } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceModifyResponse + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_MODIFY_RESPONSE + + group PDU_SESSION_RESOURCE_NOTIFY { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.7 PDU SESSION RESOURCE NOTIFY + */ + template (value) InitiatingMessage m_n2_PDUSessionResourceNotify( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceNotifyList p_pDUSessionResourceNotifyList + ) := { + + procedureCode := id_PDUSessionResourceNotify, + criticality := reject, + value_ := { + PDUSessionResourceNotify := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceNotifyList, + criticality := reject, + value_ := { PDUSessionResourceNotifyList := p_pDUSessionResourceNotifyList } + } + } + } + } + } // End of template m_n2_PDUSessionResourceNotify + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.7 PDU SESSION RESOURCE NOTIFY + */ + template (present) InitiatingMessage mw_n2_PDUSessionResourceNotify( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceNotifyList p_pDUSessionResourceNotifyList := ? + ) := { + + procedureCode := id_PDUSessionResourceNotify, + criticality := reject, + value_ := { + PDUSessionResourceNotify := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceNotifyList, + criticality := reject, + value_ := { PDUSessionResourceNotifyList := p_pDUSessionResourceNotifyList } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceNotify + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_NOTIFY + + group PDU_SESSION_RESOURCE_MODIFY_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.6 PDU SESSION RESOURCE MODIFY RESPONSE + */ + template (value) InitiatingMessage m_n2_PDUSessionResourceModifyIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceModifyListModInd p_pDUSessionResourceModifyListModInd + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := reject, + value_ := { PDUSessionResourceModifyListModInd := p_pDUSessionResourceModifyListModInd + } + } + } + } + } + } // End of template m_n2_PDUSessionResourceModifyIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.6 PDU SESSION RESOURCE MODIFY RESPONSE + */ + template (present) InitiatingMessage mw_n2_PDUSessionResourceModifyIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceModifyListModInd p_pDUSessionResourceModifyListModInd := ? + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := reject, + value_ := { PDUSessionResourceModifyListModInd := p_pDUSessionResourceModifyListModInd + } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceModifyIndication + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_MODIFY_INDICATION + + group PDU_SESSION_RESOURCE_MODIFY_CONFIRM { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.9 PDU SESSION RESOURCE MODIFY CONFIRM + */ + template (value) SuccessfulOutcome m_n2_PDUSessionResourceModifyConfirm( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceModifyListModCfm p_pDUSessionResourceModifyListModCfm + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyConfirm := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := ignore, + value_ := { PDUSessionResourceModifyListModCfm := p_pDUSessionResourceModifyListModCfm + } + } + } + } + } + } // End of template m_n2_PDUSessionResourceModifyConfirm + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.9 PDU SESSION RESOURCE MODIFY CONFIRM + */ + template (value) SuccessfulOutcome m_n2_PDUSessionResourceModifyConfirm_failed( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceFailedToModifyListModCfm p_PDUSessionResourceFailedToModifyListModCfm + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyConfirm := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceFailedToModifyListModCfm, + criticality := ignore, + value_ := { PDUSessionResourceFailedToModifyListModCfm := p_PDUSessionResourceFailedToModifyListModCfm + } + } + } + } + } + } // End of template m_n2_PDUSessionResourceModifyConfirm_failed + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.9 PDU SESSION RESOURCE MODIFY CONFIRM + */ + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceModifyConfirm( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceModifyListModCfm p_pDUSessionResourceModifyListModCfm := ? + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyConfirm := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceModifyListModReq, + criticality := ignore, + value_ := { PDUSessionResourceModifyListModCfm := p_pDUSessionResourceModifyListModCfm + } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceModifyConfirm + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) 9.2.1.9 PDU SESSION RESOURCE MODIFY CONFIRM + */ + template (present) SuccessfulOutcome mw_n2_PDUSessionResourceModifyConfirm_failed( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceFailedToModifyListModCfm p_PDUSessionResourceFailedToModifyListModCfm := ? + ) := { + + procedureCode := id_PDUSessionResourceModify, + criticality := reject, + value_ := { + PDUSessionResourceModifyConfirm := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceFailedToModifyListModCfm, + criticality := ignore, + value_ := { PDUSessionResourceFailedToModifyListModCfm := p_PDUSessionResourceFailedToModifyListModCfm + } + } + } + } + } + } // End of template mw_n2_PDUSessionResourceModifyConfirm_failed + + } // End of group Receive + + } // End of group PDU_SESSION_RESOURCE_MODIFY_CONFIRM + + } // End of group PDU_Session_Management_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2 UE Context Management Messages + */ + group UE_Context_Management_Messages { + + group INITIAL_CONTEXT_SETUP_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST + */ + template (value) InitiatingMessage m_n2_InitialContextSetupRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) GUAMI p_gUAMI, + in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupRequest := { + + + + + + + + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListCxtReq, + criticality := reject, + value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq } + } + } + } + } + } // End of template m_n2_InitialContextSetupRequest + + template (value) InitiatingMessage m_n2_InitialContextSetupRequest_noPDUSessionResourceSetupListCxtReq( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) GUAMI p_gUAMI, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityKey, + criticality := reject, + value_ := { SecurityKey := p_nextHopNH } + } + } + } + } + } // End of template m_n2_InitialContextSetupRequest_noPDUSessionResourceSetupListCxtReq + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST + */ + template (value) InitiatingMessage m_n2_InitialContextSetupRequest_optional_TraceActivation( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) GUAMI p_gUAMI, + in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH, + in template (value) TraceActivation p_traceActivation + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_PDUSessionResourceSetupListCxtReq, + criticality := reject, + value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityKey, + criticality := reject, + value_ := { SecurityKey := p_nextHopNH } + }, + { + id := id_TraceActivation, + criticality := ignore, + value_ := { TraceActivation := p_traceActivation } + } + } + } + } + } // End of template m_n2_InitialContextSetupRequest_optional_TraceActivation + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST + */ + template (value) InitiatingMessage m_n2_InitialContextSetupRequest_optional_MobilityRestriction( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) GUAMI p_gUAMI, + in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH, + in template (value) MobilityRestrictionList p_mobilityRestrictionList + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_PDUSessionResourceSetupListCxtReq, + criticality := reject, + value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityKey, + criticality := reject, + value_ := { SecurityKey := p_nextHopNH } + }, + { + id := id_TraceActivation, + criticality := ignore, + value_ := { MobilityRestrictionList := p_mobilityRestrictionList } + } + } + } + } + } // End of template m_n2_InitialContextSetupRequest_optional_MobilityRestriction + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST + */ + template (value) InitiatingMessage m_n2_InitialContextSetupRequest_differentOptionals( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) GUAMI p_gUAMI, + in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH, + in template (value) UERadioCapability p_uERadioCapability, + in template (value) IndexToRFSP p_indexToRFSP := PX_Index_to_RAT_Frequency_Selection_Priority, + in template (value) MaskedIMEISV p_maskedIMEISV := PX_MaskedIMEISV, + in template (value) NAS_PDU p_nasPdu, + in template (value) EmergencyFallbackIndicator p_emergencyFallbackIndicator, + in template (value) RRCInactiveTransitionReportRequest p_rRCInactiveTransitionReportRequest, + in template (value) RedirectionVoiceFallback p_redirectionVoiceFallback, + in template (value) LocationReportingRequestType p_locationReportingRequestType, + in template (value) SRVCCOperationPossible p_sRVCCOperationPossible, + in template (value) IAB_Authorized p_iAB_Authorized, + in template (value) Enhanced_CoverageRestriction p_enhanced_CoverageRestriction, + in template (value) Extended_ConnectedTime p_extended_ConnectedTime := PX_EXTENDED_CONNECTED_TIME, + in template (value) UE_DifferentiationInfo p_uE_DifferentiationInfo, + in template (value) NRUESidelinkAggregateMaximumBitrate p_nRUESidelinkAggregateMaximumBitrate, + in template (value) LTEUESidelinkAggregateMaximumBitrate p_lTEUESidelinkAggregateMaximumBitrate, + in template (value) UERadioCapabilityID p_uERadioCapabilityID + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_PDUSessionResourceSetupListCxtReq, + criticality := reject, + value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityKey, + criticality := reject, + value_ := { SecurityKey := p_nextHopNH } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_IndexToRFSP, + criticality := ignore, + value_ := { IndexToRFSP := p_indexToRFSP } + }, + { + id := id_MaskedIMEISV, + criticality := ignore, + value_ := { MaskedIMEISV := p_maskedIMEISV } + }, + { + id := id_NAS_PDU, + criticality := ignore, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_EmergencyFallbackIndicator, + criticality := reject, + value_ := { EmergencyFallbackIndicator := p_emergencyFallbackIndicator} + }, + { + id := id_RRCInactiveTransitionReportRequest, + criticality := ignore, + value_ := { RRCInactiveTransitionReportRequest := p_rRCInactiveTransitionReportRequest} + }, + { + id := id_RedirectionVoiceFallback, + criticality := ignore, + value_ := { RedirectionVoiceFallback := p_redirectionVoiceFallback } + } , + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType } + }, + { + id := id_SRVCCOperationPossible, + criticality := ignore, + value_ := { SRVCCOperationPossible := p_sRVCCOperationPossible } + }, + { + id := id_IAB_Authorized, + criticality := ignore, + value_ := { IAB_Authorized := p_iAB_Authorized } + }, + { + id := id_Enhanced_CoverageRestriction, + criticality := ignore, + value_ := { Enhanced_CoverageRestriction := p_enhanced_CoverageRestriction } + }, + { + id := id_Extended_ConnectedTime, + criticality := ignore, + value_ := { Extended_ConnectedTime := p_extended_ConnectedTime } + }, + { + id := id_UE_DifferentiationInfo, + criticality := ignore, + value_ := { UE_DifferentiationInfo := p_uE_DifferentiationInfo } + }, + { + id := id_NRUESidelinkAggregateMaximumBitrate, + criticality := ignore, + value_ := { NRUESidelinkAggregateMaximumBitrate := p_nRUESidelinkAggregateMaximumBitrate } + }, + { + id := id_LTEUESidelinkAggregateMaximumBitrate, + criticality := ignore, + value_ := { LTEUESidelinkAggregateMaximumBitrate := p_lTEUESidelinkAggregateMaximumBitrate } + }, + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + } + + + } + } + } + } // End of template m_n2_InitialContextSetupRequest_differentOptionals + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST + */ + template (present) InitiatingMessage mw_n2_InitialContextSetupRequest_withPDUSessionList( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) GUAMI p_gUAMI := ?, + template (present) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq := ?, + template (present) AllowedNSSAI p_allowedNSSAI := ?, + template (present) UESecurityCapabilities p_uESecurityCapabilities := ?, + template (present) SecurityKey p_nextHopNH := ?, + template (present) MaskedIMEISV p_maskedIMEISV := ?, + template (present) NAS_PDU p_nasPdu := ? + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_PDUSessionResourceSetupListCxtReq, + criticality := reject, + value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityKey, + criticality := reject, + value_ := { SecurityKey := p_nextHopNH } + }, + { + id := id_MaskedIMEISV, + criticality := ignore, + value_ := { MaskedIMEISV := p_maskedIMEISV } + }, + { + id := id_NAS_PDU, + criticality := ignore, + value_ := { NAS_PDU := p_nasPdu } + } + } + } + } + } // End of template mw_n2_InitialContextSetupRequest + + } // End of group Receive + + } // End of group INITIAL_CONTEXT_SETUP_REQUEST + + group INITIAL_CONTEXT_SETUP_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.2 INITIAL CONTEXT SETUP RESPONSE + */ + template (value) SuccessfulOutcome m_n2_InitialContextSetupResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSetupListSURes p_pDUSessionResourceSetupListSURes + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSURes, + criticality := ignore, + value_ := { PDUSessionResourceSetupListSURes := p_pDUSessionResourceSetupListSURes } + } + } + } + } + } // End of template m_n2_InitialContextSetupResponse + + template (value) SuccessfulOutcome m_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.2 INITIAL CONTEXT SETUP RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_InitialContextSetupResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceSetupListSURes p_pDUSessionResourceSetupListSURes := ? + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSURes, + criticality := ignore, + value_ := { PDUSessionResourceSetupListSURes := p_pDUSessionResourceSetupListSURes } + } + } + } + } + } // End of template mw_n2_PDUInitialContextSetupResponse + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.2 INITIAL CONTEXT SETUP RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_InitialContextSetupResponse_Failed( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceFailedToSetupListSURes p_pDUSessionResourceFailedToSetupListURes := ? + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceFailedToSetupListSURes, + criticality := ignore, + value_ := { PDUSessionResourceFailedToSetupListSURes := p_pDUSessionResourceFailedToSetupListURes } + } + } + } + } + } // End of template mw_n2_InitialContextSetupResponse_Failed + + template (present) SuccessfulOutcome mw_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes + + } // End of group Receive + + } // End of group INITIAL_CONTEXT_SETUP_RESPONSE + + group INITIAL_CONTEXT_SETUP_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.3 INITIAL CONTEXT SETUP FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_InitialContextSetupFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_INITIAL_SETUP_FAILURE), + in template (value) PDUSessionResourceFailedToSetupListCxtFail p_pDUSessionResourceFailedToSetupListCxtFail + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_PDUSessionResourceFailedToSetupListCxtFail, + criticality := ignore, + value_ := { PDUSessionResourceFailedToSetupListCxtFail := p_pDUSessionResourceFailedToSetupListCxtFail } + } + } + } + } + } // End of template m_n2_InitialContextSetupFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.3 INITIAL CONTEXT SETUP FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_InitialContextSetupFailure( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ?, + template (present) PDUSessionResourceFailedToSetupListCxtFail p_pDUSessionResourceFailedToSetupListCxtFail := ? + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + InitialContextSetupFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_PDUSessionResourceFailedToSetupListCxtFail, + criticality := ignore, + value_ := { PDUSessionResourceFailedToSetupListCxtFail := p_pDUSessionResourceFailedToSetupListCxtFail } + } + } + } + } + } // End of template mw_n2_PDUInitialContextSetupFailure + + } // End of group Receive + + } // End of group INITIAL_CONTEXT_SETUP_FAILURE + + group UE_CONTEXT_RELEASE_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.4 UE CONTEXT RELEASE REQUEST + */ + template (value) InitiatingMessage m_n2_UEContextReleaseRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceListCxtRelReq p_pDUSessionResourceListCxtRelReq + ) := { + procedureCode := id_UEContextReleaseRequest, + criticality := reject, + value_ := { + UEContextReleaseRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceListCxtRelReq, + criticality := reject, + value_ := { PDUSessionResourceListCxtRelReq := p_pDUSessionResourceListCxtRelReq } + } + } + } + } + } // End of template m_n2_UEContextReleaseRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.4 UE CONTEXT RELEASE REQUEST + */ + template (present) InitiatingMessage mw_n2_UEContextReleaseRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_UEContextReleaseRequest, + criticality := reject, + value_ := { + UEContextReleaseRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_UEContextReleaseRequest + + } // End of group Receive + + } // End of group UE_CONTEXT_RELEASE_REQUEST + + group UE_CONTEXT_RELEASE_COMMAND { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.5 UE CONTEXT RELEASE COMMAND + */ + template (value) InitiatingMessage m_n2_UEContextReleaseCommand( + in template (value) UE_NGAP_IDs p_ueNgapIds, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_UE_CONTEXT_RELEASE_COMMAND_CAUSE) + ) := { + procedureCode := id_UEContextRelease, + criticality := reject, + value_ := { + UEContextReleaseCommand := { + protocolIEs := { + { + id := id_UE_NGAP_IDs, + criticality := reject, + value_ := { UE_NGAP_IDs := p_ueNgapIds } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_UEContextReleaseCommand + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.5 UE CONTEXT RELEASE COMMAND + */ + template (present) InitiatingMessage mw_n2_UEContextReleaseCommand( + template (present) UE_NGAP_IDs p_ueNgapIds := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_UEContextRelease, + criticality := reject, + value_ := { + UEContextReleaseCommand := { + protocolIEs := { + { + id := id_UE_NGAP_IDs, + criticality := reject, + value_ := { UE_NGAP_IDs := p_ueNgapIds } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_UEContextReleaseCommand + + } // End of group Receive + + } // End of group UE_CONTEXT_RELEASE_COMMAND + + group UE_CONTEXT_RELEASE_COMPLETE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.6 UE CONTEXT RELEASE COMPLETE + */ + template (value) SuccessfulOutcome m_n2_UEContextReleaseComplete( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSetupListSURes p_pDUSessionResourceSetupListSURes + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSURes, + criticality := reject, + value_ := { PDUSessionResourceSetupListSURes := p_pDUSessionResourceSetupListSURes } + } + } + } + } + } // End of template m_n2_UEContextReleaseComplete + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.6 UE CONTEXT RELEASE COMPLETE + */ + template (present) SuccessfulOutcome mw_n2_UEContextReleaseComplete( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceSetupListSURes p_pDUSessionResourceSetupListSURes := ? + ) := { + procedureCode := id_InitialContextSetup, + criticality := reject, + value_ := { + PDUSessionResourceSetupResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSetupListSURes, + criticality := reject, + value_ := { PDUSessionResourceSetupListSURes := p_pDUSessionResourceSetupListSURes } + } + } + } + } + } // End of template mw_n2_UEContextReleaseComplete + + } // End of group Receive + + } // End of group UE_CONTEXT_RELEASE_COMPLETE + + group UE_CONTEXT_MODIFICATION_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.7 UE CONTEXT MODIFICATION REQUEST + */ + template (value) InitiatingMessage m_n2_UEContextModificationRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_UEContextModificationRequest + + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.7 UE CONTEXT MODIFICATION REQUEST + */ + template (value) InitiatingMessage m_n2_UEContextModificationRequest_optional1( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH, + in template (value) UESecurityCapabilities p_uESecurityCapabilities := m_uESecurityCapabilities + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_SecurityKey, + criticality := reject, + value_ := { SecurityKey := p_nextHopNH } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + } + } + } + } + } // End of template m_n2_UEContextModificationRequest_optional1 + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.7 UE CONTEXT MODIFICATION REQUEST + */ + template (value) InitiatingMessage m_n2_UEContextModificationRequest_optional2( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) RANPagingPriority p_rANPagingPriority := 1, // RAN_Paging_Priority // TODO: do we need PIXIT here? + in template (value) IndexToRFSP p_indexToRFSP := PX_Index_to_RAT_Frequency_Selection_Priority, + in template (value) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate, // UE_Aggregate_Maximum_Bit_Rate containing + in template (value) UESecurityCapabilities p_uESecurityCapabilities, // UE_Security_Capabilities containing + in template (value) EmergencyFallbackIndicator p_emergencyFallbackIndicator, // Emergency_Fallback_Indicator, + in template (value) GUAMI p_gUAMI, // New_GUAMI containing + in template (value) IAB_Authorized p_iAB_Authorized, // IAB_Authorized, + in template (value) PC5QoSParameters p_pC5QoSParameters, // PC5_QoS_Parameters containing + in template (value) UERadioCapabilityID p_uERadioCapabilityID := PX_U_E_RADIO_CAPABILITY_ID, // UE_Radio_Capability_ID, + in template (value) RGLevelWirelineAccessCharacteristics p_rGLevelWirelineAccessCharacteristics := '00'O // RG_Level_Wireline_Access_Characteristics // TODO: do we need a PIXIT here? + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + // in template (value) RANPagingPriority p_rANPagingPriority, // RAN_Paging_Priority + { + id := id_RANPagingPriority, + criticality := ignore, + value_ := { RANPagingPriority := p_rANPagingPriority } + }, + // in template (value) IndexToRFSP p_indexToRFSP, // Index_to_RAT_Frequency_Selection_Priority, + { + id := id_IndexToRFSP, + criticality := ignore, + value_ := { IndexToRFSP := p_indexToRFSP } + }, + // in template (value) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate, // UE_Aggregate_Maximum_Bit_Rate containing + { + id := id_UEAggregateMaximumBitRate, + criticality := ignore, + value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate } + }, + // in template (value) UESecurityCapabilities p_uESecurityCapabilities, // UE_Security_Capabilities containing + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + // in template (value) EmergencyFallbackIndicator p_emergencyFallbackIndicator, // Emergency_Fallback_Indicator, + { + id := id_EmergencyFallbackIndicator, + criticality := reject, + value_ := { EmergencyFallbackIndicator := p_emergencyFallbackIndicator } + }, + // in template (value) GUAMI p_gUAMI, // New_GUAMI containing + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + // in template (value) IAB_Authorized p_iAB_Authorized, // IAB_Authorized, + { + id := id_IAB_Authorized, + criticality := ignore, + value_ := { IAB_Authorized := p_iAB_Authorized } + }, + // in template (value) PC5QoSParameters p_pC5QoSParameters, // PC5_QoS_Parameters containing + { + id := id_PC5QoSParameters, + criticality := ignore, + value_ := { PC5QoSParameters := p_pC5QoSParameters } + }, + // in template (value) UERadioCapabilityID p_uERadioCapabilityID := PX_U_E_RADIO_CAPABILITY_ID, // UE_Radio_Capability_ID, + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + // in template (value) RGLevelWirelineAccessCharacteristics p_rGLevelWirelineAccessCharacteristics // RG_Level_Wireline_Access_Characteristics + { + id := id_RGLevelWirelineAccessCharacteristics, + criticality := ignore, + value_ := { RGLevelWirelineAccessCharacteristics := p_rGLevelWirelineAccessCharacteristics } + } + } + } + } + } // End of template m_n2_UEContextModificationRequest_optional2 + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.7 UE CONTEXT MODIFICATION REQUEST + */ + template (present) InitiatingMessage mw_n2_UEContextModificationRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UEContextModificationRequest + + } // End of group Receive + + } // End of group UE_CONTEXT_MODIFICATION_REQUEST + + group UE_CONTEXT_MODIFICATION_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.8 UE CONTEXT MODIFICATION RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UEContexModificationResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_UEContexModificationResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.8 UE CONTEXT MODIFICATION RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UEContexModificationResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UEContexModificationResponse + + } // End of group Receive + + } // End of group UE_CONTEXT_MODIFICATION_RESPONSE + + group UE_CONTEXT_MODIFICATION_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.9 UE CONTEXT MODIFICATION FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_UEContextModificationFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_UE_CONTEXT_MODIFICATION_FAILURE) + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_UEContextModificationFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.9 UE CONTEXT MODIFICATION FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_UEContextModificationFailure( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_UEContextModification, + criticality := reject, + value_ := { + UEContextModificationFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_UEContextModificationFailure + + } // End of group Receive + + } // End of group UE_CONTEXT_MODIFICATION_FAILURE + + group RRC_INACTIVE_TRANSITION_REPORT{ + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.10 RRC INACTIVE TRANSITION REPORT + */ + template (value) InitiatingMessage m_n2_RRCInactiveTransitionReport( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) RRCState p_rrcState := inactive, + in template (value) UserLocationInformation p_userLocationInformation + ) := { + procedureCode := id_RRCInactiveTransitionReport, + criticality := reject, + value_ := { + RRCInactiveTransitionReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RRCState, + criticality := ignore, + value_ := { RRCState := p_rrcState } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template m_n2_RRCInactiveTransitionReport + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.10 RRC INACTIVE TRANSITION REPORT + */ + template (present) InitiatingMessage mw_n2_RRCInactiveTransitionReport( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) RRCState p_rrcState := ?, + template (present) UserLocationInformation p_userLocationInformation := ? + ) := { + procedureCode := id_RRCInactiveTransitionReport, + criticality := reject, + value_ := { + RRCInactiveTransitionReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RRCState, + criticality := ignore, + value_ := { RRCState := p_rrcState } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template mw_n2_RRCInactiveTransitionReport + + } // End of group Receive + + } // End of group RRC_INACTIVE_TRANSITION_REPORT + + group CONNECTION_ESTABLISHMENT_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.11 CONNECTION ESTABLISHMENT INDICATION + */ + template (value) InitiatingMessage m_n2_ConnectionEstablishmentIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_ConnectionEstablishmentIndication, + criticality := reject, + value_ := { + ConnectionEstablishmentIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_ConnectionEstablishmentIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.10 9.2.2.11 CONNECTION ESTABLISHMENT INDICATION + */ + template (present) InitiatingMessage mw_n2_ConnectionEstablishmentIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_ConnectionEstablishmentIndication, + criticality := reject, + value_ := { + ConnectionEstablishmentIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_ConnectionEstablishmentIndication + + } // End of group Receive + + } // End of group CONNECTION_ESTABLISHMENT_INDICATION + + group AMF_CP_RELOCATION_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.12 AMF CP RELOCATION INDICATION + */ + template (value) InitiatingMessage m_n2_AMFCPRelocationIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_AMFCPRelocationIndication, + criticality := reject, + value_ := { + AMFCPRelocationIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_AMFCPRelocationIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.12 AMF CP RELOCATION INDICATION + */ + template (present) InitiatingMessage mw_n2_AMFCPRelocationIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_AMFCPRelocationIndication, + criticality := reject, + value_ := { + AMFCPRelocationIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_AMFCPRelocationIndication + + } // End of group Receive + + } // End of group AMF_CP_RELOCATION_INDICATION + + group RAN_CP_RELOCATION_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.13 RAN CP RELOCATION INDICATION + */ + template (value) InitiatingMessage m_n2_RANCPRelocationIndication( + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) FiveG_S_TMSI p_fiveG_S_TMSI, + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (value) TAI p_tAI, + in template (value) UL_CP_SecurityInformation p_uL_CP_SecurityInformation + ) := { + procedureCode := id_RANCPRelocationIndication, + criticality := reject, + value_ := { + RANCPRelocationIndication := { + protocolIEs := { + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_FiveG_S_TMSI, + criticality := reject, + value_ := { FiveG_S_TMSI := p_fiveG_S_TMSI } + }, + { + id := id_EUTRA_CGI, + criticality := ignore, + value_ := { EUTRA_CGI := p_eUTRA_CGI } + }, + { + id := id_TAI, + criticality := ignore, + value_ := { TAI := p_tAI } + }, + { + id := id_UL_CP_SecurityInformation, + criticality := ignore, + value_ := { UL_CP_SecurityInformation := p_uL_CP_SecurityInformation } + } + } + } + } + } // End of template m_n2_RANCPRelocationIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.13 RAN CP RELOCATION INDICATION + */ + template (present) InitiatingMessage mw_n2_RANCPRelocationIndication( + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) FiveG_S_TMSI p_fiveG_S_TMSI := ?, + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template (present) TAI p_tAI := ?, + template (present) UL_CP_SecurityInformation p_uL_CP_SecurityInformation + ) := { + procedureCode := id_RANCPRelocationIndication, + criticality := reject, + value_ := { + RANCPRelocationIndication := { + protocolIEs := { + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_FiveG_S_TMSI, + criticality := reject, + value_ := { FiveG_S_TMSI := p_fiveG_S_TMSI } + }, + { + id := id_EUTRA_CGI, + criticality := ignore, + value_ := { EUTRA_CGI := p_eUTRA_CGI } + }, + { + id := id_TAI, + criticality := ignore, + value_ := { TAI := p_tAI } + }, + { + id := id_UL_CP_SecurityInformation, + criticality := reject, + value_ := { UL_CP_SecurityInformation := p_uL_CP_SecurityInformation } + } + } + } + } + } // End of template mw_n2_RANCPRelocationIndication + + } // End of group Receive + + } // End of group RAN_CP_RELOCATION_INDICATION + + group RETRIEVE_UE_INFORMATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.14 RETRIEVE UE INFORMATION + */ + template (value) InitiatingMessage m_n2_RetrieveUEInformation( + in template (value) FiveG_S_TMSI p_fiveG_S_TMSI + ) := { + procedureCode := id_RetrieveUEInformation, + criticality := reject, + value_ := { + RetrieveUEInformation := { + protocolIEs := { + { + id := id_FiveG_S_TMSI, + criticality := reject, + value_ := { FiveG_S_TMSI := p_fiveG_S_TMSI } + } + } + } + } + } // End of template m_n2_RetrieveUEInformation + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.14 RETRIEVE UE INFORMATION + */ + template (present) InitiatingMessage mw_n2_RetrieveUEInformation( + template (present) FiveG_S_TMSI p_fiveG_S_TMSI := ? + ) := { + procedureCode := id_RetrieveUEInformation, + criticality := reject, + value_ := { + RetrieveUEInformation := { + protocolIEs := { + { + id := id_FiveG_S_TMSI, + criticality := reject, + value_ := { FiveG_S_TMSI := p_fiveG_S_TMSI } + } + } + } + } + } // End of template mw_n2_RetrieveUEInformation + + } // End of group Receive + + } // End of group RETRIEVE_UE_INFORMATION + + group UE_INFORMATION_TRANSFER { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.15 UE INFORMATION TRANSFER + */ + template (value) InitiatingMessage m_n2_UEInformationTransfer( + in template (value) FiveG_S_TMSI p_fiveG_S_TMSI + ) := { + procedureCode := id_UEInformationTransfer, + criticality := reject, + value_ := { + UEInformationTransfer := { + protocolIEs := { + { + id := id_FiveG_S_TMSI, + criticality := reject, + value_ := { FiveG_S_TMSI := p_fiveG_S_TMSI } + } + } + } + } + } // End of template m_n2_UEInformationTransfer + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.15 UE INFORMATION TRANSFER + */ + template (present) InitiatingMessage mw_n2_UEInformationTransfer( + template (present) FiveG_S_TMSI p_fiveG_S_TMSI := ? + ) := { + procedureCode := id_UEInformationTransfer, + criticality := reject, + value_ := { + UEInformationTransfer := { + protocolIEs := { + { + id := id_FiveG_S_TMSI, + criticality := reject, + value_ := { FiveG_S_TMSI := p_fiveG_S_TMSI } + } + } + } + } + } // End of template mw_n2_UEInformationTransfer + + } // End of group Receive + + } // End of group UE_INFORMATION_TRANSFER + + group UE_CONTEXT_SUSPEND_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.16 UE CONTEXT SUSPEND REQUEST + */ + template (value) InitiatingMessage m_n2_UEContextSuspendRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSuspendListSUSReq p_pDUSessionResourceSuspendListSUSReq + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSuspendListSUSReq, + criticality := reject, + value_ := { PDUSessionResourceSuspendListSUSReq := p_pDUSessionResourceSuspendListSUSReq } + } + } + } + } + } // End of template m_n2_UEContextSuspendRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.16 UE CONTEXT SUSPEND REQUEST + */ + template (present) InitiatingMessage mw_n2_UEContextSuspendRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceSuspendListSUSReq p_pDUSessionResourceSuspendListSUSReq := ? + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSuspendListSUSReq, + criticality := reject, + value_ := { PDUSessionResourceSuspendListSUSReq := p_pDUSessionResourceSuspendListSUSReq } + } + } + } + } + } // End of template mw_n2_UEContextSuspendRequest + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.16 UE CONTEXT SUSPEND REQUEST + */ + template (present) InitiatingMessage mw_n2_UEContextSuspendRequest_noPDUSession( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UEContextSuspendRequest_noPDUSession + + } // End of group Receive + + } // End of group UE_CONTEXT_SUSPEND_REQUEST + + group UE_CONTEXT_SUSPEND_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.17 UE CONTEXT SUSPEND RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UEContextSuspendResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_UEContextSuspendResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.17 UE CONTEXT SUSPEND RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UEContextSuspendResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UEContextSuspendResponse + + } // End of group Receive + + } // End of group UE_CONTEXT_SUSPEND_RESPONSE + + group UE_CONTEXT_SUSPEND_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.18 UE CONTEXT SUSPEND FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_UEContextSuspendFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_UE_CONTEXT_SUSPEND_FAILURE) + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_UEContextSuspendFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.18 UE CONTEXT SUSPEND FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_UEContextSuspendFailure( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_UEContextSuspend, + criticality := reject, + value_ := { + UEContextSuspendFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_UEContextSuspendFailure + + } // End of group Receive + + } // End of group UE_CONTEXT_SUSPEND_FAILURE + + group UE_CONTEXT_RESUME_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.19 UE CONTEXT RESUME REQUEST + */ + template (value) InitiatingMessage m_n2_UEContextResumeRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) RRCEstablishmentCause p_rRCResumeCause := PX_RRC_RESUME_CAUSE + ) := { + procedureCode := id_UEContextResume, + criticality := reject, + value_ := { + UEContextResumeRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RRCEstablishmentCause, + criticality := ignore, + value_ := { RRCEstablishmentCause := p_rRCResumeCause } + } + } + } + } + } // End of template m_n2_UEContextResumeRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.19 UE CONTEXT RESUME REQUEST + */ + template (present) InitiatingMessage mw_n2_UEContextResumeRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) RRCEstablishmentCause p_rRCResumeCause := ? + ) := { + procedureCode := id_UEContextResume, + criticality := reject, + value_ := { + UEContextResumeRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RRCEstablishmentCause, + criticality := ignore, + value_ := { RRCEstablishmentCause := p_rRCResumeCause } + } + } + } + } + } // End of template mw_n2_UEContextResumeRequest + + } // End of group Receive + + } // End of group UE_CONTEXT_RESUME_REQUEST + + group UE_CONTEXT_RESUME_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.20 UE CONTEXT RESUME RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UEContextResumeResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UEContextResume, + criticality := reject, + value_ := { + UEContextResumeResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_UEContextResumeResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.20 UE CONTEXT RESUME RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UEContextResumeResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_UEContextResume, + criticality := reject, + value_ := { + UEContextResumeResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UEContextResumeResponse + + } // End of group Receive + + } // End of group UE_CONTEXT_RESUME_RESPONSE + + group UE_CONTEXT_RESUME_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.21 UE CONTEXT RESUME FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_UEContextResumeFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_UE_CONTEXT_RESUME_FAILURE) + ) := { + procedureCode := id_UEContextResume, + criticality := reject, + value_ := { + UEContextResumeFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_UEContextResumeFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.21 UE CONTEXT RESUME FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_UEContextResumeFailure( + in template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + in template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + in template (present) Cause p_cause := ? + ) := { + procedureCode := id_UEContextResume, + criticality := reject, + value_ := { + UEContextResumeFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_UEContextResumeFailure + + } // End of group Receive + + } // End of group UE_CONTEXT_RESUME_FAILURE + + } // End of group UE_Context_Management_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3 UE Mobility Management Messages + */ + group UE_Mobility_Management_Messages{ + + group HANDOVER_REQUIRED { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.1 HANDOVER REQUIRED + */ + template (value) InitiatingMessage m_n2_HandoverRequired( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) HandoverType p_handoverType := PX_HANDOVER_TYPE, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_REQUIRED), + in template (value) TargetID p_targetID, + in template (value) PDUSessionResourceListHORqd p_pDUSessionResourceListHORqd, + in template (value) SourceToTarget_TransparentContainer p_SourceToTarget_TransparentContainer + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverRequired := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_TargetID, + criticality := reject, + value_ := { TargetID := p_targetID } + }, + { + id := id_PDUSessionResourceListHORqd, + criticality := reject, + value_ := { PDUSessionResourceListHORqd := p_pDUSessionResourceListHORqd } + } + } + } + } + } // End of template m_n2_HandoverRequired + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.1 HANDOVER REQUIRED + */ + template (present) InitiatingMessage mw_n2_HandoverRequired( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) HandoverType p_handoverType := ?, + template (present) Cause p_cause := ?, + template (present) TargetID p_targetID := ?, + template (present) PDUSessionResourceListHORqd p_pDUSessionResourceListHORqd := ?, + template (present) SourceToTarget_TransparentContainer p_SourceToTarget_TransparentContainer := ? + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverRequired := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_TargetID, + criticality := reject, + value_ := { TargetID := p_targetID } + }, + { + id := id_PDUSessionResourceListHORqd, + criticality := reject, + value_ := { PDUSessionResourceListHORqd := p_pDUSessionResourceListHORqd } + }, + { + id := id_SourceToTarget_TransparentContainer, + criticality := reject, + value_ := { SourceToTarget_TransparentContainer := p_SourceToTarget_TransparentContainer } + } + } + } + } + } // End of template mw_n2_HandoverRequired + + } // End of group Receive + + } // End of group HANDOVER_REQUIRED + + group HANDOVER_COMMAND { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.2 HANDOVER COMMAND + */ + template (value) SuccessfulOutcome m_n2_HandoverCommand( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) HandoverType p_handoverType := PX_HANDOVER_TYPE, + in template (value) PDUSessionResourceHandoverList p_pDUSessionResourceHandoverList + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverCommand := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_PDUSessionResourceHandoverList, + criticality := ignore, + value_ := { PDUSessionResourceHandoverList := p_pDUSessionResourceHandoverList } + } + } + } + } + } // End of template m_n2_HandoverCommand + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.2 HANDOVER COMMAND + */ + template (present) SuccessfulOutcome mw_n2_HandoverCommand( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) HandoverType p_handoverType := ?, + template (present) PDUSessionResourceHandoverList p_pDUSessionResourceHandoverList := ? + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverCommand := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_PDUSessionResourceHandoverList, + criticality := ignore, + value_ := { PDUSessionResourceHandoverList := p_pDUSessionResourceHandoverList } + } + } + } + } + } // End of template mw_n2_HandoverCommand + + } // End of group Receive + + } // End of group HANDOVER_COMMAND + + group HANDOVER_PREPARATION_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.3 HANDOVER PREPARATION FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_HandoverPreparationFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_PREPARATION_FAILURE) + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverPreparationFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_HandoverPreparationFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.3 HANDOVER PREPARATION FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_HandoverPreparationFailure( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverPreparationFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_HandoverPreparationFailure + + } // End of group Receive + + } // End of group HANDOVER_PREPARATION_FAILURE + + group HANDOVER_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.4 HANDOVER REQUEST + */ + template (value) InitiatingMessage m_n2_HandoverRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) HandoverType p_handoverType := PX_HANDOVER_TYPE, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_REQUIRED), + in template (value) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityContext p_securityContext, + in template (value) PDUSessionResourceSetupListHOReq p_pDUSessionResourceSetupListHOReq, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) SourceToTarget_TransparentContainer p_SourceToTarget_TransparentContainer, + in template (value) GUAMI p_gUAMI + ) := { + procedureCode := id_HandoverResourceAllocation, + criticality := reject, + value_ := { + HandoverRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_UEAggregateMaximumBitRate, + criticality := reject, + value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityContext, + criticality := reject, + value_ := { SecurityContext := p_securityContext } + }, + { + id := id_PDUSessionResourceListHORqd, + criticality := reject, + value_ := { PDUSessionResourceSetupListHOReq := p_pDUSessionResourceSetupListHOReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_SourceToTarget_TransparentContainer, + criticality := reject, + value_ := { SourceToTarget_TransparentContainer := p_SourceToTarget_TransparentContainer } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + } + } + } + } + } // End of template m_n2_HandoverRequest + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.4 HANDOVER REQUEST + */ + template (value) InitiatingMessage m_n2_HandoverRequest_full( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) HandoverType p_handoverType := PX_HANDOVER_TYPE, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_REQUIRED), + in template (value) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) SecurityContext p_securityContext, + in template (value) PDUSessionResourceSetupListHOReq p_pDUSessionResourceSetupListHOReq, + in template (value) AllowedNSSAI p_allowedNSSAI, + in template (value) SourceToTarget_TransparentContainer p_SourceToTarget_TransparentContainer, + in template (value) GUAMI p_gUAMI, + in template (value) CoreNetworkAssistanceInformationForInactive p_coreNetworkAssistanceInformationForInactive, + in template (value) NewSecurityContextInd p_newSecurityContextInd, + in template (value) NAS_PDU p_nAS_PDU, + in template (value) TraceActivation p_traceActivation, + in template (value) RRCInactiveTransitionReportRequest p_rRCInactiveTransitionReportRequest, + in template (value) RedirectionVoiceFallback p_redirectionVoiceFallback, + in template (value) CNAssistedRANTuning p_cNAssistedRANTuning, + in template (value) SRVCCOperationPossible p_sRVCCOperationPossible, + in template (value) Enhanced_CoverageRestriction p_enhanced_CoverageRestriction, + in template (value) UE_DifferentiationInfo p_uE_DifferentiationInfo, + in template (value) NRV2XServicesAuthorized p_nRV2XServicesAuthorized, + in template (value) LTEV2XServicesAuthorized p_lTEV2XServicesAuthorized, + in template (value) NRUESidelinkAggregateMaximumBitrate p_nRUESidelinkAggregateMaximumBitrate, + in template (value) LTEUESidelinkAggregateMaximumBitrate p_lTEUESidelinkAggregateMaximumBitrate, + in template (value) PC5QoSParameters p_pC5QoSParameters, + in template (value) CEmodeBrestricted p_cEmodeBrestricted, + in template (value) UE_UP_CIoT_Support p_uE_UP_CIoT_Support, + in template (value) MDTPLMNList p_mDTPLMNList, + in template (value) UERadioCapabilityID p_uERadioCapabilityID := PX_U_E_RADIO_CAPABILITY_ID, + in template (value) Extended_ConnectedTime p_extended_ConnectedTime := PX_EXTENDED_CONNECTED_TIME + ) modifies m_n2_HandoverRequest := { + procedureCode := id_HandoverResourceAllocation, + criticality := reject, + value_ := { + HandoverRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_UEAggregateMaximumBitRate, + criticality := reject, + value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityContext, + criticality := reject, + value_ := { SecurityContext := p_securityContext } + }, + { + id := id_PDUSessionResourceListHORqd, + criticality := reject, + value_ := { PDUSessionResourceSetupListHOReq := p_pDUSessionResourceSetupListHOReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_SourceToTarget_TransparentContainer, + criticality := reject, + value_ := { SourceToTarget_TransparentContainer := p_SourceToTarget_TransparentContainer } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_CoreNetworkAssistanceInformationForInactive, + criticality := ignore, + value_ := { CoreNetworkAssistanceInformationForInactive := p_coreNetworkAssistanceInformationForInactive } + }, + { + id := id_NewSecurityContextInd, + criticality := reject, + value_ := { NewSecurityContextInd := p_newSecurityContextInd } + }, + { + id := id_NASC, + criticality := reject, + value_ := { NAS_PDU := p_nAS_PDU } + }, + { + id := id_TraceActivation, + criticality := ignore, + value_ := { TraceActivation := p_traceActivation } + }, + { + id := id_RRCInactiveTransitionReportRequest, + criticality := ignore, + value_ := { RRCInactiveTransitionReportRequest := p_rRCInactiveTransitionReportRequest } + }, + { + id := id_RedirectionVoiceFallback, + criticality := ignore, + value_ := { RedirectionVoiceFallback := p_redirectionVoiceFallback } + }, + { + id := id_CNAssistedRANTuning, + criticality := ignore, + value_ := { CNAssistedRANTuning := p_cNAssistedRANTuning } + }, + { + id := id_SRVCCOperationPossible, + criticality := ignore, + value_ := { SRVCCOperationPossible := p_sRVCCOperationPossible } + }, + { + id := id_Enhanced_CoverageRestriction, + criticality := ignore, + value_ := { Enhanced_CoverageRestriction := p_enhanced_CoverageRestriction } + }, + { + id := id_UE_DifferentiationInfo, + criticality := ignore, + value_ := { UE_DifferentiationInfo := p_uE_DifferentiationInfo } + }, + { + id := id_NRV2XServicesAuthorized, + criticality := ignore, + value_ := { NRV2XServicesAuthorized := p_nRV2XServicesAuthorized } + }, + { + id := id_LTEV2XServicesAuthorized, + criticality := ignore, + value_ := { LTEV2XServicesAuthorized := p_lTEV2XServicesAuthorized } + }, + { + id := id_NRUESidelinkAggregateMaximumBitrate, + criticality := ignore, + value_ := { NRUESidelinkAggregateMaximumBitrate := p_nRUESidelinkAggregateMaximumBitrate } + }, + { + id := id_LTEUESidelinkAggregateMaximumBitrate, + criticality := ignore, + value_ := { LTEUESidelinkAggregateMaximumBitrate := p_lTEUESidelinkAggregateMaximumBitrate } + }, + { + id := id_PC5QoSParameters, + criticality := ignore, + value_ := { PC5QoSParameters := p_pC5QoSParameters } + }, + { + id := id_CEmodeBrestricted, + criticality := ignore, + value_ := { CEmodeBrestricted := p_cEmodeBrestricted } + }, + { + id := id_UE_UP_CIoT_Support, + criticality := ignore, + value_ := { UE_UP_CIoT_Support := p_uE_UP_CIoT_Support } + }, + { + id := id_ManagementBasedMDTPLMNList, + criticality := ignore, + value_ := { MDTPLMNList := p_mDTPLMNList } + }, + { + id := id_UERadioCapabilityID, + criticality := ignore, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + { + id := id_Extended_ConnectedTime, + criticality := ignore, + value_ := { Extended_ConnectedTime := p_extended_ConnectedTime } + } + } + } + } + } // End of template m_n2_HandoverRequest + + } // End of group Send + + + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.4 HANDOVER REQUEST + */ + template (present) InitiatingMessage mw_n2_HandoverRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) HandoverType p_handoverType := PX_HANDOVER_TYPE, + template (present) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_REQUIRED), + template (present) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate := ?, + template (present) UESecurityCapabilities p_uESecurityCapabilities := ?, + template (present) SecurityContext p_securityContext := ?, + template (present) PDUSessionResourceSetupListHOReq p_pDUSessionResourceSetupListHOReq := ?, + template (present) AllowedNSSAI p_allowedNSSAI := ?, + template (present) SourceToTarget_TransparentContainer p_SourceToTarget_TransparentContainer := ?, + template (present) GUAMI p_gUAMI := ? + ) := { + procedureCode := id_HandoverResourceAllocation, + criticality := reject, + value_ := { + HandoverRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_UEAggregateMaximumBitRate, + criticality := reject, + value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityContext, + criticality := reject, + value_ := { SecurityContext := p_securityContext } + }, + { + id := id_PDUSessionResourceListHORqd, + criticality := reject, + value_ := { PDUSessionResourceSetupListHOReq := p_pDUSessionResourceSetupListHOReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_SourceToTarget_TransparentContainer, + criticality := reject, + value_ := { SourceToTarget_TransparentContainer := p_SourceToTarget_TransparentContainer } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + } + } + } + } + } // End of template mw_n2_HandoverRequest + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.4 HANDOVER REQUEST + */ + template (present) InitiatingMessage mw_n2_HandoverRequest_full( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) HandoverType p_handoverType := PX_HANDOVER_TYPE, + template (present) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_REQUIRED), + template (present) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate := ?, + template (present) UESecurityCapabilities p_uESecurityCapabilities := ?, + template (present) SecurityContext p_securityContext := ?, + template (present) PDUSessionResourceSetupListHOReq p_pDUSessionResourceSetupListHOReq := ?, + template (present) AllowedNSSAI p_allowedNSSAI := ?, + template (present) SourceToTarget_TransparentContainer p_SourceToTarget_TransparentContainer := ?, + template (present) GUAMI p_gUAMI := ?, + template (present) CoreNetworkAssistanceInformationForInactive p_coreNetworkAssistanceInformationForInactive := ?, + template (present) NewSecurityContextInd p_newSecurityContextInd := ?, + template (present) NAS_PDU p_nAS_PDU := ?, + template (present) TraceActivation p_traceActivation := ?, + template (present) RRCInactiveTransitionReportRequest p_rRCInactiveTransitionReportRequest := ?, + template (present) RedirectionVoiceFallback p_redirectionVoiceFallback := ?, + template (present) CNAssistedRANTuning p_cNAssistedRANTuning := ?, + template (present) SRVCCOperationPossible p_sRVCCOperationPossible := ?, + template (present) Enhanced_CoverageRestriction p_enhanced_CoverageRestriction := ?, + template (present) UE_DifferentiationInfo p_uE_DifferentiationInfo := ?, + template (present) NRV2XServicesAuthorized p_nRV2XServicesAuthorized := ?, + template (present) LTEV2XServicesAuthorized p_lTEV2XServicesAuthorized := ?, + template (present) NRUESidelinkAggregateMaximumBitrate p_nRUESidelinkAggregateMaximumBitrate := ?, + template (present) LTEUESidelinkAggregateMaximumBitrate p_lTEUESidelinkAggregateMaximumBitrate := ?, + template (present) PC5QoSParameters p_pC5QoSParameters := ?, + template (present) CEmodeBrestricted p_cEmodeBrestricted := ?, + template (present) UE_UP_CIoT_Support p_uE_UP_CIoT_Support := ?, + template (present) MDTPLMNList p_mDTPLMNList := ?, + template (present) UERadioCapabilityID p_uERadioCapabilityID := PX_U_E_RADIO_CAPABILITY_ID, + template (present) Extended_ConnectedTime p_extended_ConnectedTime := PX_EXTENDED_CONNECTED_TIME + ) := { + procedureCode := id_HandoverResourceAllocation, + criticality := reject, + value_ := { + HandoverRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_HandoverType, + criticality := reject, + value_ := { HandoverType := p_handoverType } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_UEAggregateMaximumBitRate, + criticality := reject, + value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate } + }, + { + id := id_CoreNetworkAssistanceInformationForInactive, + criticality := ignore, + value_ := { CoreNetworkAssistanceInformationForInactive := p_coreNetworkAssistanceInformationForInactive } + }, + { + id := id_UEAggregateMaximumBitRate, + criticality := reject, + value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate } + }, + { + id := id_UESecurityCapabilities, + criticality := reject, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_SecurityContext, + criticality := reject, + value_ := { SecurityContext := p_securityContext } + }, + { + id := id_NewSecurityContextInd, + criticality := reject, + value_ := { NewSecurityContextInd := p_newSecurityContextInd } + }, + { + id := id_NASC, + criticality := reject, + value_ := { NAS_PDU := p_nAS_PDU } + }, + { + id := id_PDUSessionResourceListHORqd, + criticality := reject, + value_ := { PDUSessionResourceSetupListHOReq := p_pDUSessionResourceSetupListHOReq } + }, + { + id := id_AllowedNSSAI, + criticality := reject, + value_ := { AllowedNSSAI := p_allowedNSSAI } + }, + { + id := id_TraceActivation, + criticality := ignore, + value_ := { TraceActivation := p_traceActivation } + }, + { + id := id_SourceToTarget_TransparentContainer, + criticality := reject, + value_ := { SourceToTarget_TransparentContainer := p_SourceToTarget_TransparentContainer } + }, + { + id := id_RRCInactiveTransitionReportRequest, + criticality := ignore, + value_ := { RRCInactiveTransitionReportRequest := p_rRCInactiveTransitionReportRequest } + }, + { + id := id_GUAMI, + criticality := reject, + value_ := { GUAMI := p_gUAMI } + }, + { + id := id_RedirectionVoiceFallback, + criticality := ignore, + value_ := { RedirectionVoiceFallback := p_redirectionVoiceFallback } + }, + { + id := id_CNAssistedRANTuning, + criticality := ignore, + value_ := { CNAssistedRANTuning := p_cNAssistedRANTuning } + }, + { + id := id_SRVCCOperationPossible, + criticality := ignore, + value_ := { SRVCCOperationPossible := p_sRVCCOperationPossible } + }, + { + id := id_Enhanced_CoverageRestriction, + criticality := ignore, + value_ := { Enhanced_CoverageRestriction := p_enhanced_CoverageRestriction } + }, + { + id := id_UE_DifferentiationInfo, + criticality := ignore, + value_ := { UE_DifferentiationInfo := p_uE_DifferentiationInfo } + }, + { + id := id_NRV2XServicesAuthorized, + criticality := ignore, + value_ := { NRV2XServicesAuthorized := p_nRV2XServicesAuthorized } + }, + { + id := id_LTEV2XServicesAuthorized, + criticality := ignore, + value_ := { LTEV2XServicesAuthorized := p_lTEV2XServicesAuthorized } + }, + { + id := id_NRUESidelinkAggregateMaximumBitrate, + criticality := ignore, + value_ := { NRUESidelinkAggregateMaximumBitrate := p_nRUESidelinkAggregateMaximumBitrate } + }, + { + id := id_LTEUESidelinkAggregateMaximumBitrate, + criticality := ignore, + value_ := { LTEUESidelinkAggregateMaximumBitrate := p_lTEUESidelinkAggregateMaximumBitrate } + }, + { + id := id_PC5QoSParameters, + criticality := ignore, + value_ := { PC5QoSParameters := p_pC5QoSParameters } + }, + { + id := id_CEmodeBrestricted, + criticality := ignore, + value_ := { CEmodeBrestricted := p_cEmodeBrestricted } + }, + { + id := id_UE_UP_CIoT_Support, + criticality := ignore, + value_ := { UE_UP_CIoT_Support := p_uE_UP_CIoT_Support } + }, + { + id := id_ManagementBasedMDTPLMNList, + criticality := ignore, + value_ := { MDTPLMNList := p_mDTPLMNList } + }, + { + id := id_UERadioCapabilityID, + criticality := ignore, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + { + id := id_Extended_ConnectedTime, + criticality := ignore, + value_ := { Extended_ConnectedTime := p_extended_ConnectedTime } + } + } + } + } + } // End of template mw_n2_HandoverRequest + + } // End of group Receive + + } // End of group HANDOVER_REQUEST + + group HANDOVER_FAILURE { + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.6 HANDOVER FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_HandoverFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID, + in template (value) Cause p_cause + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_HandoverFailure + + } + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.6 HANDOVER FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_HandoverFailure( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_HandoverPreparation, + criticality := reject, + value_ := { + HandoverFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_HandoverFailure + + } // End of group Receive + + } // End of group HANDOVER_FAILURE + + group HANDOVER_REQUEST_ACKNOWLEDGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.5 HANDOVER REQUEST ACKNOWLEDGE + */ + template (value) SuccessfulOutcome m_n2_HandoverRequestAcknowledge( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceAdmittedList p_pDUSessionResourceAdmittedList + ) := { + procedureCode := id_HandoverResourceAllocation, + criticality := reject, + value_ := { + HandoverRequestAcknowledge := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceAdmittedList, + criticality := ignore, + value_ := { PDUSessionResourceAdmittedList := p_pDUSessionResourceAdmittedList } + } + } + } + } + } // End of template m_n2_HandoverRequestAcknowledge + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.5 HANDOVER REQUEST ACKNOWLEDGE + */ + template (present) SuccessfulOutcome mw_n2_HandoverRequestAcknowledge( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceAdmittedList p_pDUSessionResourceAdmittedList := ? + ) := { + procedureCode := id_HandoverResourceAllocation, + criticality := reject, + value_ := { + HandoverRequestAcknowledge := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceAdmittedList, + criticality := ignore, + value_ := { PDUSessionResourceAdmittedList := p_pDUSessionResourceAdmittedList } + } + } + } + } + } // End of template mw_n2_HandoverRequestAcknowledge + + } // End of group Receive + + } // End of group HANDOVER_REQUEST_ACKNOWLEDGE + + group HANDOVER_NOTIFY { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.7 HANDOVER NOTIFY + */ + template (value) InitiatingMessage m_n2_HandoverNotify( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) UserLocationInformation p_userLocationInformation + ) := { + procedureCode := id_HandoverNotification, + criticality := reject, + value_ := { + HandoverNotify := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template m_n2_HandoverNotify + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.7 HANDOVER NOTIFY + */ + template (present) InitiatingMessage mw_n2_HandoverNotify( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) UserLocationInformation p_userLocationInformation := ? + ) := { + procedureCode := id_HandoverNotification, + criticality := reject, + value_ := { + HandoverNotify := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template mw_n2_HandoverNotify + + } // End of group Receive + + } // End of group HANDOVER_NOTIFY + + group PATH_SWITCH_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.8 PATH SWITCH REQUEST + */ + template (value) InitiatingMessage m_n2_PathSwitchRequest( + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) UserLocationInformation p_userLocationInformation, + in template (value) UESecurityCapabilities p_uESecurityCapabilities, + in template (value) PDUSessionResourceToBeSwitchedDLList p_pDUSessionResourceToBeSwitchedDLList + ) := { + procedureCode := id_PathSwitchRequest, + criticality := reject, + value_ := { + PathSwitchRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + }, + { + id := id_UESecurityCapabilities, + criticality := ignore, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_PDUSessionResourceToBeSwitchedDLList, + criticality := reject, + value_ := { PDUSessionResourceToBeSwitchedDLList := p_pDUSessionResourceToBeSwitchedDLList } + } + } + } + } + } // End of template m_n2_PathSwitchRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.8 PATH SWITCH REQUEST + */ + template (present) InitiatingMessage mw_n2_PathSwitchRequest( + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) UserLocationInformation p_userLocationInformation := ?, + template (present) UESecurityCapabilities p_uESecurityCapabilities := ?, + template (present) PDUSessionResourceToBeSwitchedDLList p_pDUSessionResourceToBeSwitchedDLList := ? + ) := { + procedureCode := id_PathSwitchRequest, + criticality := reject, + value_ := { + PathSwitchRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + }, + { + id := id_UESecurityCapabilities, + criticality := ignore, + value_ := { UESecurityCapabilities := p_uESecurityCapabilities } + }, + { + id := id_PDUSessionResourceToBeSwitchedDLList, + criticality := reject, + value_ := { PDUSessionResourceToBeSwitchedDLList := p_pDUSessionResourceToBeSwitchedDLList } + } + } + } + } + } // End of template mw_n2_PathSwitchRequest + + } // End of group Receive + + } // End of group PATH_SWITCH_REQUEST + + group PATH_SWITCH_REQUEST_ACKNOWLEDGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.9 PATH SWITCH REQUEST ACKNOWLEDGE + */ + template (value) SuccessfulOutcome m_n2_PathSwitchRequestAcknowledge( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) SecurityContext p_securityContext, + in template (value) PDUSessionResourceSwitchedList p_pDUSessionResourceSwitchedList + ) := { + procedureCode := id_PathSwitchRequest, + criticality := reject, + value_ := { + PathSwitchRequestAcknowledge := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_SecurityContext, + criticality := reject, + value_ := { SecurityContext := p_securityContext } + }, + { + id := id_PDUSessionResourceSwitchedList, + criticality := ignore, + value_ := { PDUSessionResourceSwitchedList := p_pDUSessionResourceSwitchedList } + } + } + } + } + } // End of template m_n2_PathSwitchRequestAcknowledge + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.9 PATH SWITCH REQUEST ACKNOWLEDGE + */ + template (present) SuccessfulOutcome mw_n2_PathSwitchRequestAcknowledge( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) SecurityContext p_securityContext := ?, + template (present) PDUSessionResourceSwitchedList p_pDUSessionResourceSwitchedList := ? + ) := { + procedureCode := id_PathSwitchRequest, + criticality := reject, + value_ := { + PathSwitchRequestAcknowledge := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_SecurityContext, + criticality := reject, + value_ := { SecurityContext := p_securityContext } + }, + { + id := id_PDUSessionResourceSwitchedList, + criticality := ignore, + value_ := { PDUSessionResourceSwitchedList := p_pDUSessionResourceSwitchedList } + } + } + } + } + } // End of template mw_n2_PathSwitchRequestAcknowledge + + } // End of group Receive + + } // End of group PATH_SWITCH_REQUEST_ACKNOWLEDGE + + group PATH_SWITCH_REQUEST_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.10 PATH SWITCH REQUEST FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_PathSwitchRequestFailure( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceReleasedListPSFail p_pDUSessionResourceReleasedListPSFail + ) := { + procedureCode := id_PathSwitchRequest, + criticality := reject, + value_ := { + PathSwitchRequestFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSwitchedList, + criticality := ignore, + value_ := { PDUSessionResourceReleasedListPSFail := p_pDUSessionResourceReleasedListPSFail } + } + } + } + } + } // End of template m_n2_PathSwitchRequestFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.10 PATH SWITCH REQUEST FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_PathSwitchRequestFailure( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) PDUSessionResourceReleasedListPSFail p_pDUSessionResourceReleasedListPSFail := ? + ) := { + procedureCode := id_PathSwitchRequest, + criticality := reject, + value_ := { + PathSwitchRequestFailure := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSwitchedList, + criticality := ignore, + value_ := { PDUSessionResourceReleasedListPSFail := p_pDUSessionResourceReleasedListPSFail } + } + } + } + } + } // End of template mw_n2_PathSwitchRequestFailure + + } // End of group Receive + + } // End of group PATH_SWITCH_REQUEST_FAILURE + + group HANDOVER_CANCEL { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.11 HANDOVER CANCEL + */ + template (value) InitiatingMessage m_n2_HandoverCancel( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause := m_cause_radioNetwork(PX_CAUSE_HANDOVER_CANCEL) + ) := { + procedureCode := id_HandoverCancel, + criticality := reject, + value_ := { + HandoverCancel := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_HandoverCancel + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.11 HANDOVER CANCEL + */ + template (present) InitiatingMessage mw_n2_HandoverCancel( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_HandoverCancel, + criticality := reject, + value_ := { + HandoverCancel := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_HandoverCancel + + } // End of group Receive + + } // End of group HANDOVER_CANCEL + + group HANDOVER_CANCEL_ACKNOWLEDGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.12 HANDOVER CANCEL ACKNOWLEDGE + */ + template (value) SuccessfulOutcome m_n2_HandoverCancelAcknowledge( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_HandoverCancel, + criticality := reject, + value_ := { + HandoverCancelAcknowledge := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_HandoverCancelAcknowledge + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.12 HANDOVER CANCEL ACKNOWLEDGE + */ + template (present) SuccessfulOutcome mw_n2_HandoverCancelAcknowledge( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_HandoverCancel, + criticality := reject, + value_ := { + HandoverCancelAcknowledge := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_HandoverCancelAcknowledge + + } // End of group Receive + + } // End of group HANDOVER_CANCEL_ACKNOWLEDGE + + group UPLINK_RAN_STATUS_TRANSFER { + + group Send { + + } // End of group Send + + group Receive { + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.13 UPLINK RAN STATUS TRANSFER + */ + template (value) InitiatingMessage m_n2_UplinkRANStatusTransfer( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) RANStatusTransfer_TransparentContainer p_rANStatusTransfer_TransparentContainer + ) := { + procedureCode := id_UplinkRANStatusTransfer, + criticality := reject, + value_ := { + UplinkRANStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RANStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { RANStatusTransfer_TransparentContainer := p_rANStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template m_n2_UplinkRANStatusTransfer + + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.13 UPLINK RAN STATUS TRANSFER + */ + template (present) InitiatingMessage mw_n2_UplinkRANStatusTransfer( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) RANStatusTransfer_TransparentContainer p_rANStatusTransfer_TransparentContainer := ? + ) := { + procedureCode := id_UplinkRANStatusTransfer, + criticality := reject, + value_ := { + UplinkRANStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RANStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { RANStatusTransfer_TransparentContainer := p_rANStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template mw_n2_UplinkRANStatusTransfer + + } // End of group Receive + + } // End of group UPLINK_RAN_STATUS_TRANSFER + + group DOWNLINK_RAN_STATUS_TRANSFER { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.14 DOWNLINK RAN STATUS TRANSFER + */ + template (value) InitiatingMessage m_n2_DownlinkRANStatusTransfer( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) RANStatusTransfer_TransparentContainer p_rANStatusTransfer_TransparentContainer + ) := { + procedureCode := id_DownlinkRANStatusTransfer, + criticality := reject, + value_ := { + DownlinkRANStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RANStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { RANStatusTransfer_TransparentContainer := p_rANStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template m_n2_DownlinkRANStatusTransfer + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.14 DOWNLINK RAN STATUS TRANSFER + */ + template (present) InitiatingMessage mw_n2_DownlinkRANStatusTransfer( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) RANStatusTransfer_TransparentContainer p_rANStatusTransfer_TransparentContainer := ? + ) := { + procedureCode := id_DownlinkRANStatusTransfer, + criticality := reject, + value_ := { + DownlinkRANStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_RANStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { RANStatusTransfer_TransparentContainer := p_rANStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template mw_n2_DownlinkRANStatusTransfer + + } // End of group Receive + + } // End of group DOWNLINK_RAN_STATUS_TRANSFER + + group HANDOVER_SUCCESS { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.15 HANDOVER SUCCESS + */ + template (value) InitiatingMessage m_n2_HandoverSuccess( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_HandoverSuccess, + criticality := reject, + value_ := { + HandoverSuccess := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_HandoverSuccess + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.15 HANDOVER SUCCESS + */ + template (present) InitiatingMessage mw_n2_HandoverSuccess( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ? + ) := { + procedureCode := id_HandoverSuccess, + criticality := reject, + value_ := { + HandoverSuccess := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_HandoverSuccess + + } // End of group Receive + + } // End of group HANDOVER_SUCCESS + + group UPLINK_RAN_EARLY_STATUS_TRANSFER { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.16 UPLINK RAN EARLY STATUS TRANSFER + */ + template (value) InitiatingMessage m_n2_UplinkRANEarlyStatusTransfer( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) EarlyStatusTransfer_TransparentContainer p_earlyStatusTransfer_TransparentContainer + ) := { + procedureCode := id_UplinkRANEarlyStatusTransfer, + criticality := reject, + value_ := { + UplinkRANEarlyStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_EarlyStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { EarlyStatusTransfer_TransparentContainer := p_earlyStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template m_n2_UplinkRANEarlyStatusTransfer + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.16 UPLINK RAN EARLY STATUS TRANSFER + */ + template (present) InitiatingMessage mw_n2_UplinkRANEarlyStatusTransfer( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) EarlyStatusTransfer_TransparentContainer p_earlyStatusTransfer_TransparentContainer := ? + ) := { + procedureCode := id_UplinkRANEarlyStatusTransfer, + criticality := reject, + value_ := { + UplinkRANEarlyStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_EarlyStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { EarlyStatusTransfer_TransparentContainer := p_earlyStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template mw_n2_UplinkRANEarlyStatusTransfer + + } // End of group Receive + + } // End of group UPLINK_RAN_EARLY_STATUS_TRANSFER + + group DOWNLINK_RAN_EARLY_STATUS_TRANSFER { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.17 DOWNLINK RAN EARLY STATUS TRANSFER + */ + template (value) InitiatingMessage m_n2_DownlinkRANEarlyStatusTransfer( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) EarlyStatusTransfer_TransparentContainer p_earlyStatusTransfer_TransparentContainer + ) := { + procedureCode := id_DownlinkRANEarlyStatusTransfer, + criticality := reject, + value_ := { + DownlinkRANEarlyStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_EarlyStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { EarlyStatusTransfer_TransparentContainer := p_earlyStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template m_n2_DownlinkRANEarlyStatusTransfer + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.3.17 DOWNLINK RAN EARLY STATUS TRANSFER + */ + template (present) InitiatingMessage mw_n2_DownlinkRANEarlyStatusTransfer( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) EarlyStatusTransfer_TransparentContainer p_earlyStatusTransfer_TransparentContainer := ? + ) := { + procedureCode := id_DownlinkRANEarlyStatusTransfer, + criticality := reject, + value_ := { + DownlinkRANEarlyStatusTransfer := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_EarlyStatusTransfer_TransparentContainer, + criticality := reject, + value_ := { EarlyStatusTransfer_TransparentContainer := p_earlyStatusTransfer_TransparentContainer } + } + } + } + } + } // End of template mw_n2_DownlinkRANEarlyStatusTransfer + + } // End of group Receive + + } // End of group DOWNLINK_RAN_EARLY_STATUS_TRANSFER + + } // End of group UE_Mobility_Management_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.4 Paging Messages + */ + group Paging_Messages { + + group PAGING { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.4.1 PAGING + */ + template (value) InitiatingMessage m_n2_Paging( + in template (value) UEPagingIdentity p_uEPagingIdentity, + in template (value) TAIListForPaging p_tAIListForPaging + ) := { + procedureCode := id_Paging, + criticality := reject, + value_ := { + Paging := { + protocolIEs := { + { + id := id_UEPagingIdentity, + criticality := ignore, + value_ := { UEPagingIdentity := p_uEPagingIdentity } + }, + { + id := id_TAIListForPaging, + criticality := ignore, + value_ := { TAIListForPaging := p_tAIListForPaging } + } + } + } + } + } // End of template m_n2_Paging + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.4.1 PAGING + */ + template (present) InitiatingMessage mw_n2_Paging( + template (present) UEPagingIdentity p_uEPagingIdentity := ?, + template (present) TAIListForPaging p_tAIListForPaging := ? + ) := { + procedureCode := id_Paging, + criticality := reject, + value_ := { + Paging := { + protocolIEs := { + { + id := id_UEPagingIdentity, + criticality := ignore, + value_ := { UEPagingIdentity := p_uEPagingIdentity } + }, + { + id := id_TAIListForPaging, + criticality := ignore, + value_ := { TAIListForPaging := p_tAIListForPaging } + } + } + } + } + } // End of template mw_n2_Paging + + } // End of group Receive + + } // End of group PAGING + + } // End of group Paging_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5 NAS Transport Messages + */ + group NAS_Transport_Messages { + + group INITIAL_UE_MESSAGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.1 INITIAL UE MESSAGE + */ + template (value) InitiatingMessage m_n2_initialUeMessage( + in template (value) RAN_UE_NGAP_ID p_RANUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NAS_PDU p_nasPdu, + in template (value) UserLocationInformation p_ueLocInf, + in template (value) RRCEstablishmentCause p_rrcEstCause := PX_RRC_ESTABLISHMENT_CAUSE + ) := { + procedureCode := id_InitialUEMessage, + criticality := reject, + value_ := { + InitialUEMessage := { + protocolIEs := { + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_RANUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_UserLocationInformation, + criticality := reject, + value_ := { UserLocationInformation := p_ueLocInf } + }, + { + id := id_RRCEstablishmentCause, + criticality := ignore, + value_ := { RRCEstablishmentCause := p_rrcEstCause } + }//, + /*{ + id := NGAP_Constants.id_FiveG_S_TMSI, + criticality := NGAP_CommonDataTypes.reject, + Value := "NGAP_IEs.FiveG_S_TMSI", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_AMFSetID, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.AMFSetID", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_UEContextRequest, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.UEContextRequest", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_AllowedNSSAI, + criticality := NGAP_CommonDataTypes.reject, + Value := "NGAP_IEs.AllowedNSSAI", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_SourceToTarget_AMFInformationReroute, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.SourceToTarget_AMFInformationReroute", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_SelectedPLMNIdentity, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.PLMNIdentity", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_IABNodeIndication, + criticality := NGAP_CommonDataTypes.reject, + Value := "NGAP_IEs.IABNodeIndication", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_CEmodeBSupport_Indicator, + criticality := NGAP_CommonDataTypes.reject, + Value := "NGAP_IEs.CEmodeBSupport_Indicator", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_LTEM_Indication, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.LTEM_Indication", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_EDT_Session, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.EDT_Session", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_AuthenticatedIndication, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.AuthenticatedIndication", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_NPN_AccessInformation, + criticality := NGAP_CommonDataTypes.reject, + Value := "NGAP_IEs.NPN_AccessInformation", + presence := NGAP_CommonDataTypes.optional_ + }, + { + id := NGAP_Constants.id_RedCapIndication, + criticality := NGAP_CommonDataTypes.ignore, + Value := "NGAP_IEs.RedCapIndication", + presence := NGAP_CommonDataTypes.optional_ + }*/ + } + } + } + } // End of template m_n2_initialUeMessage + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.1 INITIAL UE MESSAGE + */ + + template (present) InitiatingMessage mw_n2_initialUeMessage_base_nas:= { + procedureCode := id_InitialUEMessage, + criticality := ?, + value_ := { + InitialUEMessage := { + protocolIEs := {*, + { + id := id_NAS_PDU, + criticality := ?, + value_ := { NAS_PDU := ? } + }, + * + } + } + } + } + + template (present) InitiatingMessage mw_n2_initialUeMessage( + template (present) RAN_UE_NGAP_ID p_RANUeNgapID := ?, + template (present) NAS_PDU p_nasPdu := ?, + template (present) UserLocationInformation p_UeLocInf := ?, + template (present) RRCEstablishmentCause p_rrcEstCause := ? + ) := { + procedureCode := id_InitialUEMessage, + criticality := reject, + value_ := { + InitialUEMessage := { + protocolIEs := { + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_RANUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_UserLocationInformation, + criticality := reject, + value_ := { UserLocationInformation := p_UeLocInf } + }, + { + id := id_RRCEstablishmentCause, + criticality := ignore, + value_ := { RRCEstablishmentCause := p_rrcEstCause } + } + } + } + } + } // End of template mw_n2_initialUeMessage + + } // End of group Receive + + } // End of group INITIAL_UE_MESSAGE + + group DOWNLINK_NAS_TRANSPORT { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.2 DOWNLINK NAS TRANSPORT + */ + template (value) InitiatingMessage m_n2_DownlinkNASTransport( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NAS_PDU p_nasPdu + ) := { + procedureCode := id_DownlinkNASTransport, + criticality := ignore, + value_ := { + DownlinkNASTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + } + } + } + } + } // End of template m_n2_DownlinkNASTransport + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.2 DOWNLINK NAS TRANSPORT + */ + template (present) InitiatingMessage mw_n2_DownlinkNASTransport_base_nas:= { + procedureCode := id_DownlinkNASTransport, + criticality := ?, + value_ := { + DownlinkNASTransport := { + protocolIEs := { + *, + { + id := id_NAS_PDU, + criticality := ?, + value_ := { NAS_PDU := ? } + }, + * + } + } + } + } // End of template mw_n2_DownlinkNASTransport_base_nas + + template (present) InitiatingMessage mw_n2_DownlinkNASTransport( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) NAS_PDU p_nasPdu := ? + ) := { + procedureCode := id_DownlinkNASTransport, + criticality := ignore, + value_ := { + DownlinkNASTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + } + } + } + } + } // End of template mw_n2_DownlinkNASTransport + + } // End of group Receive + + } // End of group DOWNLINK_NAS_TRANSPORT + + group UPLINK_NAS_TRANSPORT { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.2 DOWNLINK NAS TRANSPORT + */ + template (value) InitiatingMessage m_n2_UplinkNASTransport( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NAS_PDU p_nasPdu, + in template (value) UserLocationInformation p_userLocationInformation + ) := { + procedureCode := id_UplinkNASTransport, + criticality := ignore, + value_ := { + UplinkNASTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template m_n2_UplinkNASTransport + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.2 DOWNLINK NAS TRANSPORT + */ + template (present) InitiatingMessage mw_n2_UplinkNASTransport( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) NAS_PDU p_nasPdu := ?, + template (present) UserLocationInformation p_userLocationInformation := ? + ) := { + procedureCode := id_UplinkNASTransport, + criticality := ignore, + value_ := { + UplinkNASTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template mw_n2_UplinkNASTransport + + } // End of group Receive + + } // End of group UPLINK_NAS_TRANSPORT + + group NAS_NON_DELIVERY_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.4 NAS NON DELIVERY INDICATION + */ + template (value) InitiatingMessage m_n2_NASNonDeliveryIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NAS_PDU p_nasPdu, + in template (value) Cause p_cause := m_cause_nas(PX_CAUSE_NAS_NON_DELIVERY_INDICATION) + ) := { + procedureCode := id_NASNonDeliveryIndication, + criticality := reject, + value_ := { + NASNonDeliveryIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_NASNonDeliveryIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.4 NAS NON DELIVERY INDICATION + */ + template (present) InitiatingMessage mw_n2_NASNonDeliveryIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) NAS_PDU p_nasPdu := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_NASNonDeliveryIndication, + criticality := reject, + value_ := { + NASNonDeliveryIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NAS_PDU, + criticality := reject, + value_ := { NAS_PDU := p_nasPdu } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_NASNonDeliveryIndication + + } // End of group Receive + + } // End of group NAS_NON_DELIVERY_INDICATION + + group REROUTE_NAS_REQUEST{ + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.5 REROUTE NAS REQUEST + */ + template (value) InitiatingMessage m_n2_RerouteNASRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) octetstring p_nGAPMessage, + in template (value) AMFSetID p_aMFSetID := PX_AMF_SET_ID + ) := { + procedureCode := id_RerouteNASRequest, + criticality := reject, + value_ := { + RerouteNASRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGAP_Message, + criticality := reject, + value_ := { NGAP_Message := p_nGAPMessage } + }, + { + id := id_AMFSetID, + criticality := ignore, + value_ := { AMFSetID := p_aMFSetID } + } + } + } + } + } // End of template m_n2_RerouteNASRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.5.5 REROUTE NAS REQUEST + */ + template (present) InitiatingMessage mw_n2_RerouteNASRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) octetstring p_nGAPMessage := ?, + template (present) AMFSetID p_aMFSetID := ? + ) := { + procedureCode := id_RerouteNASRequest, + criticality := reject, + value_ := { + RerouteNASRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGAP_Message, + criticality := reject, + value_ := { NGAP_Message := p_nGAPMessage } + }, + { + id := id_AMFSetID, + criticality := ignore, + value_ := { AMFSetID := p_aMFSetID } + } + } + } + } + } // End of template mw_n2_RerouteNASRequest + + } // End of group Receive + + } // End of group REROUTE_NAS_REQUEST + + } // End of group NAS_Transport_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6 Interface Management Messages + */ + group Interface_Management_Messages { + + group NG_SETUP_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.1 NG SETUP REQUEST + */ + template (value) InitiatingMessage m_n2_NGSetupRequest( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) SupportedTAList p_supportedTAs, + in template (value) PagingDRX p_pagingDRX := PX_PAGING_DRX + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupRequest := { + protocolIEs := { + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + }, + { + id := id_SupportedTAList, + criticality := reject, + value_ := { SupportedTAList := p_supportedTAs } + }, + { + id := id_DefaultPagingDRX, + criticality := ignore, + value_ := { PagingDRX := p_pagingDRX } + } + } + } + } + } // End of template m_n2_NGSetupRequest + + template (value) InitiatingMessage m_n2_NGSetupRequest_UERetentionInf( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) SupportedTAList p_supportedTAs, + in template (value) PagingDRX p_pagingDRX := PX_PAGING_DRX, + in template (value) UERetentionInformation p_ueRetentionInf + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupRequest := { + protocolIEs := { + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + }, + { + id := id_SupportedTAList, + criticality := reject, + value_ := { SupportedTAList := p_supportedTAs } + }, + { + id := id_DefaultPagingDRX, + criticality := ignore, + value_ := { PagingDRX := p_pagingDRX } + }, + { + id := id_UERetentionInformation, + criticality := ignore, + value_ := { UERetentionInformation := p_ueRetentionInf } + } + } + } + } + } // End of template m_n2_NGSetupRequest_UERetentionInf + + template (value) InitiatingMessage m_n2_NGSetupRequest_ExtRanNodeName( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) SupportedTAList p_supportedTAs, + in template (value) PagingDRX p_pagingDRX := PX_PAGING_DRX, + in template (value) NB_IoT_DefaultPagingDRX p_nbIotDefPagDrx, + in template (value) Extended_RANNodeName p_extRanNodeName + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupRequest := { + protocolIEs := { + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + }, + { + id := id_SupportedTAList, + criticality := reject, + value_ := { SupportedTAList := p_supportedTAs } + }, + { + id := id_DefaultPagingDRX, + criticality := ignore, + value_ := { PagingDRX := p_pagingDRX } + }, + { + id := id_NB_IoT_DefaultPagingDRX, + criticality := ignore, + value_ := { NB_IoT_DefaultPagingDRX := p_nbIotDefPagDrx } + }, + { + id := id_Extended_RANNodeName, + criticality := ignore, + value_ := { Extended_RANNodeName := p_extRanNodeName } + } + } + } + } + } // End of template m_n2_NGSetupRequest_ExtRanNodeName + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.1 NG SETUP REQUEST + */ + template (present) InitiatingMessage mw_n2_NGSetupRequest_base := { + procedureCode := id_NGSetup, criticality := ?, value_ := {NGSetupRequest := {protocolIEs := {*}}} + } // End of template mw_n2_NGSetupRequest_base + + template (present) InitiatingMessage mw_n2_NGSetupRequest( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) SupportedTAList p_supportedTAs := ?, + template (present) PagingDRX p_pagingDRX := ? + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupRequest := { + protocolIEs := { + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + }, + { + id := id_SupportedTAList, + criticality := reject, + value_ := { SupportedTAList := p_supportedTAs } + }, + { + id := id_DefaultPagingDRX, + criticality := ignore, + value_ := { PagingDRX := p_pagingDRX } + } + } + } + } + } // End of template mw_n2_NGSetupRequest + + } // End of group Receive + + } // End of group NG_SETUP_REQUEST + + group NG_SETUP_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.2 NG SETUP RESPONSE + */ + template (value) SuccessfulOutcome m_n2_NGSetupResponse( + in template (value) AMFName p_amfName := PX_AMF_NAME, + in template (value) ServedGUAMIList p_servedGUAMIList, + in template (value) RelativeAMFCapacity p_relativeAmfCap, + in template (value) PLMNSupportList p_plmnSuppList + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupResponse := { + protocolIEs := { + { + id := id_AMFName, + criticality := reject, + value_ := { AMFName := p_amfName } + }, + { + id := id_ServedGUAMIList, + criticality := reject, + value_ := { ServedGUAMIList := p_servedGUAMIList } + }, + { + id := id_RelativeAMFCapacity, + criticality := ignore, + value_ := { RelativeAMFCapacity := p_relativeAmfCap } + }, + { + id := id_PLMNSupportList, + criticality := ignore, + value_ := { PLMNSupportList := p_plmnSuppList } + } + } + } + } + } // End of template m_n2_NGSetupResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.2 NG SETUP RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_NGSetupResponse( + template (present) AMFName p_amfName := ?, + template (present) ServedGUAMIList p_servedGUAMIList := ?, + template (present) RelativeAMFCapacity p_relativeAmfCap:= ?, + template (present) PLMNSupportList p_plmnSuppList := ? + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupResponse := { + protocolIEs := { + *, + { + id := id_AMFName, + criticality := reject, + value_ := { AMFName := p_amfName } + }, + { + id := id_ServedGUAMIList, + criticality := reject, + value_ := { ServedGUAMIList := (p_servedGUAMIList,*) } + }, + { + id := id_RelativeAMFCapacity, + criticality := ignore, + value_ := { RelativeAMFCapacity := p_relativeAmfCap } + }, + { + id := id_PLMNSupportList, + criticality := reject, + value_ := { PLMNSupportList := p_plmnSuppList } + }, + * + } + } + } + } // End of template mw_n2_NGSetupResponse + + template (present) SuccessfulOutcome mw_n2_NGSetupResponse_UERetentionInf( + template (present) AMFName p_amfName := ?, + template (present) ServedGUAMIList p_servedGUAMIList := ?, + template (present) RelativeAMFCapacity p_relativeAmfCap:= ?, + template (present) PLMNSupportList p_plmnSuppList := ?, + template (present) UERetentionInformation p_ueRetentionInf :=? + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupResponse := { + protocolIEs := { + { + id := id_AMFName, + criticality := reject, + value_ := { AMFName := p_amfName } + }, + { + id := id_ServedGUAMIList, + criticality := reject, + value_ := { ServedGUAMIList := p_servedGUAMIList } + }, + { + id := id_RelativeAMFCapacity, + criticality := ignore, + value_ := { RelativeAMFCapacity := p_relativeAmfCap } + }, + { + id := id_PLMNSupportList, + criticality := reject, + value_ := { PLMNSupportList := p_plmnSuppList } + }, + { + id := id_UERetentionInformation, + criticality := ignore, + value_ := { UERetentionInformation := p_ueRetentionInf } + } + } + } + } + } // End of template mw_n2_NGSetupResponse_UERetentionInfo + + template (present) SuccessfulOutcome mw_n2_NGSetupResponse_ExtAmfName( + template (present) AMFName p_amfName := ?, + template (present) ServedGUAMIList p_servedGUAMIList := ?, + template (present) RelativeAMFCapacity p_relativeAmfCap:= ?, + template (present) PLMNSupportList p_plmnSuppList := ?, + template (present) Extended_AMFName p_extAmfName :=? + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupResponse := { + protocolIEs := { + { + id := id_AMFName, + criticality := reject, + value_ := { AMFName := p_amfName } + }, + { + id := id_ServedGUAMIList, + criticality := reject, + value_ := { ServedGUAMIList := p_servedGUAMIList } + }, + { + id := id_RelativeAMFCapacity, + criticality := ignore, + value_ := { RelativeAMFCapacity := p_relativeAmfCap } + }, + { + id := id_PLMNSupportList, + criticality := reject, + value_ := { PLMNSupportList := p_plmnSuppList } + }, + { + id := id_Extended_AMFName, + criticality := ignore, + value_ := { Extended_AMFName := p_extAmfName } + } + } + } + } + } // End of template mw_n2_NGSetupResponse_ExtAmfName + + } // End of group Receive + + } // End of group NG_SETUP_RESPONSE + + group NG_SETUP_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.3 NG SETUP FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_NGSetupFailure( + in template (value) Cause p_cause := m_cause_radioNetwork(PX_NG_SETUP_FAILURE) + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupFailure := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_NGSetupFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.3 NG SETUP FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_NGSetupFailure( + template (present) Cause p_cause := ? + ) := { + procedureCode := id_NGSetup, + criticality := reject, + value_ := { + NGSetupFailure := { + protocolIEs := { + permutation({ + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + },* + ) + } + } + } + } // End of template mw_n2_NGSetupFailure + + } // End of group Receive + + } // End of group NG_SETUP_FAILURE + + group RAN_CONFIGURATION_UPDATE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.4 RAN CONFIGURATION UPDATE + */ + template (value) InitiatingMessage m_n2_RANConfigurationUpdate( + in template (value) RANNodeName p_rANNodeName := PX_RAN_NODE_NAME + ) := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdate := { + protocolIEs := { + { + id := id_RANNodeName, + criticality := ignore, + value_ := { RANNodeName := p_rANNodeName } + } + } + } + } + } // End of template m_n2_RANConfigurationUpdate + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.4 RAN CONFIGURATION UPDATE + */ + template (value) InitiatingMessage m_n2_RANConfigurationUpdate_SupportedTAList( + template (value) SupportedTAList p_supportedTAs + ) := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdate := { + protocolIEs := { + { + id := id_SupportedTAList, + criticality := reject, + value_ := { SupportedTAList := p_supportedTAs } + } + } + } + } + } // End of template mw_n2_RANConfigurationUpdate_SupportedTAList + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.4 RAN CONFIGURATION UPDATE + */ + template (present) InitiatingMessage mw_n2_RANConfigurationUpdate( + template (present) RANNodeName p_rANNodeName := ? + ) := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdate := { + protocolIEs := { + { + id := id_RANNodeName, + criticality := ignore, + value_ := { RANNodeName := p_rANNodeName } + } + } + } + } + } // End of template mw_n2_RANConfigurationUpdate + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.4 RAN CONFIGURATION UPDATE + */ + template (present) InitiatingMessage mw_n2_RANConfigurationUpdate_SupportedTAList( + template (present) SupportedTAList p_supportedTAs := ? + ) := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdate := { + protocolIEs := { + { + id := id_SupportedTAList, + criticality := reject, + value_ := { SupportedTAList := p_supportedTAs } + } + } + } + } + } // End of template mw_n2_RANConfigurationUpdate_SupportedTAList + + } // End of group Receive + + } // End of group RAN_CONFIGURATION_UPDATE + + group RAN_CONFIGURATION_UPDATE_ACKNOWLEDGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.5 RAN CONFIGURATION UPDATE ACKNOWLEDGE + */ + template (value) SuccessfulOutcome m_n2_RANConfigurationUpdateAcknowledge := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdateAcknowledge := { + protocolIEs := { } + } + } + } // End of template m_n2_RANConfigurationUpdateAcknowledge + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.5 RAN CONFIGURATION UPDATE ACKNOWLEDGE + */ + template SuccessfulOutcome mw_n2_RANConfigurationUpdateAcknowledge := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdateAcknowledge := { + protocolIEs := ? + } + } + } // End of template mw_n2_RANConfigurationUpdateAcknowledge + + } // End of group Receive + + } // End of group RAN_CONFIGURATION_UPDATE_ACKNOWLEDGE + + group RAN_CONFIGURATION_UPDATE_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.6 RAN CONFIGURATION UPDATE FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_RANConfigurationUpdateFailure( + in template (value) Cause p_cause := m_cause_radioNetwork(PX_RAN_CONFIGURATION_UPDATE_FAILURE) + ) := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdateFailure := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_RANConfigurationUpdateFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.6 RAN CONFIGURATION UPDATE FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_RANConfigurationUpdateFailure( + template (present) Cause p_cause := ? + ) := { + procedureCode := id_RANConfigurationUpdate, + criticality := reject, + value_ := { + RANConfigurationUpdateFailure := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_RANConfigurationUpdateFailure + + } // End of group Receive + + } // End of group RAN_CONFIGURATION_UPDATE_FAILURE + + group AMF_CONFIGURATION_UPDATE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.7 AMF CONFIGURATION UPDATE + */ + template (value) InitiatingMessage m_n2_AMFConfigurationUpdate( + in template (value) AMFName p_aMFName := PX_AMF_NAME + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdate := { + protocolIEs := { + { + id := id_AMFName, + criticality := ignore, + value_ := { AMFName := p_aMFName } + } + } + } + } + } // End of template m_n2_AMFConfigurationUpdate + + template (value) InitiatingMessage m_n2_AMFConfigurationUpdate_tnl( + //in template (value) AMFName p_AMFName, + in template (value) ServedGUAMIList p_servedGUAMIList, + //in template (value) RelativeAMFCapacity p_relativeAMFCapacity, + in template (value) PLMNSupportList p_pLMNSupportList, + in template (value) AMF_TNLAssociationToAddList p_aMF_TNLAssociationToAddList, + //in template (value) AMF_TNLAssociationToRemoveList p_aMF_TNLAssociationToRemoveList, + in template (value) AMF_TNLAssociationToUpdateList p_aMF_TNLAssociationToUpdateList//, + //in template (value) Extended_AMFName p_extended_AMFName + ):={ + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdate := { + protocolIEs := { + //{ + // id := id_AMFName, + // criticality := ignore, + // value_ := { AMFName := p_aMFName } + //}, + { + id := id_ServedGUAMIList, + criticality := reject, + value_ := { ServedGUAMIList := p_servedGUAMIList } + }, + //{ id := id_RelativeAMFCapacity, + // criticality := ignore, + // value_ := { RelativeAMFCapacity := p_relativeAMFCapacity} + //}, + { + id := id_PLMNSupportList, + criticality := reject, + value_ := { PLMNSupportList := p_pLMNSupportList } + }, + { + id := id_AMF_TNLAssociationToAddList, + criticality := ignore, + value_ := { AMF_TNLAssociationToAddList := p_aMF_TNLAssociationToAddList } + }, + //{ + // id := id_AMF_TNLAssociationToRemoveList, + // criticality := ignore, + // value_ := { AMF_TNLAssociationToRemoveList := p_aMF_TNLAssociationToRemoveList} + //}, + { + id := id_AMF_TNLAssociationToUpdateList, + criticality := ignore, + value_ := { AMF_TNLAssociationToUpdateList := p_aMF_TNLAssociationToUpdateList} + }//, + //{ + // id := id_Extended_AMFName, + // criticality := ignore, + // value_ := { Extended_AMFName := p_extended_AMFName} + //} + } + } + } + } // End of template m_n2_AMFConfigurationUpdate_tnl + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.7 AMF CONFIGURATION UPDATE + */ + template (present) InitiatingMessage mw_n2_AMFConfigurationUpdate( + template (present) AMFName p_aMFName := ? + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdate := { + protocolIEs := { + { + id := id_AMFName, + criticality := ignore, + value_ := { AMFName := p_aMFName } + } + } + } + } + } // End of template mw_n2_AMFConfigurationUpdate + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.7 AMF CONFIGURATION UPDATE + */ + template (present) InitiatingMessage mw_n2_AMFConfigurationUpdate_options( + template (present) AMFName p_aMFName := ?, + template ServedGUAMIList p_servedGUAMIList := *, + template PLMNSupportList p_pLMNSupportList := * + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdate := { + protocolIEs := { + { + id := id_AMFName, + criticality := ignore, + value_ := { AMFName := p_aMFName } + }, + { + id := id_ServedGUAMIList, + criticality := reject, + value_ := { ServedGUAMIList := p_servedGUAMIList } + }, + { + id := id_PLMNSupportList, + criticality := ignore, + value_ := { PLMNSupportList := p_pLMNSupportList } + } + } + } + } + } // End of template mw_n2_AMFConfigurationUpdate_options + + } // End of group Receive + + } // End of group AMF_CONFIGURATION_UPDATE + + group AMF_CONFIGURATION_UPDATE_ACKNOWLEDGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.8 AMF CONFIGURATION UPDATE ACKNOWLEDGE + */ + template (value) SuccessfulOutcome m_n2_AMFConfigurationUpdateAcknowledge := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdateAcknowledge := { + protocolIEs := { } + } + } + } // End of template m_n2_AMFConfigurationUpdateAcknowledge + + template (value) SuccessfulOutcome m_n2_AMFConfigurationUpdateAcknowledge_aMF_TNLAssociationSetupList( + in template (value) AMF_TNLAssociationSetupList p_aMF_TNLAssociationSetupList + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdateAcknowledge := { + protocolIEs := { + { + id := id_AMF_TNLAssociationSetupList, + criticality := ignore, + value_ := { AMF_TNLAssociationSetupList := p_aMF_TNLAssociationSetupList } + } + } + } + } + } // End of template m_n2_AMFConfigurationUpdateAcknowledge_aMF_TNLAssociationSetupList + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.8 AMF CONFIGURATION UPDATE ACKNOWLEDGE + */ + template SuccessfulOutcome mw_n2_AMFConfigurationUpdateAcknowledge := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdateAcknowledge := { + protocolIEs := { } + } + } + } // End of template mw_n2_AMFConfigurationUpdateAcknowledge + + template (present) SuccessfulOutcome mw_n2_AMFConfigurationUpdateAcknowledge_aMF_TNLAssociationSetupList( + template (present) AMF_TNLAssociationSetupList p_aMF_TNLAssociationSetupList := ? + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdateAcknowledge := { + protocolIEs := { + { + id := id_AMF_TNLAssociationSetupList, + criticality := ignore, + value_ := { AMF_TNLAssociationSetupList := p_aMF_TNLAssociationSetupList } + } + } + } + } + } // End of template mw_n2_AMFConfigurationUpdateAcknowledge_aMF_TNLAssociationSetupList + + } // End of group Receive + + } // End of group AMF_CONFIGURATION_UPDATE_ACKNOWLEDGE + + group AMF_CONFIGURATION_UPDATE_FAILURE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.9 AMF CONFIGURATION UPDATE FAILURE + */ + template (value) UnsuccessfulOutcome m_n2_AMFConfigurationUpdateFailure( + in template (value) Cause p_cause := m_cause_radioNetwork(PX_AMF_CONFIGURATION_UPDATE_FAILURE) + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdateFailure := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_AMFConfigurationUpdateFailure + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.9 AMF CONFIGURATION UPDATE FAILURE + */ + template (present) UnsuccessfulOutcome mw_n2_AMFConfigurationUpdateFailure( + template (present) Cause p_cause := ? + ) := { + procedureCode := id_AMFConfigurationUpdate, + criticality := reject, + value_ := { + AMFConfigurationUpdateFailure := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_AMFConfigurationUpdateFailure + + } // End of group Receive + + } // End of group AMF_CONFIGURATION_UPDATE_FAILURE + + group AMF_STATUS_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.10 AMF STATUS INDICATION + */ + template (value) InitiatingMessage m_n2_AMFStatusIndication( + in template (value) UnavailableGUAMIList p_unavailableGUAMIList + ) := { + procedureCode := id_AMFStatusIndication, + criticality := reject, + value_ := { + AMFStatusIndication := { + protocolIEs := { + { + id := id_UnavailableGUAMIList, + criticality := reject, + value_ := { UnavailableGUAMIList := p_unavailableGUAMIList } + } + } + } + } + } // End of template m_n2_AMFStatusIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.10 AMF STATUS INDICATION + */ + template (present) InitiatingMessage mw_n2_AMFStatusIndication( + template (present) UnavailableGUAMIList p_unavailableGUAMIList := ? + ) := { + procedureCode := id_AMFStatusIndication, + criticality := reject, + value_ := { + AMFStatusIndication := { + protocolIEs := { + { + id := id_UnavailableGUAMIList, + criticality := reject, + value_ := { UnavailableGUAMIList := p_unavailableGUAMIList } + } + } + } + } + } // End of template mw_n2_AMFStatusIndication + + } // End of group Receive + + } // End of group AMF_STATUS_INDICATION + + group NG_RESET { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.11 NG RESET + */ + template (value) InitiatingMessage m_n2_NGReset( + in template (value) Cause p_cause, + in template (value) ResetType p_resetType + ) := { + procedureCode := id_NGReset, + criticality := reject, + value_ := { + NGReset := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_ResetType, + criticality := reject, + value_ := { ResetType := p_resetType } + } + } + } + } + } // End of template m_n2_NGReset + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.11 NG RESET + */ + template (present) InitiatingMessage mw_n2_NGReset( + template (present) Cause p_cause := ?, + template (present) ResetType p_resetType := ? + ) := { + procedureCode := id_NGReset, + criticality := reject, + value_ := { + NGReset := { + protocolIEs := { + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + }, + { + id := id_ResetType, + criticality := reject, + value_ := { ResetType := p_resetType } + } + } + } + } + } // End of template mw_n2_NGReset + + } // End of group Receive + + } // End of group NG_RESET + + group NG_RESET_ACKNOWLEDGE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.12 NG RESET ACKNOWLEDGE + */ + template (value) SuccessfulOutcome m_n2_NGResetAcknowledge := { + procedureCode := id_NGReset, + criticality := reject, + value_ := { + NGResetAcknowledge := { + protocolIEs := { } + } + } + } // End of template m_n2_NGResetAcknowledge + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.12 NG RESET ACKNOWLEDGE + */ + template (present) SuccessfulOutcome mw_n2_NGResetAcknowledge := { + procedureCode := id_NGReset, + criticality := reject, + value_ := { + NGResetAcknowledge := { + protocolIEs := { } + } + } + } // End of template mw_n2_NGResetAcknowledge + + } // End of group Receive + + } // End of group NG_RESET_ACKNOWLEDGE + + group ERROR_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.13 ERROR INDICATION + */ + template (value) InitiatingMessage m_n2_ErrorIndication := { + procedureCode := id_ErrorIndication, + criticality := reject, + value_ := { + ErrorIndication := { + protocolIEs := { } + } + } + } // End of template m_n2_ErrorIndication + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.13 ERROR INDICATION + */ + template (value) InitiatingMessage m_n2_ErrorIndication_ids( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause + ) := { + procedureCode := id_ErrorIndication, + criticality := reject, + value_ := { + ErrorIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_ErrorIndication_ids + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.13 ERROR INDICATION + */ + template (present) InitiatingMessage mw_n2_ErrorIndication := { + procedureCode := id_ErrorIndication, + criticality := reject, + value_ := { + ErrorIndication := { + protocolIEs := { } + } + } + } // End of template mw_n2_ErrorIndication + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.13 ERROR INDICATION + */ + template (present) InitiatingMessage mw_n2_ErrorIndication_ids( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_ErrorIndication, + criticality := reject, + value_ := { + ErrorIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_ErrorIndication_ids + + } // End of group Receive + + } // End of group ERROR_INDICATION + + group OVERLOAD_START { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.14 OVERLOAD START + */ + template (value) InitiatingMessage m_n2_OverloadStart := { + procedureCode := id_OverloadStart, + criticality := reject, + value_ := { + OverloadStart := { + protocolIEs := { } + } + } + } // End of template m_n2_OverloadStart + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.14 OVERLOAD START + */ + template (present) InitiatingMessage mw_n2_OverloadStart := { + procedureCode := id_OverloadStart, + criticality := reject, + value_ := { + OverloadStart := { + protocolIEs := { } + } + } + } // End of template mw_n2_OverloadStart + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.14 OVERLOAD START + */ + template (present) InitiatingMessage mw_n2_OverloadStart_NSSAIList ( + template (present) OverloadStartNSSAIList p_overloadStartNSSAIList:= ? + ):= { + procedureCode := id_OverloadStart, + criticality := reject, + value_ := { + OverloadStart := { + protocolIEs := { + { + id := id_OverloadStartNSSAIList, + criticality := ignore, + value_ := { OverloadStartNSSAIList := p_overloadStartNSSAIList } + } + } + } + } + } // End of template mw_n2_OverloadStart_NSSAIList + + } // End of group Receive + + } // End of group OVERLOAD_START + + group OVERLOAD_STOP { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.15 OVERLOAD STOP + */ + template (value) InitiatingMessage m_n2_OverloadStop := { + procedureCode := id_OverloadStop, + criticality := reject, + value_ := { + OverloadStop := { + protocolIEs := { } + } + } + } // End of template m_n2_OverloadStop + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.6.15 OVERLOAD STOP + */ + template (present) InitiatingMessage mw_n2_OverloadStop := { + procedureCode := id_OverloadStop, + criticality := reject, + value_ := { + OverloadStop := { + protocolIEs := { } + } + } + } // End of template mw_n2_OverloadStop + + } // End of group Receive + + } // End of group OVERLOAD_STOP + + } // End of group Interface_Management_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.7 Configuration Transfer Messages + */ + group Configuration_Transfer_Messages { + + group UPLINK_RAN_CONFIGURATION_TRANSFER { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.7.1 UPLINK RAN CONFIGURATION TRANSFER + */ + template (value) InitiatingMessage m_n2_UplinkRANConfigurationTransfer := { + procedureCode := id_UplinkRANConfigurationTransfer, + criticality := reject, + value_ := { + UplinkRANConfigurationTransfer := { + protocolIEs := { } + } + } + } // End of template m_n2_UplinkRANConfigurationTransfer + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.7.1 UPLINK RAN CONFIGURATION TRANSFER + */ + template (present) InitiatingMessage mw_n2_UplinkRANConfigurationTransfer := { + procedureCode := id_UplinkRANConfigurationTransfer, + criticality := reject, + value_ := { + UplinkRANConfigurationTransfer := { + protocolIEs := { } + } + } + } // End of template mw_n2_UplinkRANConfigurationTransfer + + } // End of group Receive + + } // End of group UPLINK_RAN_CONFIGURATION_TRANSFER + + group DOWNLINK_RAN_CONFIGURATION_TRANSFER { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.7.2 DOWNLINK RAN CONFIGURATION TRANSFER + */ + template (value) InitiatingMessage m_n2_DownlinkRANConfigurationTransfer := { + procedureCode := id_DownlinkRANConfigurationTransfer, + criticality := reject, + value_ := { + DownlinkRANConfigurationTransfer := { + protocolIEs := { } + } + } + } // End of template m_n2_DownlinkRANConfigurationTransfer + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.7.2 DOWNLINK RAN CONFIGURATION TRANSFER + */ + template (present) InitiatingMessage mw_n2_DownlinkRANConfigurationTransfer := { + procedureCode := id_DownlinkRANConfigurationTransfer, + criticality := reject, + value_ := { + DownlinkRANConfigurationTransfer := { + protocolIEs := { } + } + } + } // End of template mw_n2_DownlinkRANConfigurationTransfer + + } // End of group Receive + + } // End of group DOWNLINK_RAN_CONFIGURATION_TRANSFER + + } // End of group Configuration_Transfer_Messages + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8 Warning Message Transmission Messages + */ + group Warning_Message_Transmission_Messages { + + group WRITE_REPLACE_WARNING_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.1 WRITE-REPLACE WARNING REQUEST + */ + template (value) InitiatingMessage m_n2_WriteReplaceWarningRequest( + in template (value) MessageIdentifier p_messageIdentifier := PX_MESSAGE_IDENTIFIER, + in template (value) SerialNumber p_serialNumber := PX_SERIAL_NUMBER, + in template (value) RepetitionPeriod p_repetitionPeriod := PX_REPETITION_PERIOD, + in template (value) NumberOfBroadcastsRequested p_numberOfBroadcastsRequested := PX_NUMBER_OF_BROADCASTS_REQUESTED + ) := { + procedureCode := id_WriteReplaceWarning, + criticality := reject, + value_ := { + WriteReplaceWarningRequest := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + }, + { + id := id_RepetitionPeriod, + criticality := reject, + value_ := { RepetitionPeriod := p_repetitionPeriod } + }, + { + id := id_NumberOfBroadcastsRequested, + criticality := reject, + value_ := { NumberOfBroadcastsRequested := p_numberOfBroadcastsRequested } + } + } + } + } + } // End of template m_n2_WriteReplaceWarningRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.1 WRITE-REPLACE WARNING REQUEST + */ + template (present) InitiatingMessage mw_n2_WriteReplaceWarningRequest( + template (present) MessageIdentifier p_messageIdentifier :=?, + template (present) SerialNumber p_serialNumber := ?, + template (present) RepetitionPeriod p_repetitionPeriod := ?, + template (present) NumberOfBroadcastsRequested p_numberOfBroadcastsRequested := ? + ) := { + procedureCode := id_WriteReplaceWarning, + criticality := reject, + value_ := { + WriteReplaceWarningRequest := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + }, + { + id := id_RepetitionPeriod, + criticality := reject, + value_ := { RepetitionPeriod := p_repetitionPeriod } + }, + { + id := id_NumberOfBroadcastsRequested, + criticality := reject, + value_ := { NumberOfBroadcastsRequested := p_numberOfBroadcastsRequested } + } + } + } + } + } // End of template mw_n2_WriteReplaceWarningRequest + + } // End of group Receive + + } // End of group WRITE_REPLACE_WARNING_REQUEST + + group WRITE_REPLACE_WARNING_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.2 WRITE-REPLACE WARNING RESPONSE + */ + template (value) SuccessfulOutcome m_n2_WriteReplaceWarningResponse( + in template (value) MessageIdentifier p_messageIdentifier := PX_MESSAGE_IDENTIFIER, + in template (value) SerialNumber p_serialNumber := PX_SERIAL_NUMBER + ) := { + procedureCode := id_WriteReplaceWarning, + criticality := reject, + value_ := { + WriteReplaceWarningResponse := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + } + } + } + } + } // End of template m_n2_WriteReplaceWarningResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.2 WRITE-REPLACE WARNING RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_WriteReplaceWarningResponse( + template (present) MessageIdentifier p_messageIdentifier := ?, + template (present) SerialNumber p_serialNumber := ? + ) := { + procedureCode := id_WriteReplaceWarning, + criticality := reject, + value_ := { + WriteReplaceWarningResponse := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + } + } + } + } + } // End of template mw_n2_WriteReplaceWarningResponse + + } // End of group Receive + + } // End of group WRITE_REPLACE_WARNING_RESPONSE + + group PWS_CANCEL_REQUEST { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.3 PWS CANCEL REQUEST + */ + template (value) InitiatingMessage m_n2_PWSCancelRequest( + in template (value) MessageIdentifier p_messageIdentifier := PX_MESSAGE_IDENTIFIER, + in template (value) SerialNumber p_serialNumber := PX_SERIAL_NUMBER + ) := { + procedureCode := id_PWSCancel, + criticality := reject, + value_ := { + PWSCancelRequest := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + } + } + } + } + } // End of template m_n2_PWSCancelRequest + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.3 PWS CANCEL REQUEST + */ + template (present) InitiatingMessage mw_n2_PWSCancelRequest( + template (present) MessageIdentifier p_messageIdentifier := ?, + template (present) SerialNumber p_serialNumber := ? + ) := { + procedureCode := id_PWSCancel, + criticality := reject, + value_ := { + PWSCancelRequest := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + } + } + } + } + } // End of template mw_n2_PWSCancelRequest + + } // End of group Receive + + } // End of group PWS_CANCEL_REQUEST + + group PWS_CANCEL_RESPONSE { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.4 PWS CANCEL RESPONSE + */ + template (value) SuccessfulOutcome m_n2_PWSCancelResponse( + in template (value) MessageIdentifier p_messageIdentifier := PX_MESSAGE_IDENTIFIER, + in template (value) SerialNumber p_serialNumber := PX_SERIAL_NUMBER + ) := { + procedureCode := id_PWSCancel, + criticality := reject, + value_ := { + PWSCancelResponse := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + } + } + } + } + } // End of template m_n2_PWSCancelResponse + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.4 PWS CANCEL RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_PWSCancelResponse( + template (present) MessageIdentifier p_messageIdentifier := ?, + template (present) SerialNumber p_serialNumber := ? + ) := { + procedureCode := id_PWSCancel, + criticality := reject, + value_ := { + PWSCancelResponse := { + protocolIEs := { + { + id := id_MessageIdentifier, + criticality := reject, + value_ := { MessageIdentifier := p_messageIdentifier } + }, + { + id := id_SerialNumber, + criticality := reject, + value_ := { SerialNumber := p_serialNumber } + } + } + } + } + } // End of template mw_n2_PWSCancelResponse + + } // End of group Receive + + } // End of group PWS_CANCEL_RESPONSE + + group PWS_RESTART_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.5 PWS RESTART INDICATION + */ + template (value) InitiatingMessage m_n2_PWSRestartIndication( + in template (value) CellIDListForRestart p_cellIDListForRestart, + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) TAIListForRestart p_tAIListForRestart, + in template (value) EmergencyAreaIDListForRestart p_emergencyAreaIDListForRestart + ) := { + procedureCode := id_PWSRestartIndication, + criticality := ignore, + value_ := { + PWSRestartIndication := { + protocolIEs := { + { + id := id_CellIDListForRestart, + criticality := reject, + value_ := { CellIDListForRestart := p_cellIDListForRestart } + }, + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + }, + { + id := id_TAIListForRestart, + criticality := reject, + value_ := { TAIListForRestart := p_tAIListForRestart } + }, + { + id := id_EmergencyAreaIDListForRestart, + criticality := reject, + value_ := { EmergencyAreaIDListForRestart := p_emergencyAreaIDListForRestart } + } + } + } + } + } // End of template m_n2_PWSRestartIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.5 PWS RESTART INDICATION + */ + template (present) InitiatingMessage mw_n2_PWSRestartIndication( + template (present) CellIDListForRestart p_cellIDListForRestart := ?, + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) TAIListForRestart p_tAIListForRestart := ?, + template (present) EmergencyAreaIDListForRestart p_emergencyAreaIDListForRestart := ? + ) := { + procedureCode := id_PWSRestartIndication, + criticality := ignore, + value_ := { + PWSRestartIndication := { + protocolIEs := { + { + id := id_CellIDListForRestart, + criticality := reject, + value_ := { CellIDListForRestart := p_cellIDListForRestart } + }, + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + }, + { + id := id_TAIListForRestart, + criticality := reject, + value_ := { TAIListForRestart := p_tAIListForRestart } + }, + { + id := id_EmergencyAreaIDListForRestart, + criticality := reject, + value_ := { EmergencyAreaIDListForRestart := p_emergencyAreaIDListForRestart } + } + } + } + } + } // End of template mw_n2_PWSRestartIndication + + } // End of group Receive + + } // End of group PWS_RESTART_INDICATION + + group PWS_FAILURE_INDICATION { + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.5 PWS RESTART INDICATION + */ + template (value) InitiatingMessage m_n2_PWSFailureIndication( + in template (value) PWSFailedCellIDList p_pWSFailedCellIDList, + in template (value) GlobalRANNodeID p_globalRANNodeID + ) := { + procedureCode := id_PWSRestartIndication, + criticality := ignore, + value_ := { + PWSFailureIndication := { + protocolIEs := { + { + id := id_PWSFailedCellIDList, + criticality := reject, + value_ := { PWSFailedCellIDList := p_pWSFailedCellIDList } + }, + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + } + } + } + } + } // End of template m_n2_PWSFailureIndication + + } // End of group Send + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.8.5 PWS RESTART INDICATION + */ + template (present) InitiatingMessage mw_n2_PWSFailureIndication( + template (present) PWSFailedCellIDList p_pWSFailedCellIDList := ?, + template (present) GlobalRANNodeID p_globalRANNodeID := ? + ) := { + procedureCode := id_PWSRestartIndication, + criticality := ignore, + value_ := { + PWSFailureIndication := { + protocolIEs := { + { + id := id_PWSFailedCellIDList, + criticality := reject, + value_ := { PWSFailedCellIDList := p_pWSFailedCellIDList } + }, + { + id := id_GlobalRANNodeID, + criticality := reject, + value_ := { GlobalRANNodeID := p_globalRANNodeID } + } + } + } + } + } // End of template mw_n2_PWSFailureIndication + + } // End of group Receive + + } // End of group PWS_FAILURE_INDICATION + + } // End of group Warning_Message_Transmission_Messages + + //9.2.9 + group NRPPa_Transport_Messages { + //9.2.9.1 + group DOWNLINK_UE_ASSOCIATED_NRPPA_TRANSPORT{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.1 DOWNLINK UE ASSOCIATED NRPPA TRANSPORT + */ + template (value) InitiatingMessage m_n2_DownlinkUEAssociatedNRPPaTransport( + in template (value) AMF_UE_NGAP_ID p_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID, + in template (value) RoutingID p_routingID, + in template (value) NRPPa_PDU p_nRPPa_PDU + ) := { + procedureCode := id_DownlinkUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + DownlinkUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_AMF_UE_NGAP_ID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID } + }, + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template m_n2_DownlinkUEAssociatedNRPPaTransport + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.1 DOWNLINK UE ASSOCIATED NRPPA TRANSPORT + */ + template (present) InitiatingMessage mw_n2_DownlinkUEAssociatedNRPPaTransport( + template (present) AMF_UE_NGAP_ID p_AMF_UE_NGAP_ID := ?, + template (present) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := ?, + template (present) RoutingID p_routingID := ?, + template (present) NRPPa_PDU p_nRPPa_PDU := ? + ) := { + procedureCode := id_DownlinkUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + DownlinkUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_AMF_UE_NGAP_ID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID } + }, + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template mw_n2_DownlinkUEAssociatedNRPPaTransport + + } + } + //9.2.9.2 + group UPLINK_UE_ASSOCIATED_NRPPA_TRANSPORT{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.2 UPLINK UE ASSOCIATED NRPPA TRANSPORT + */ + template (value) InitiatingMessage m_n2_UplinkUEAssociatedNRPPaTransport( + in template (value) AMF_UE_NGAP_ID p_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID, + in template (value) RoutingID p_routingID, + in template (value) NRPPa_PDU p_nRPPa_PDU + ) := { + procedureCode := id_UplinkUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + UplinkUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_AMF_UE_NGAP_ID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID } + }, + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template m_n2_UplinkUEAssociatedNRPPaTransport + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.2 UPLINK UE ASSOCIATED NRPPA TRANSPORT + */ + template (present) InitiatingMessage mw_n2_UplinkUEAssociatedNRPPaTransport( + template (present) AMF_UE_NGAP_ID p_AMF_UE_NGAP_ID := ?, + template (present) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := ?, + template (present) RoutingID p_routingID := ?, + template (present) NRPPa_PDU p_nRPPa_PDU := ? + ) := { + procedureCode := id_UplinkUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + UplinkUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_AMF_UE_NGAP_ID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID } + }, + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template mw_n2_UplinkUEAssociatedNRPPaTransport + + } + } + //9.2.9.3 + group DOWNLINK_NON_UE_ASSOCIATED_NRPPA_TRANSPORT{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.3 DOWNLINK NON UE ASSOCIATED NRPPA TRANSPORT + */ + template (value) InitiatingMessage m_n2_DownlinkNonUEAssociatedNRPPaTransport( + in template (value) RoutingID p_routingID, + in template (value) NRPPa_PDU p_nRPPa_PDU + ) := { + procedureCode := id_DownlinkNonUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + DownlinkNonUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template m_n2_DownlinkNonUEAssociatedNRPPaTransport + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.1 DOWNLINK UE ASSOCIATED NRPPA TRANSPORT + */ + template (present) InitiatingMessage mw_n2_DownlinkNonUEAssociatedNRPPaTransport( + template (present) RoutingID p_routingID := ?, + template (present) NRPPa_PDU p_nRPPa_PDU := ? + ) := { + procedureCode := id_DownlinkNonUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + DownlinkNonUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template mw_n2_DownlinkNonUEAssociatedNRPPaTransport + + } + } + //9.2.9.4 + group UPLINK_NON_UE_ASSOCIATED_NRPPA_TRANSPORT{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.4 UPLINK NON UE ASSOCIATED NRPPA TRANSPORT + */ + template (value) InitiatingMessage m_n2_UplinkNonUEAssociatedNRPPaTransport( + in template (value) RoutingID p_routingID, + in template (value) NRPPa_PDU p_nRPPa_PDU + ) := { + procedureCode := id_UplinkNonUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + UplinkNonUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template m_n2_UplinkNonUEAssociatedNRPPaTransport + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.9.4 UPLINK NON UE ASSOCIATED NRPPA TRANSPORT + */ + template (present) InitiatingMessage mw_n2_UplinkNonUEAssociatedNRPPaTransport( + template (present) RoutingID p_routingID := ?, + template (present) NRPPa_PDU p_nRPPa_PDU := ? + ) := { + procedureCode := id_UplinkNonUEAssociatedNRPPaTransport, + criticality := ignore, + value_ := { + UplinkNonUEAssociatedNRPPaTransport := { + protocolIEs := { + { + id := id_RoutingID, + criticality := reject, + value_ := { RoutingID := p_routingID } + }, + { + id := id_NRPPa_PDU, + criticality := reject, + value_ := { NRPPa_PDU := p_nRPPa_PDU } + } + } + } + } + } // End of template mw_n2_UplinkNonUEAssociatedNRPPaTransport + + } + } + } // End of group NRPPa_Transport_Messages + + //9.2.10 + group Trace_Messages { + //9.2.10.1 + group TRACE_START{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.1 TRACE START + */ + template (value) InitiatingMessage m_n2_TraceStart_ie := { + procedureCode := id_TraceStart, + criticality := ignore, + value_ := { + TraceStart := { + protocolIEs := { } + } + } + } // End of template m_n2_TraceStart_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.1 TRACE START + */ + template (value) InitiatingMessage m_n2_TraceStart( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) TraceActivation p_traceActivation + ) := { + procedureCode := id_TraceStart, + criticality := ignore, + value_ := { + TraceStart := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_TraceActivation, + criticality := ignore, + value_ := { TraceActivation := p_traceActivation } + } + } + } + } + } // End of template m_n2_TraceStart + } + + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.1 TRACE START + */ + template (present) InitiatingMessage mw_n2_TraceStart_ie := { + procedureCode := id_TraceStart, + criticality := ignore, + value_ := { + TraceStart := { + protocolIEs := { } + } + } + } // End of template mw_n2_TraceStart_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.1 TRACE START + */ + template (present) InitiatingMessage mw_n2_TraceStart( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) TraceActivation p_traceActivation := ? + ) := { + procedureCode := id_TraceStart, + criticality := ignore, + value_ := { + TraceStart := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_TraceActivation, + criticality := ignore, + value_ := { TraceActivation := p_traceActivation } + } + } + } + } + } // End of template mw_n2_TraceStart + + } + } + //9.2.10.2 + group TRACE_FAILURE_INDICATION{ + + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.2 TRACE FAILURE INDICATION + */ + template (value) InitiatingMessage m_n2_TraceFailureIndication_ie := { + procedureCode := id_TraceFailureIndication, + criticality := ignore, + value_ := { + TraceFailureIndication := { + protocolIEs := { } + } + } + } // End of template m_n2_TraceFailureIndication_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.2 TRACE FAILURE INDICATION + */ + template (value) InitiatingMessage m_n2_TraceFailureIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NGRANTraceID p_NGRANTraceID, + in template (value) Cause p_cause + ) := { + procedureCode := id_TraceFailureIndication, + criticality := ignore, + value_ := { + TraceFailureIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGRANTraceID, + criticality := ignore, + value_ := { NGRANTraceID := p_NGRANTraceID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_TraceFailureIndication + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.2 TRACE FAILURE INDICATION + */ + template (present) InitiatingMessage mw_n2_TraceFailureIndication_ie := { + procedureCode := id_TraceFailureIndication, + criticality := ignore, + value_ := { + TraceFailureIndication := { + protocolIEs := { } + } + } + } // End of template mw_n2_TraceFailureIndication_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.2 TRACE FAILURE INDICATION + */ + template (present) InitiatingMessage mw_n2_TraceFailureIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) NGRANTraceID p_NGRANTraceID := ?, + template (present) Cause p_cause := ? + ) := { + procedureCode := id_TraceFailureIndication, + criticality := ignore, + value_ := { + TraceFailureIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGRANTraceID, + criticality := ignore, + value_ := { NGRANTraceID := p_NGRANTraceID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_TraceFailureIndication + } + } + //9.2.10.3 + group DEACTIVATE_TRACE{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.3 DEACTIVATE TRACE + */ + template (value) InitiatingMessage m_n2_DeactivateTrace_ie := { + procedureCode := id_DeactivateTrace, + criticality := ignore, + value_ := { + DeactivateTrace := { + protocolIEs := { } + } + } + } // End of template m_n2_DeactivateTrace + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.3 DEACTIVATE TRACE + */ + template (value) InitiatingMessage m_n2_DeactivateTrace( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NGRANTraceID p_NGRANTraceID + ) := { + procedureCode := id_DeactivateTrace, + criticality := ignore, + value_ := { + DeactivateTrace := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGRANTraceID, + criticality := ignore, + value_ := { NGRANTraceID := p_NGRANTraceID } + } + } + } + } + } // End of template m_n2_DeactivateTrace + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.3 DEACTIVATE TRACE + */ + template (present) InitiatingMessage mw_n2_DeactivateTrace_ie := { + procedureCode := id_DeactivateTrace, + criticality := ignore, + value_ := { + DeactivateTrace := { + protocolIEs := { } + } + } + } // End of template mw_n2_DeactivateTrace_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.3 DEACTIVATE TRACE + */ + template (present) InitiatingMessage mw_n2_DeactivateTrace( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) NGRANTraceID p_NGRANTraceID := ? + ) := { + procedureCode := id_DeactivateTrace, + criticality := ignore, + value_ := { + DeactivateTrace := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGRANTraceID, + criticality := ignore, + value_ := { NGRANTraceID := p_NGRANTraceID } + } + } + } + } + } // End of template mw_n2_DeactivateTrace + } + } + //9.2.10.4 + group CELL_TRAFFIC_TRACE{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.4 CELL TRAFFIC TRACE + */ + template (value) InitiatingMessage m_n2_CellTrafficTrace_ie := { + procedureCode := id_CellTrafficTrace, + criticality := ignore, + value_ := { + CellTrafficTrace := { + protocolIEs := { } + } + } + } // End of template m_n2_CellTrafficTrace_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.4 CELL TRAFFIC TRACE + */ + template (value) InitiatingMessage m_n2_CellTrafficTrace( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) NGRANTraceID p_NGRANTraceID, + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (value) TransportLayerAddress p_tla, + in template (value) PrivacyIndicator p_privacyInd, + in template (value) URI_address p_uRI_address + ) := { + procedureCode := id_CellTrafficTrace, + criticality := ignore, + value_ := { + CellTrafficTrace := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGRANTraceID, + criticality := ignore, + value_ := { NGRANTraceID := p_NGRANTraceID } + }, + { + id := id_NGRAN_CGI, + criticality := ignore, + value_ := { NGRAN_CGI := p_nGRAN_CGI } + }, + { + id := id_TraceCollectionEntityIPAddress, + criticality := ignore, + value_ := { TransportLayerAddress := p_tla } + }, + { + id := id_PrivacyIndicator, + criticality := ignore, + value_ := { PrivacyIndicator := p_privacyInd } + }, + { + id := id_TraceCollectionEntityURI, + criticality := ignore, + value_ := { URI_address := p_uRI_address } + } + } + } + } + } // End of template m_n2_CellTrafficTrace + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.4 CELL TRAFFIC TRACE + */ + template (present) InitiatingMessage mw_n2_CellTrafficTrace_ie := { + procedureCode := id_CellTrafficTrace, + criticality := ignore, + value_ := { + CellTrafficTrace := { + protocolIEs := { } + } + } + } // End of template mw_n2_CellTrafficTrace_ie + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.10.4 CELL TRAFFIC TRACE + */ + template (present) InitiatingMessage mw_n2_CellTrafficTrace( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?, + template (present) NGRANTraceID p_NGRANTraceID := ?, + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template (present) TransportLayerAddress p_tla := ?, + template (present) PrivacyIndicator p_privacyInd := ?, + template (present) URI_address p_uRI_address := ? + ) := { + procedureCode := id_CellTrafficTrace, + criticality := ignore, + value_ := { + CellTrafficTrace := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_NGRANTraceID, + criticality := ignore, + value_ := { NGRANTraceID := p_NGRANTraceID } + }, + { + id := id_NGRAN_CGI, + criticality := ignore, + value_ := { NGRAN_CGI := p_nGRAN_CGI } + }, + { + id := id_TraceCollectionEntityIPAddress, + criticality := ignore, + value_ := { TransportLayerAddress := p_tla } + }, + { + id := id_PrivacyIndicator, + criticality := ignore, + value_ := { PrivacyIndicator := p_privacyInd } + }, + { + id := id_TraceCollectionEntityURI, + criticality := ignore, + value_ := { URI_address := p_uRI_address } + } + } + } + } + } // End of template mw_n2_CellTrafficTrace + } + } + } // End of group Trace_Messages + + //9.2.11 + group Location_Reporting_Messages { + //9.2.11.1 + group LOCATION_REPORTING_CONTROL{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.1 LOCATION REPORTING CONTROL + */ + template (value) InitiatingMessage m_n2_LocationReportingControl( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) LocationReportingRequestType p_locationReportingRequestType + ) := { + procedureCode := id_LocationReportingControl, + criticality := ignore, + value_ := { + LocationReportingControl := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType} + } + } + } + } + } // End of template m_n2_LocationReportingControl + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.1 LOCATION REPORTING CONTROL + */ + template (present) InitiatingMessage mw_n2_LocationReportingControl( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) LocationReportingRequestType p_locationReportingRequestType := m_locationReportingRequestType(direct, cell) //TODO: do we need PX here? + ) := { + procedureCode := id_LocationReportingControl, + criticality := ignore, + value_ := { + LocationReportingControl := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType} + } + } + } + } + } // End of template mw_n2_LocationReportingControl + + } + } + //9.2.11.2 + group LOCATION_REPORTING_FAILURE_INDICATION{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.2 LOCATION REPORTING FAILURE INDICATION + */ + template (value) InitiatingMessage m_n2_LocationReportingFailureIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) Cause p_cause + ) := { + procedureCode := id_LocationReportingFailureIndication, + criticality := ignore, + value_ := { + LocationReportingFailureIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template m_n2_LocationReportingFailureIndication + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.2 LOCATION REPORTING FAILURE INDICATION + */ + template (present) InitiatingMessage mw_n2_LocationReportingFailureIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) Cause p_cause + ) := { + procedureCode := id_LocationReportingFailureIndication, + criticality := ignore, + value_ := { + LocationReportingFailureIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_Cause, + criticality := ignore, + value_ := { Cause := p_cause } + } + } + } + } + } // End of template mw_n2_LocationReportingFailureIndication + + } + } + //9.2.11.3 + group LOCATION_REPORT{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.3 LOCATION REPORT + */ + template (value) InitiatingMessage m_n2_LocationReport( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) UserLocationInformation p_userLocationInformation, + in template (value) LocationReportingRequestType p_locationReportingRequestType := m_locationReportingRequestType(direct, cell) //TODO: do we need PX here? + ) := { + procedureCode := id_LocationReport, + criticality := ignore, + value_ := { + LocationReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + }, + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType} + } + } + } + } + } // End of template m_n2_LocationReport + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.3 LOCATION REPORT + */ + template (value) InitiatingMessage m_n2_LocationReport_options( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) UserLocationInformation p_userLocationInformation, + in template (value) UEPresenceInAreaOfInterestList p_uEPresenceInAreaOfInterestList, + in template (value) LocationReportingRequestType p_locationReportingRequestType := m_locationReportingRequestType(direct, cell) //TODO: do we need PX here? + ) := { + procedureCode := id_LocationReport, + criticality := ignore, + value_ := { + LocationReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + }, + { + id := id_UEPresenceInAreaOfInterestList, + criticality := ignore, + value_ := { UEPresenceInAreaOfInterestList := p_uEPresenceInAreaOfInterestList } + }, + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType} + } + } + } + } + } // End of template m_n2_LocationReport_options + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.3 LOCATION REPORT + */ + template (present) InitiatingMessage mw_n2_LocationReport( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) UserLocationInformation p_userLocationInformation := ?, + template (present) LocationReportingRequestType p_locationReportingRequestType := ? + ) := { + procedureCode := id_LocationReport, + criticality := ignore, + value_ := { + LocationReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + }, + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType} + } + } + } + } + } // End of template mw_n2_LocationReport + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.11.3 LOCATION REPORT + */ + template (present) InitiatingMessage mw_n2_LocationReport_options( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) UserLocationInformation p_userLocationInformation := ?, + template (present) UEPresenceInAreaOfInterestList p_uEPresenceInAreaOfInterestList := ?, + template (present) LocationReportingRequestType p_locationReportingRequestType := ? + ) := { + procedureCode := id_LocationReport, + criticality := ignore, + value_ := { + LocationReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + }, + { + id := id_UEPresenceInAreaOfInterestList, + criticality := ignore, + value_ := { UEPresenceInAreaOfInterestList := p_uEPresenceInAreaOfInterestList } + }, + { + id := id_LocationReportingRequestType, + criticality := ignore, + value_ := { LocationReportingRequestType := p_locationReportingRequestType} + } + } + } + } + } // End of template mw_n2_LocationReport_options + + } + } + } // End of group Location_Reporting_Messages + + //9.2.12 + group UE_TNLA_Binding_Messages { + //9.2.12.1 + group UE_TNLA_BINDING_RELEASE_REQUEST{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.12.1 UE TNLA BINDING RELEASE REQUEST + */ + template (value) InitiatingMessage m_n2_UETNLABindingReleaseRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UETNLABindingRelease, + criticality := ignore, + value_ := { + UETNLABindingReleaseRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_UETNLABindingReleaseRequest + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.12.1 UE TNLA BINDING RELEASE REQUEST + */ + template (present) InitiatingMessage mw_n2_UETNLABindingReleaseRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UETNLABindingRelease, + criticality := ignore, + value_ := { + UETNLABindingReleaseRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UETNLABindingReleaseRequest + + + } + } + } // End of group UE_TNLA_Binding_Messages + + //9.2.13 + group UE_Radio_Capability_Management_Messages { + //9.2.13.1 + group UE_RADIO_CAPABILITY_INFO_INDICATION{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.1 UE RADIO CAPABILITY INFO INDICATION + */ + template (value) InitiatingMessage m_n2_UERadioCapabilityInfoIndication( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) UERadioCapability p_uERadioCapability + ) := { + procedureCode := id_UERadioCapabilityInfoIndication, + criticality := ignore, + value_ := { + UERadioCapabilityInfoIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + } + } + } + } + } // End of template m_n2_UERadioCapabilityInfoIndication + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.1 UE RADIO CAPABILITY INFO INDICATION + */ + template (value) InitiatingMessage m_n2_UERadioCapabilityInfoIndication_options( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) UERadioCapability p_uERadioCapability, + in template (value) UERadioCapabilityForPaging p_uERadioCapabilityForPaging, + in template (value) UERadioCapability p_uERadioCapability_EUTRA_Format + ) := { + procedureCode := id_UERadioCapabilityInfoIndication, + criticality := ignore, + value_ := { + UERadioCapabilityInfoIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_UERadioCapabilityForPaging, + criticality := reject, + value_ := { UERadioCapabilityForPaging := p_uERadioCapabilityForPaging } + }, + { + id := id_UERadioCapability_EUTRA_Format, + criticality := reject, + value_ := { UERadioCapability := p_uERadioCapability_EUTRA_Format } + } + } + } + } + } // End of template m_n2_UERadioCapabilityInfoIndication_options + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.1 UE RADIO CAPABILITY INFO INDICATION + */ + template (present) InitiatingMessage mw_n2_UERadioCapabilityInfoIndication( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) UERadioCapability p_uERadioCapability := ? + ) := { + procedureCode := id_UERadioCapabilityInfoIndication, + criticality := ignore, + value_ := { + UERadioCapabilityInfoIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityInfoIndication + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.1 UE RADIO CAPABILITY INFO INDICATION + */ + template (present) InitiatingMessage mw_n2_UERadioCapabilityInfoIndication_options( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) UERadioCapability p_uERadioCapability := ?, + template (present) UERadioCapabilityForPaging p_uERadioCapabilityForPaging := ?, + template (present) UERadioCapability p_uERadioCapability_EUTRA_Format := ? + ) := { + procedureCode := id_UERadioCapabilityInfoIndication, + criticality := ignore, + value_ := { + UERadioCapabilityInfoIndication := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_UERadioCapabilityForPaging, + criticality := reject, + value_ := { UERadioCapabilityForPaging := p_uERadioCapabilityForPaging } + }, + { + id := id_UERadioCapability_EUTRA_Format, + criticality := reject, + value_ := { UERadioCapability := p_uERadioCapability_EUTRA_Format } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityInfoIndication_options + + } + } + //9.2.13.2 + group UE_RADIO_CAPABILITY_CHECK_REQUEST{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.2 UE RADIO CAPABILITY CHECK REQUEST + */ + template (value) InitiatingMessage m_n2_UERadioCapabilityCheckRequest( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template m_n2_UERadioCapabilityCheckRequest + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.2 UE RADIO CAPABILITY CHECK REQUEST + */ + template (value) InitiatingMessage m_n2_UERadioCapabilityCheckRequest_options( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) UERadioCapability p_uERadioCapability, + in template (value) UERadioCapabilityID p_uERadioCapabilityID + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + } + } + } + } + } // End of template m_n2_UERadioCapabilityCheckRequest_options + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.2 UE RADIO CAPABILITY CHECK REQUEST + */ + template (present) InitiatingMessage mw_n2_UERadioCapabilityCheckRequest( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityCheckRequest + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.2 UE RADIO CAPABILITY CHECK REQUEST + */ + template (present) InitiatingMessage mw_n2_UERadioCapabilityCheckRequest_options( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) UERadioCapability p_uERadioCapability := ?, + template (present) UERadioCapabilityID p_uERadioCapabilityID := ? + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckRequest := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityCheckRequest_options + + } + } + //9.2.13.3 + group UE_RADIO_CAPABILITY_CHECK_RESPONSE{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UERadioCapabilityCheckResponse( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) IMSVoiceSupportIndicator p_iMSVoiceSupportIndicator + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_IMSVoiceSupportIndicator, + criticality := reject, + value_ := { IMSVoiceSupportIndicator := p_iMSVoiceSupportIndicator } + } + } + } + } + } // End of template m_n2_UERadioCapabilityCheckResponse + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UERadioCapabilityCheckResponse_options( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) IMSVoiceSupportIndicator p_iMSVoiceSupportIndicator, + in template (value) CriticalityDiagnostics p_criticalityDiagnostics + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_IMSVoiceSupportIndicator, + criticality := reject, + value_ := { IMSVoiceSupportIndicator := p_iMSVoiceSupportIndicator } + }, + { + id := id_CriticalityDiagnostics, + criticality := ignore, + value_ := { CriticalityDiagnostics := p_criticalityDiagnostics } + } + } + } + } + } // End of template m_n2_UERadioCapabilityCheckResponse_options + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UERadioCapabilityCheckResponse( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) IMSVoiceSupportIndicator p_iMSVoiceSupportIndicator := ? + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_IMSVoiceSupportIndicator, + criticality := reject, + value_ := { IMSVoiceSupportIndicator := p_iMSVoiceSupportIndicator } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityCheckResponse + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UERadioCapabilityCheckResponse_options( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) IMSVoiceSupportIndicator p_iMSVoiceSupportIndicator := ?, + template (present) CriticalityDiagnostics p_criticalityDiagnostics := ? + ) := { + procedureCode := id_UERadioCapabilityCheck, + criticality := ignore, + value_ := { + UERadioCapabilityCheckResponse := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := reject, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := reject, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_IMSVoiceSupportIndicator, + criticality := reject, + value_ := { IMSVoiceSupportIndicator := p_iMSVoiceSupportIndicator } + }, + { + id := id_CriticalityDiagnostics, + criticality := ignore, + value_ := { CriticalityDiagnostics := p_criticalityDiagnostics } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityCheckResponse_options + + } + } + //9.2.13.4 + group UE_RADIO_CAPABILITY_ID_MAPPING_REQUEST{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (value) InitiatingMessage m_n2_UERadioCapabilityIDMappingRequest( + in template (value) UERadioCapabilityID p_uERadioCapabilityID + ) := { + procedureCode := id_UERadioCapabilityIDMapping, + criticality := ignore, + value_ := { + UERadioCapabilityIDMappingRequest := { + protocolIEs := { + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + } + } + } + } + } // End of template m_n2_UERadioCapabilityIDMappingRequest + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (present) InitiatingMessage mw_n2_UERadioCapabilityIDMappingRequest( + template (present) UERadioCapabilityID p_uERadioCapabilityID := ? + ) := { + procedureCode := id_UERadioCapabilityIDMapping, + criticality := ignore, + value_ := { + UERadioCapabilityIDMappingRequest := { + protocolIEs := { + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityIDMappingRequest + + } + } + //9.2.13.5 + group UE_RADIO_CAPABILITY_ID_MAPPING_RESPONSE{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UERadioCapabilityIDMappingResponse( + in template (value) UERadioCapabilityID p_uERadioCapabilityID, + in template (value) UERadioCapability p_uERadioCapability + ) := { + procedureCode := id_UERadioCapabilityIDMapping, + criticality := ignore, + value_ := { + UERadioCapabilityIDMappingResponse := { + protocolIEs := { + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + } + } + } + } + } // End of template m_n2_UERadioCapabilityIDMappingResponse + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (value) SuccessfulOutcome m_n2_UERadioCapabilityIDMappingResponse_options( + in template (value) UERadioCapabilityID p_uERadioCapabilityID, + in template (value) UERadioCapability p_uERadioCapability, + in template (value) CriticalityDiagnostics p_criticalityDiagnostics + ) := { + procedureCode := id_UERadioCapabilityIDMapping, + criticality := ignore, + value_ := { + UERadioCapabilityIDMappingResponse := { + protocolIEs := { + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_CriticalityDiagnostics, + criticality := ignore, + value_ := { CriticalityDiagnostics := p_criticalityDiagnostics } + } + } + } + } + } // End of template m_n2_UERadioCapabilityIDMappingResponse_options + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UERadioCapabilityIDMappingResponse( + template (present) UERadioCapabilityID p_uERadioCapabilityID := ?, + template (present) UERadioCapability p_uERadioCapability := ? + ) := { + procedureCode := id_UERadioCapabilityIDMapping, + criticality := ignore, + value_ := { + UERadioCapabilityIDMappingResponse := { + protocolIEs := { + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityIDMappingResponse + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.13.3 UE RADIO CAPABILITY CHECK RESPONSE + */ + template (present) SuccessfulOutcome mw_n2_UERadioCapabilityIDMappingResponse_options( + template (present) UERadioCapabilityID p_uERadioCapabilityID := ?, + template (present) UERadioCapability p_uERadioCapability := ?, + template (present) CriticalityDiagnostics p_criticalityDiagnostics := ? + ) := { + procedureCode := id_UERadioCapabilityIDMapping, + criticality := ignore, + value_ := { + UERadioCapabilityIDMappingResponse := { + protocolIEs := { + { + id := id_UERadioCapabilityID, + criticality := reject, + value_ := { UERadioCapabilityID := p_uERadioCapabilityID } + }, + { + id := id_UERadioCapability, + criticality := ignore, + value_ := { UERadioCapability := p_uERadioCapability } + }, + { + id := id_CriticalityDiagnostics, + criticality := ignore, + value_ := { CriticalityDiagnostics := p_criticalityDiagnostics } + } + } + } + } + } // End of template mw_n2_UERadioCapabilityIDMappingResponse_options + + } + } + } // End of group UE_Radio_Capability_Management_Messages + + //9.2.14 + group Data_Usage_Reporting_Messages { + //9.2.14.1 + group SECONDARY_RAT_DATA_USAGE_REPORT{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.14.1 SECONDARY RAT DATA USAGE REPORT + */ + template (value) InitiatingMessage m_n2_SecondaryRATDataUsageReport( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSecondaryRATUsageList p_pDUSessionResourceSecondaryRATUsageList + ) := { + procedureCode := id_SecondaryRATDataUsageReport, + criticality := ignore, + value_ := { + SecondaryRATDataUsageReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSecondaryRATUsageList, + criticality := ignore, + value_ := { PDUSessionResourceSecondaryRATUsageList := p_pDUSessionResourceSecondaryRATUsageList } + } + } + } + } + } // End of template m_n2_SecondaryRATDataUsageReport + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.14.1 SECONDARY RAT DATA USAGE REPORT + */ + template (value) InitiatingMessage m_n2_SecondaryRATDataUsageReport_options( + in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + in template (value) PDUSessionResourceSecondaryRATUsageList p_pDUSessionResourceSecondaryRATUsageList, + in template (value) HandoverFlag p_handoverFlag, + in template (value) UserLocationInformation p_userLocationInformation + ) := { + procedureCode := id_SecondaryRATDataUsageReport, + criticality := ignore, + value_ := { + SecondaryRATDataUsageReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSecondaryRATUsageList, + criticality := ignore, + value_ := { PDUSessionResourceSecondaryRATUsageList := p_pDUSessionResourceSecondaryRATUsageList } + }, + { + id := id_HandoverFlag, + criticality := ignore, + value_ := { HandoverFlag := p_handoverFlag } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template m_n2_SecondaryRATDataUsageReport + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.14.1 SECONDARY RAT DATA USAGE REPORT + */ + template (present) InitiatingMessage mw_n2_SecondaryRATDataUsageReport( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) PDUSessionResourceSecondaryRATUsageList p_pDUSessionResourceSecondaryRATUsageList := ? + ) := { + procedureCode := id_SecondaryRATDataUsageReport, + criticality := ignore, + value_ := { + SecondaryRATDataUsageReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSecondaryRATUsageList, + criticality := ignore, + value_ := { PDUSessionResourceSecondaryRATUsageList := p_pDUSessionResourceSecondaryRATUsageList } + } + } + } + } + } // End of template mw_n2_SecondaryRATDataUsageReport + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.14.1 SECONDARY RAT DATA USAGE REPORT + */ + template (present) InitiatingMessage mw_n2_SecondaryRATDataUsageReport_options( + template (present) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID, + template (present) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID, + template (present) PDUSessionResourceSecondaryRATUsageList p_pDUSessionResourceSecondaryRATUsageList := ?, + template (present) HandoverFlag p_handoverFlag := ?, + template (present) UserLocationInformation p_userLocationInformation := ? + ) := { + procedureCode := id_SecondaryRATDataUsageReport, + criticality := ignore, + value_ := { + SecondaryRATDataUsageReport := { + protocolIEs := { + { + id := id_AMF_UE_NGAP_ID, + criticality := ignore, + value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID } + }, + { + id := id_RAN_UE_NGAP_ID, + criticality := ignore, + value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID } + }, + { + id := id_PDUSessionResourceSecondaryRATUsageList, + criticality := ignore, + value_ := { PDUSessionResourceSecondaryRATUsageList := p_pDUSessionResourceSecondaryRATUsageList } + }, + { + id := id_HandoverFlag, + criticality := ignore, + value_ := { HandoverFlag := p_handoverFlag } + }, + { + id := id_UserLocationInformation, + criticality := ignore, + value_ := { UserLocationInformation := p_userLocationInformation } + } + } + } + } + } // End of template mw_n2_SecondaryRATDataUsageReport + + } + } + } // End of group Data_Usage_Reporting_Messages + + //9.2.15 + group RIM_Information_Transfer_Messages { + //9.2.15.1 + group UPLINK_RIM_INFORMATION_TRANSFER{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.15.1 UPLINK RIM INFORMATION TRANSFER + */ + template (value) InitiatingMessage m_n2_UplinkRIMInformationTransfer( + in template (value) RIMInformationTransfer p_rIMInformationTransfer + ) := { + procedureCode := id_UplinkRIMInformationTransfer, + criticality := ignore, + value_ := { + UplinkRIMInformationTransfer := { + protocolIEs := { + { + id := id_RIMInformationTransfer, + criticality := ignore, + value_ := { RIMInformationTransfer := p_rIMInformationTransfer } + } + } + } + } + } // End of template m_n2_UplinkRIMInformationTransfer + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.15.1 UPLINK RIM INFORMATION TRANSFER + */ + template (present) InitiatingMessage mw_n2_UplinkRIMInformationTransfer( + template (present) RIMInformationTransfer p_rIMInformationTransfer := ? + ) := { + procedureCode := id_UplinkRIMInformationTransfer, + criticality := ignore, + value_ := { + UplinkRIMInformationTransfer := { + protocolIEs := { + { + id := id_RIMInformationTransfer, + criticality := ignore, + value_ := { RIMInformationTransfer := p_rIMInformationTransfer } + } + } + } + } + } // End of template mw_n2_UplinkRIMInformationTransfer + + } + } + //9.2.15.2 + group DOWNLINK_RIM_INFORMATION_TRANSFER{ + group Send { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.15.1 DownLINK RIM INFORMATION TRANSFER + */ + template (value) InitiatingMessage m_n2_DownlinkRIMInformationTransfer( + in template (value) RIMInformationTransfer p_rIMInformationTransfer + ) := { + procedureCode := id_DownlinkRIMInformationTransfer, + criticality := ignore, + value_ := { + DownlinkRIMInformationTransfer := { + protocolIEs := { + { + id := id_RIMInformationTransfer, + criticality := ignore, + value_ := { RIMInformationTransfer := p_rIMInformationTransfer } + } + } + } + } + } // End of template m_n2_DownlinkRIMInformationTransfer + + } + group Receive { + + /** + * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.15.1 DownLINK RIM INFORMATION TRANSFER + */ + template (present) InitiatingMessage mw_n2_DownlinkRIMInformationTransfer( + template (present) RIMInformationTransfer p_rIMInformationTransfer := ? + ) := { + procedureCode := id_DownlinkRIMInformationTransfer, + criticality := ignore, + value_ := { + DownlinkRIMInformationTransfer := { + protocolIEs := { + { + id := id_RIMInformationTransfer, + criticality := ignore, + value_ := { RIMInformationTransfer := p_rIMInformationTransfer } + } + } + } + } + } // End of template mw_n2_DownlinkRIMInformationTransfer + + } + } + } // End of group RIM_Information_Transfer_Messages + + } // End of group Message_Functional_Definition_and_Content + + group Information_elements { + + group Send { + + template (omit) AdditionalDLUPTNLInformationForHOItem m_additionalDLUPTNLInformationForHOItem( + in template (value) UPTransportLayerInformation p_additionalDL_NGU_UP_TNLInformation, + in template (value) QosFlowListWithDataForwarding p_additionalQosFlowSetupResponseList, + in template (omit) UPTransportLayerInformation p_additionalDLForwardingUPTNLInformation := omit, + in template (omit) AdditionalDLUPTNLInformationForHOItem.iE_Extensions p_iE_Extensions := omit + ) := { + additionalDL_NGU_UP_TNLInformation := p_additionalDL_NGU_UP_TNLInformation, + additionalQosFlowSetupResponseList := p_additionalQosFlowSetupResponseList, + additionalDLForwardingUPTNLInformation := p_additionalDLForwardingUPTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_additionalDLUPTNLInformationForHOItem + + template (value) AdditionalDLUPTNLInformationForHOItem.iE_Extensions m_additionalDLUPTNLInformationForHOItem_uPTransportLayerInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_AdditionalRedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_additionalDLUPTNLInformationForHOItem_iE_Extensions + + template (value) AdditionalQosFlowInformation m_additionalQosFlowInformation(in AdditionalQosFlowInformation p_value := more_likely) := p_value; + + template (omit) AllocationAndRetentionPriority m_allocationAndRetentionPriority( + in template (value) PriorityLevelARP p_priorityLevelARP, + in template (value) Pre_emptionCapability p_pre_emptionCapability, + in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability, + in template (omit) AllocationAndRetentionPriority.iE_Extensions p_iE_Extensions := omit + ) := { + priorityLevelARP := p_priorityLevelARP, + pre_emptionCapability := p_pre_emptionCapability, + pre_emptionVulnerability := p_pre_emptionVulnerability, + iE_Extensions := p_iE_Extensions + } // End of template m_allocationAndRetentionPriority + + template (omit) AllowedNSSAI_Item m_allowedNSSAI_Item( + in template (value) S_NSSAI p_s_NSSAI, + in template (omit) AllowedNSSAI_Item.iE_Extensions p_iE_Extensions := omit + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template m_allowedNSSAI_Item + + template (omit) Allowed_PNI_NPN_Item m_allowed_PNI_NPN_Item( + in template (value) PLMNIdentity p_pLMNIdentity, + in template (value) Allowed_PNI_NPN_Item.pNI_NPN_restricted p_pNI_NPN_restricted := restricted, + in template (value) Allowed_CAG_List_per_PLMN p_allowed_CAG_List_per_PLMN, + in template (omit) Allowed_PNI_NPN_Item.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + pNI_NPN_restricted := p_pNI_NPN_restricted, + allowed_CAG_List_per_PLMN := p_allowed_CAG_List_per_PLMN, + iE_Extensions := p_iE_Extensions + } // End of template m_allowed_PNI_NPN_Item + + template (value) AlternativeQoSParaSetIndex m_alternativeQoSParaSetIndex(in template (value) integer p_value := PX_ALTERNATIVE_QOS_PARA_SET_INDEX) := p_value; + + template (value) AlternativeQoSParaSetNotifyIndex m_alternativeQoSParaSetNotifyIndex(in template (value) integer p_value := PX_ALTERNATIVE_QOS_PARA_SET_NOTIFY_INDEX) := p_value; + + template (omit) AlternativeQoSParaSetItem m_alternativeQoSParaSetItem( + in template (value) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex, + in template (omit) BitRate p_guaranteedFlowBitRateDL := omit, + in template (omit) BitRate p_guaranteedFlowBitRateUL := omit, + in template (omit) PacketDelayBudget p_packetDelayBudget := omit, + in template (omit) PacketErrorRate p_packetErrorRate := omit, + in template (omit) AlternativeQoSParaSetItem.iE_Extensions p_iE_Extensions := omit + ) := { + alternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex, + guaranteedFlowBitRateDL := p_guaranteedFlowBitRateDL, + guaranteedFlowBitRateUL := p_guaranteedFlowBitRateUL, + packetDelayBudget := p_packetDelayBudget, + packetErrorRate := p_packetErrorRate, + iE_Extensions := p_iE_Extensions + } // End of template m_alternativeQoSParaSetItem + + template (value) AMFName m_aMFName(in AMFName p_value) := p_value; + + template (value) AMFNameVisibleString m_aMFNameVisibleString(in AMFNameVisibleString p_value) := p_value; + + template (value) AMFNameUTF8String m_aMFNameUTF8String(in AMFNameUTF8String p_value) := p_value; + + template (value) AMFPagingTarget m_aMFPagingTarget_globalRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID + ) := { + globalRANNodeID := p_globalRANNodeID + } // End of template m_aMFPagingTarget_globalRANNodeID + + template (value) AMFPagingTarget m_aMFPagingTarget_tAI( + in template (value) TAI p_tAI + ) := { + tAI := p_tAI + } // End of template m_aMFPagingTarget_tAI + + template (value) AMFPagingTarget m_aMFPagingTarget_ext( + in template (value) AMFPagingTarget.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_aMFPagingTarget_ext + + template (omit) AMF_TNLAssociationSetupItem m_aMF_TNLAssociationSetupItem( + in template (value) CPTransportLayerInformation p_aMF_TNLAssociationAddress, + in template (omit) AMF_TNLAssociationSetupItem.iE_Extensions p_iE_Extensions := omit + ) := { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + iE_Extensions := p_iE_Extensions + } // End of template m_aMF_TNLAssociationSetupItem + + template (omit) AMF_TNLAssociationToAddItem m_aMF_TNLAssociationToAddItem( + in template (value) CPTransportLayerInformation p_aMF_TNLAssociationAddress, + in template (value) TNLAddressWeightFactor p_tNLAddressWeightFactor, + in template (omit) TNLAssociationUsage p_tNLAssociationUsage := omit, + in template (omit) AMF_TNLAssociationToAddItem.iE_Extensions p_iE_Extensions := omit + ):= { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + tNLAssociationUsage := p_tNLAssociationUsage, + tNLAddressWeightFactor := p_tNLAddressWeightFactor, + iE_Extensions := p_iE_Extensions + } // End of template m_aMF_TNLAssociationToAddItem + + template (omit) AMF_TNLAssociationToRemoveItem m_aMF_TNLAssociationToRemoveItem( + in template (value) CPTransportLayerInformation p_aMF_TNLAssociationAddress, + in template (omit) AMF_TNLAssociationToRemoveItem.iE_Extensions p_iE_Extensions := omit + ) := { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + iE_Extensions := p_iE_Extensions + } // End of template m_aMF_TNLAssociationToRemoveItem + + template (omit) AMF_TNLAssociationToUpdateItem m_aMF_TNLAssociationToUpdateItem( + in template (value) CPTransportLayerInformation p_aMF_TNLAssociationAddress, + in template (omit) TNLAssociationUsage p_tNLAssociationUsage := omit, + in template (omit) TNLAddressWeightFactor p_tNLAddressWeightFactor := omit, + in template (omit) AMF_TNLAssociationToUpdateItem.iE_Extensions p_iE_Extensions := omit + ) := { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + tNLAssociationUsage := p_tNLAssociationUsage, + tNLAddressWeightFactor := p_tNLAddressWeightFactor, + iE_Extensions := p_iE_Extensions + } // End of template m_aMF_TNLAssociationToUpdateItem + + template (omit) AreaOfInterest m_areaOfInterest( + in template (omit) AreaOfInterestTAIList p_areaOfInterestTAIList := omit, + in template (omit) AreaOfInterestCellList p_areaOfInterestCellList := omit, + in template (omit) AreaOfInterestRANNodeList p_areaOfInterestRANNodeList := omit, + in template (omit) AreaOfInterest.iE_Extensions p_iE_Extensions := omit + ) := { + areaOfInterestTAIList := p_areaOfInterestTAIList, + areaOfInterestCellList := p_areaOfInterestCellList, + areaOfInterestRANNodeList := p_areaOfInterestRANNodeList, + iE_Extensions := p_iE_Extensions + } // End of template m_areaOfInterest + + template (omit) AreaOfInterestCellItem m_areaOfInterestCellItem( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (omit) AreaOfInterestCellItem.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CGI := p_nGRAN_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_areaOfInterestCellItem + + template (omit) AreaOfInterestItem m_areaOfInterestItem( + in template (value) AreaOfInterest p_areaOfInterest, + in template (value) LocationReportingReferenceID p_locationReportingReferenceID, + in template (omit) AreaOfInterestItem.iE_Extensions p_iE_Extensions := omit + ) := { + areaOfInterest := p_areaOfInterest, + locationReportingReferenceID := p_locationReportingReferenceID, + iE_Extensions := p_iE_Extensions + } // End of template m_areaOfInterestItem + + template (omit) AreaOfInterestRANNodeItem m_areaOfInterestRANNodeItem( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (omit) AreaOfInterestRANNodeItem.iE_Extensions p_iE_Extensions := omit + ):= { + globalRANNodeID := p_globalRANNodeID, + iE_Extensions := p_iE_Extensions + } // End of template m_areaOfInterestRANNodeItem + + template (omit) AreaOfInterestTAIItem m_areaOfInterestTAIItem( + in template (value) TAI p_tAI, + in template (omit) AreaOfInterestTAIItem.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template m_areaOfInterestTAIItem + + template (omit) AssistanceDataForPaging m_assistanceDataForPaging( + in template (omit) AssistanceDataForRecommendedCells p_assistanceDataForRecommendedCells := omit, + in template (omit) PagingAttemptInformation p_pagingAttemptInformation := omit, + in template (omit) AssistanceDataForPaging.iE_Extensions p_iE_Extensions := omit + ) := { + assistanceDataForRecommendedCells := p_assistanceDataForRecommendedCells, + pagingAttemptInformation := p_pagingAttemptInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_assistanceDataForPaging + + template (value) AssistanceDataForPaging.iE_Extensions m_assistanceDataForPaging_NPN_PagingAssistanceInformation( + in template (value) NPN_PagingAssistanceInformation p_nPN_PagingAssistanceInformation + ) := { + { + id := id_NPN_PagingAssistanceInformation, + criticality := ignore, + extensionValue := { NPN_PagingAssistanceInformation := p_nPN_PagingAssistanceInformation } + } + } // End of template m_assistanceDataForPaging_NPN_PagingAssistanceInformation + + template (value) AssistanceDataForPaging.iE_Extensions m_assistanceDataForPaging_pagingAssisDataforCEcapabUE( + in template (value) PagingAssisDataforCEcapabUE p_pagingAssisDataforCEcapabUE + ) := { + { + id := id_PagingAssisDataforCEcapabUE, + criticality := ignore, + extensionValue := { PagingAssisDataforCEcapabUE := p_pagingAssisDataforCEcapabUE } + } + } // End of template m_assistanceDataForPaging_pagingAssisDataforCEcapabUE + + template (value) AssistanceDataForPaging.iE_Extensions m_assistanceDataForPaging_full( + in template (value) NPN_PagingAssistanceInformation p_nPN_PagingAssistanceInformation, + in template (value) PagingAssisDataforCEcapabUE p_pagingAssisDataforCEcapabUE + ) := { + { + id := id_NPN_PagingAssistanceInformation, + criticality := ignore, + extensionValue := { NPN_PagingAssistanceInformation := p_nPN_PagingAssistanceInformation } + }, + { + id := id_PagingAssisDataforCEcapabUE, + criticality := ignore, + extensionValue := { PagingAssisDataforCEcapabUE := p_pagingAssisDataforCEcapabUE } + } + } // End of template m_assistanceDataForPaging_full + + template (omit) AssistanceDataForRecommendedCells m_assistanceDataForRecommendedCells( + in template (value) RecommendedCellsForPaging p_recommendedCellsForPaging, + in template (omit) AssistanceDataForRecommendedCells.iE_Extensions p_iE_Extensions := omit + ) := { + recommendedCellsForPaging := p_recommendedCellsForPaging, + iE_Extensions := p_iE_Extensions + } // End of template m_assistanceDataForRecommendedCells + + template (omit) AssociatedMBSQosFlowSetupRequestItem m_associatedMBSQosFlowSetupRequestItem( + in template (value) QosFlowIdentifier p_mBS_QosFlowIdentifier, + in template (value) QosFlowIdentifier p_associatedUnicastQosFlowIdentifier, + in template (omit) AssociatedMBSQosFlowSetupRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_QosFlowIdentifier := p_mBS_QosFlowIdentifier, + associatedUnicastQosFlowIdentifier := p_associatedUnicastQosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template m_associatedMBSQosFlowSetupRequestItem + + template (omit) AssociatedMBSQosFlowSetuporModifyRequestItem m_associatedMBSQosFlowSetuporModifyRequestItem( + in template (value) QosFlowIdentifier p_mBS_QosFlowIdentifier, + in template (value) QosFlowIdentifier p_associatedUnicastQosFlowIdentifier, + in template (omit) AssociatedMBSQosFlowSetuporModifyRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_QosFlowIdentifier := p_mBS_QosFlowIdentifier, + associatedUnicastQosFlowIdentifier := p_associatedUnicastQosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template m_associatedMBSQosFlowSetuporModifyRequestItem + + template (omit) AssociatedQosFlowItem m_associatedQosFlowItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) AssociatedQosFlowItem.qosFlowMappingIndication p_qosFlowMappingIndication := omit, + in template (omit) AssociatedQosFlowItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + qosFlowMappingIndication := p_qosFlowMappingIndication, + iE_Extensions := p_iE_Extensions + } // End of template m_associatedQosFlowItem + + template (value) AssociatedQosFlowItem.iE_Extensions m_associatedQosFlowItem_alternativeQoSParaSetIndex( + in template (value) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template m_associatedQosFlowItem_alternativeQoSParaSetIndex + + template (value) AuthenticatedIndication m_authenticatedIndication(in AuthenticatedIndication p_value := true_) := p_value; + + template (value) AreaScopeOfMDT_NR m_areaScopeOfMDT_NR_cellBased( + in template (value) CellBasedMDT_NR p_cellBased + ) := { + cellBased := p_cellBased + } // End of template m_areaScopeOfMDT_cellBased + + template (value) AreaScopeOfMDT_NR m_areaScopeOfMDT_tABased( + in template (value) TABasedMDT p_tABased + ) := { + tABased := p_tABased + } // End of template m_areaScopeOfMDT_tABased + + template (value) AreaScopeOfMDT_NR m_areaScopeOfMDT_pLMNWide := { + pLMNWide := NULL + } // End of template m_areaScopeOfMDT_pLMNWide + + template (value) AreaScopeOfMDT_NR m_areaScopeOfMDT_tAIBased( + in template (value) TAIBasedMDT p_tAIBased + ) := { + tAIBased := p_tAIBased + } // End of template m_areaScopeOfMDT_tAIBased + + template (value) AreaScopeOfMDT_NR m_areaScopeOfMDT_ext( + in template (value) AreaScopeOfMDT_NR.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_areaScopeOfMDT_ext + + template (omit) AreaScopeOfNeighCellsItem m_areaScopeOfNeighCellsItem( + in template (value) NRFrequencyInfo p_nrFrequencyInfo, + in template (omit) PCIListForMDT p_pciListForMDT := omit, + in template (omit) AreaScopeOfNeighCellsItem.iE_Extensions p_iE_Extensions := omit + ) := { + nrFrequencyInfo := p_nrFrequencyInfo, + pciListForMDT := p_pciListForMDT, + iE_Extensions := p_iE_Extensions + } // End of template m_areaScopeOfNeighCellsItem + + template (value) AreaScopeOfQMC m_areaScopeOfQMC_cellBased( + in template (value) CellBasedQMC p_cellBased + ) := { + cellBased := p_cellBased + } // End of template m_areaScopeOfQMC_cellBased + + template (value) AreaScopeOfQMC m_areaScopeOfQMC_tABased( + in template (value) TABasedQMC p_tABased + ) := { + tABased := p_tABased + } // End of template m_areaScopeOfQMC_tABased + + template (value) AreaScopeOfQMC m_areaScopeOfQMC_tAIBased( + in template (value) TAIBasedQMC p_tAIBased + ) := { + tAIBased := p_tAIBased + } // End of template m_areaScopeOfQMC_tAIBased + + template (value) AreaScopeOfQMC m_areaScopeOfQMC_pLMNAreaBased( + in template (value) PLMNAreaBasedQMC p_pLMNAreaBased + ) := { + pLMNAreaBased := p_pLMNAreaBased + } // End of template m_areaScopeOfQMC_pLMNAreaBased + + template (value) AreaScopeOfQMC m_areaScopeOfQMC_ext( + in template (value) AreaScopeOfQMC.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_areaScopeOfQMC_ext + + template (value) AreaScopeOfMDT_EUTRA m_areaScopeOfMDT_EUTRA_cellBased( + in template (value) CellBasedMDT_EUTRA p_cellBased + ) := { + cellBased := p_cellBased + } // End of template m_areaScopeOfMDT_EUTRA_cellBased + + template (value) AreaScopeOfMDT_EUTRA m_areaScopeOfMDT_EUTRA_tABased( + in template (value) TABasedMDT p_tABased + ) := { + tABased := p_tABased + } // End of template m_areaScopeOfMDT_EUTRA_tABased + + template (value) AreaScopeOfMDT_EUTRA m_areaScopeOfMDT_EUTRA_pLMNWide := { + pLMNWide := NULL + } // End of template m_areaScopeOfMDT_EUTRA_pLMNWide + + template (value) AreaScopeOfMDT_EUTRA m_areaScopeOfMDT_EUTRA_tAIBased( + in template (value) TAIBasedMDT p_tAIBased + ) := { + tAIBased := p_tAIBased + } // End of template m_areaScopeOfMDT_EUTRA_tAIBased + + template (value) AreaScopeOfMDT_EUTRA m_areaScopeOfMDT_EUTRA_ext( + in template (value) AreaScopeOfMDT_EUTRA.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_areaScopeOfMDT_EUTRA_ext + + template (omit) AvailableRANVisibleQoEMetrics m_availableRANVisibleQoEMetrics( + in template (omit) AvailableRANVisibleQoEMetrics.applicationLayerBufferLevelList p_applicationLayerBufferLevelList := omit, + in template (omit) AvailableRANVisibleQoEMetrics.playoutDelayForMediaStartup p_playoutDelayForMediaStartup := omit, + in template (omit) AvailableRANVisibleQoEMetrics.iE_Extensions p_iE_Extensions := omit + ) := { + applicationLayerBufferLevelList := p_applicationLayerBufferLevelList, + playoutDelayForMediaStartup := p_playoutDelayForMediaStartup, + iE_Extensions := p_iE_Extensions + } // End of template m_availableRANVisibleQoEMetrics + + template (omit) BeamMeasurementsReportConfiguration m_beamMeasurementsReportConfiguration( + in template (omit) BeamMeasurementsReportQuantity p_beamMeasurementsReportQuantity := omit, + in template (omit) MaxNrofRS_IndexesToReport p_maxNrofRS_IndexesToReport := omit, + in template (omit) BeamMeasurementsReportConfiguration.iE_Extensions p_iE_Extensions := omit + ) := { + beamMeasurementsReportQuantity := p_beamMeasurementsReportQuantity, + maxNrofRS_IndexesToReport := p_maxNrofRS_IndexesToReport, + iE_Extensions := p_iE_Extensions + } // End of template m_beamMeasurementsReportConfiguration + + template (omit) BeamMeasurementsReportQuantity m_beamMeasurementsReportQuantity( + in template (omit) BeamMeasurementsReportQuantity.rSRP p_rSRP := true_, + in template (omit) BeamMeasurementsReportQuantity.rSRQ p_rSRQ := true_, + in template (omit) BeamMeasurementsReportQuantity.sINR p_sINR := true_, + in template (omit) BeamMeasurementsReportQuantity.iE_Extensions p_iE_Extensions := omit + ) := { + rSRP := p_rSRP, + rSRQ := p_rSRQ, + sINR := p_sINR, + iE_Extensions := p_iE_Extensions + } // End of template m_beamMeasurementsReportQuantity + + template (value) BitRate m_bitRate(in template (value) BitRate p_value) := p_value; + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_cellIDCancelledEUTRA( + in template (value) CellIDCancelledEUTRA p_cellIDCancelledEUTRA + ) := { + cellIDCancelledEUTRA := p_cellIDCancelledEUTRA + } // End of template m_broadcastCancelledAreaList_cellIDCancelledEUTRA + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_tAICancelledEUTRA( + in template (value) TAICancelledEUTRA p_tAICancelledEUTRA + ) := { + tAICancelledEUTRA := p_tAICancelledEUTRA + } // End of template m_broadcastCancelledAreaList_tAICancelledEUTRA + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_emergencyAreaIDCancelledEUTRA( + in template (value) EmergencyAreaIDCancelledEUTRA p_emergencyAreaIDCancelledEUTRA + ) := { + emergencyAreaIDCancelledEUTRA := p_emergencyAreaIDCancelledEUTRA + } // End of template m_broadcastCancelledAreaList_emergencyAreaIDCancelledEUTRA + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_cellIDCancelledNR( + in template (value) CellIDCancelledNR p_cellIDCancelledNR + ) := { + cellIDCancelledNR := p_cellIDCancelledNR + } // End of template m_broadcastCancelledAreaList_cellIDCancelledNR + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_tAICancelledNR( + in template (value) TAICancelledNR p_tAICancelledNR + ) := { + tAICancelledNR := p_tAICancelledNR + } // End of template m_broadcastCancelledAreaList_tAICancelledNR + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_emergencyAreaIDCancelledNR( + in template (value) EmergencyAreaIDCancelledNR p_emergencyAreaIDCancelledNR + ) := { + emergencyAreaIDCancelledNR := p_emergencyAreaIDCancelledNR + } // End of template m_broadcastCancelledAreaList_ext + + template (value) BroadcastCancelledAreaList m_broadcastCancelledAreaList_ext( + in template (value) BroadcastCancelledAreaList.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_broadcastCancelledAreaList_ext + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_cellIDBroadcastEUTRA( + in template (value) CellIDBroadcastEUTRA p_cellIDBroadcastEUTRA + ) := { + cellIDBroadcastEUTRA := p_cellIDBroadcastEUTRA + } // End of template m_broadcastCompletedAreaList_cellIDCancelledEUTRA + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_tAIBroadcastEUTRA( + in template (value) TAIBroadcastEUTRA p_tAIBroadcastEUTRA + ) := { + tAIBroadcastEUTRA := p_tAIBroadcastEUTRA + } // End of template m_broadcastCompletedAreaList_tAIBroadcastEUTRA + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_emergencyAreaIDBroadcastEUTRA( + in template (value) EmergencyAreaIDBroadcastEUTRA p_emergencyAreaIDBroadcastEUTRA + ) := { + emergencyAreaIDBroadcastEUTRA := p_emergencyAreaIDBroadcastEUTRA + } // End of template m_broadcastCompletedAreaList_emergencyAreaIDBroadcastEUTRA + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_cellIDBroadcastNR( + in template (value) CellIDBroadcastNR p_cellIDBroadcastNR + ) := { + cellIDBroadcastNR := p_cellIDBroadcastNR + } // End of template m_broadcastCompletedAreaList_cellIDBroadcastNR + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_tAIBroadcastNR( + in template (value) TAIBroadcastNR p_tAIBroadcastNR + ) := { + tAIBroadcastNR := p_tAIBroadcastNR + } // End of template m_broadcastCompletedAreaList_tAIBroadcastNR + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_emergencyAreaIDBroadcastNR( + in template (value) EmergencyAreaIDBroadcastNR p_emergencyAreaIDBroadcastNR + ) := { + emergencyAreaIDBroadcastNR := p_emergencyAreaIDBroadcastNR + } // End of template m_broadcastCompletedAreaList_emergencyAreaIDBroadcastNR + + template (value) BroadcastCompletedAreaList m_broadcastCompletedAreaList_ext( + in template (value) BroadcastCompletedAreaList.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_broadcastCompletedAreaList_ext + + template (value) BroadcastPLMNList m_ie_broadcastPLMNList( + in template (value) BroadcastPLMNList p_list + ) := p_list; + + template (omit) BroadcastPLMNItem m_ie_broadcastPLMNItem( + in template (value) PLMNIdentity p_plmnId := PX_PLMN_IDENTITY, + in template (value) SliceSupportList p_ssl, + in template (omit) BroadcastPLMNItem.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_plmnId, + tAISliceSupportList := p_ssl, + iE_Extensions := p_iE_Extensions + } // End of template m_ie_broadcastPLMNItem + + template (omit) BluetoothMeasurementConfiguration m_bluetoothMeasurementConfiguration( + in template (value) BluetoothMeasConfig p_bluetoothMeasConfig, + in template (omit) BluetoothMeasConfigNameList p_bluetoothMeasConfigNameList := omit, + in template (omit) BluetoothMeasurementConfiguration.bt_rssi p_bt_rssi := omit, + in template (omit) BluetoothMeasurementConfiguration.iE_Extensions p_iE_Extensions := omit + ) := { + bluetoothMeasConfig := p_bluetoothMeasConfig, + bluetoothMeasConfigNameList := p_bluetoothMeasConfigNameList, + bt_rssi := p_bt_rssi, + iE_Extensions := p_iE_Extensions + } // End of template m_bluetoothMeasurementConfiguration + + template (omit) BluetoothMeasConfigNameItem m_bluetoothMeasConfigNameItem( + in template (value) BluetoothName p_bluetoothName, + in template (omit) BluetoothMeasConfigNameItem.iE_Extensions p_iE_Extensions := omit + ) := { + bluetoothName := p_bluetoothName, + iE_Extensions := p_iE_Extensions + } // End of template m_bluetoothMeasConfigNameItem + + template (value) BluetoothMeasConfig m_bluetoothMeasConfig(in BluetoothMeasConfig p_value := setup) := p_value; + + template (value) CancelAllWarningMessages m_cancelAllWarningMessages(in CancelAllWarningMessages p_value := true_) := p_value; + + template (omit) CancelledCellsInEAI_EUTRA_Item m_cancelledCellsInEAI_EUTRA_Item( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (value) NumberOfBroadcasts p_numberOfBroadcasts, + in template (omit) CancelledCellsInEAI_EUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template m_cancelledCellsInEAI_EUTRA_Item + + template (omit) CancelledCellsInEAI_NR_Item m_cancelledCellsInEAI_NR_Item( + in template (value) NR_CGI p_nR_CGI, + in template (value) NumberOfBroadcasts p_numberOfBroadcasts, + in template (omit) CancelledCellsInEAI_NR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template m_cancelledCellsInEAI_NR_Item + + template (omit) CancelledCellsInTAI_EUTRA_Item m_cancelledCellsInTAI_EUTRA_Item( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (value) NumberOfBroadcasts p_numberOfBroadcasts, + in template (omit) CancelledCellsInTAI_EUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template m_cancelledCellsInTAI_EUTRA_Item + + template (omit) CancelledCellsInTAI_NR_Item m_CancelledCellsInTAI_NR_Item( + in template (value) NR_CGI p_nR_CGI, + in template (value) NumberOfBroadcasts p_numberOfBroadcasts, + in template (omit) CancelledCellsInTAI_NR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template m_CancelledCellsInTAI_NR_Item + + template (omit) CandidateCellItem m_candidateCellItem( + in template (value) CandidateCell p_candidateCell, + in template (omit) CandidateCellItem.iE_Extensions p_iE_Extensions := omit + ) := { + candidateCell := p_candidateCell, + iE_Extensions := p_iE_Extensions + } // End of template m_candidateCellItem + + template (value) CandidateCell m_candidateCell_candidateCGI( + in template (value) CandidateCellID p_candidateCGI + ) := { + candidateCGI := p_candidateCGI + } // End of template m_candidateCell_candidateCGI + + template (value) CandidateCell m_candidateCell_candidatePCI( + in template (value) CandidatePCI p_candidatePCI + ) := { + candidatePCI := p_candidatePCI + } // End of template m_candidateCell_candidatePCI + + template (value) CandidateCell m_candidateCell_ext( + in template (value) CandidateCell.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_candidateCell_ext + + template (omit) CandidateCellID m_candidateCellID( + in template (value) NR_CGI p_candidateCellID, + in template (omit) CandidateCellID.iE_Extensions p_iE_Extensions := omit + ) := { + candidateCellID := p_candidateCellID, + iE_Extensions := p_iE_Extensions + } // End of template m_candidateCellID + + template (omit) CandidatePCI m_candidatePCI( + in template (value) CandidatePCI.candidatePCI p_candidatePCI, + in template (value) CandidatePCI.candidateNRARFCN p_candidateNRARFCN, + in template (omit) CandidatePCI.iE_Extensions p_iE_Extensions := omit + ) := { + candidatePCI := p_candidatePCI, + candidateNRARFCN := p_candidateNRARFCN, + iE_Extensions := p_iE_Extensions + } // End of template m_candidatePCI + + template (value) Cause m_cause_radioNetwork( + in template (value) CauseRadioNetwork p_radioNetwork + ) := { + radioNetwork := p_radioNetwork + } // End of template m_cause_radioNetwork + + template (value) Cause m_cause_transport( + in template (value) CauseTransport p_transport + ) := { + transport := p_transport + } // End of template m_cause_transport + + template (value) Cause m_cause_nas( + in template (value) CauseNas p_nas + ) := { + nas := p_nas + } // End of template m_cause_nas + + template (value) Cause m_cause_protocol( + in template (value) CauseProtocol p_protocol + ) := { + protocol := p_protocol + } // End of template m_cause_protocol + + template (value) Cause m_cause_misc( + in template (value) CauseMisc p_misc + ) := { + misc := p_misc + } // End of template m_cause_misc + + template (value) Cause m_cause_ext( + in template (value) Cause.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_cause_ext + + template (value) CauseMisc m_causeMisc(in CauseMisc p_value := unspecified) := p_value; + template (value) CauseNas m_causeNas(in CauseNas p_value := unspecified) := p_value; + template (value) CauseProtocol m_causeProtocol(in CauseProtocol p_value := unspecified) := p_value; + template (value) CauseRadioNetwork m_causeRadioNetwork(in CauseRadioNetwork p_value := unspecified) := p_value; + template (value) CauseTransport m_causeTransport(in CauseTransport p_value := unspecified) := p_value; + + template (omit) Cell_CAGInformation m_cell_CAGInformation( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (value) CellCAGList p_cellCAGList, + in template (omit) Cell_CAGInformation.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CGI := p_nGRAN_CGI, + cellCAGList := p_cellCAGList, + iE_Extensions := p_iE_Extensions + } // End of template m_cell_CAGInformation + + template (omit) CellIDBroadcastEUTRA_Item m_cellIDBroadcastEUTRA_Item( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (omit) CellIDBroadcastEUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_cellIDBroadcastEUTRA_Item + + template (omit) CellIDBroadcastNR_Item m_cellIDBroadcastNR_Item( + in template (value) NR_CGI p_nR_CGI, + in template (omit) CellIDBroadcastNR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_cellIDBroadcastNR_Item + + template (omit) CellIDCancelledEUTRA_Item m_cellIDCancelledEUTRA_Item( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (value) NumberOfBroadcasts p_numberOfBroadcasts, + in template (omit) CellIDCancelledEUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template m_cellIDCancelledEUTRA_Item + + template (omit) CellIDCancelledNR_Item m_cellIDCancelledNR_Item( + in template (value) NR_CGI p_nR_CGI, + in template (value) NumberOfBroadcasts p_numberOfBroadcasts, + in template (omit) CellIDCancelledNR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template m_cellIDCancelledNR_Item + + template (value) CellIDListForRestart m_cellIDListForRestart_eUTRA_CGIListforRestart( + in template (value) EUTRA_CGIList p_eUTRA_CGIListforRestart + ) := { + eUTRA_CGIListforRestart := p_eUTRA_CGIListforRestart + } // End of template m_cellIDListForRestart_misc + + template (value) CellIDListForRestart m_cellIDListForRestart_nR_CGIListforRestart( + in template (value) NR_CGIList p_nR_CGIListforRestart + ) := { + nR_CGIListforRestart := p_nR_CGIListforRestart + } // End of template m_cellIDListForRestart_nR_CGIListforRestart + + template (value) CellIDListForRestart m_cellIDListForRestart_ext( + in template (value) CellIDListForRestart.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_cellIDListForRestart_ext + + template (value) CellSize m_cellSize(in CellSize p_value := medium) := p_value; + + template (omit) CellType m_cellType( + in template (value) CellSize p_cellSize, + in template (omit) CellType.iE_Extensions p_iE_Extensions := omit + ) := { + cellSize := p_cellSize, + iE_Extensions := p_iE_Extensions + } // End of template m_cellType + + template (value) CEmodeBSupport_Indicator m_cEmodeBSupport_Indicator(in CEmodeBSupport_Indicator p_value := supported) := p_value; + template (value) CEmodeBrestricted m_cEmodeBrestricted(in CEmodeBrestricted p_value := restricted) := p_value; + + template (omit) CNAssistedRANTuning m_cNAssistedRANTuning( + in template (omit) ExpectedUEBehaviour p_expectedUEBehaviour := omit, + in template (omit) CNAssistedRANTuning.iE_Extensions p_iE_Extensions := omit + ) := { + expectedUEBehaviour := p_expectedUEBehaviour, + iE_Extensions := p_iE_Extensions + } // End of template m_cNAssistedRANTuning + + template (omit) CNTypeRestrictionsForEquivalentItem m_cNTypeRestrictionsForEquivalentItem( + in template (value) PLMNIdentity p_plmnIdentity, + in template (value) CNTypeRestrictionsForEquivalentItem.cn_Type p_cn_Type, + in template (omit) CNTypeRestrictionsForEquivalentItem.iE_Extensions p_iE_Extensions := omit + ) := { + plmnIdentity := p_plmnIdentity, + cn_Type := p_cn_Type, + iE_Extensions := p_iE_Extensions + } // End of template m_cNTypeRestrictionsForEquivalentItem + + template (value) CNTypeRestrictionsForServing m_cNTypeRestrictionsForServing(in CNTypeRestrictionsForServing p_value := epc_forbidden) := p_value; + + template (omit) CompletedCellsInEAI_EUTRA_Item m_completedCellsInEAI_EUTRA_Item( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (omit) CompletedCellsInEAI_EUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_completedCellsInEAI_EUTRA_Item + + template (omit) CompletedCellsInEAI_NR_Item m_completedCellsInEAI_NR_Item( + in template (value) NR_CGI p_nR_CGI, + in template (omit) CompletedCellsInEAI_NR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_completedCellsInEAI_NR_Item + + template (omit) CompletedCellsInTAI_EUTRA_Item m_completedCellsInTAI_EUTRA_Item( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (omit) CompletedCellsInTAI_EUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_completedCellsInTAI_EUTRA_Item + + template (omit) CompletedCellsInTAI_NR_Item m_completedCellsInTAI_NR_Item( + in template (value) NR_CGI p_nR_CGI, + in template (omit) CompletedCellsInTAI_NR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_completedCellsInTAI_NR_Item + + template (value) ConcurrentWarningMessageInd m_concurrentWarningMessageInd(in ConcurrentWarningMessageInd p_value := true_) := p_value; + template (value) ConfidentialityProtectionIndication m_confidentialityProtectionIndication(in ConfidentialityProtectionIndication p_value := required) := p_value; + template (value) ConfidentialityProtectionResult m_confidentialityProtectionResult(in ConfidentialityProtectionResult p_value := performed) := p_value; + template (value) ConfiguredTACIndication m_configuredTACIndication(in ConfiguredTACIndication p_value := true_) := p_value; + + template (omit) CoreNetworkAssistanceInformationForInactive m_coreNetworkAssistanceInformationForInactive( + in template (value) UEIdentityIndexValue p_uEIdentityIndexValue, + in template (value) PeriodicRegistrationUpdateTimer p_periodicRegistrationUpdateTimer := PX_PERIODIC_REGISTRATION_UPDATE_TIMER, + in template (value) TAIListForInactive p_tAIListForInactive, + in template (omit) PagingDRX p_uESpecificDRX := omit, + in template (omit) MICOModeIndication p_mICOModeIndication := omit, + in template (omit) ExpectedUEBehaviour p_expectedUEBehaviour := omit, + in template (omit) CoreNetworkAssistanceInformationForInactive.iE_Extensions p_iE_Extensions := omit + ) := { + uEIdentityIndexValue := p_uEIdentityIndexValue, + uESpecificDRX := p_uESpecificDRX, + periodicRegistrationUpdateTimer := p_periodicRegistrationUpdateTimer, + mICOModeIndication := p_mICOModeIndication, + tAIListForInactive := p_tAIListForInactive, + expectedUEBehaviour := p_expectedUEBehaviour, + iE_Extensions := p_iE_Extensions + } // End of template m_coreNetworkAssistanceInformationForInactive + + template (value) CoreNetworkAssistanceInformationForInactive.iE_Extensions m_coreNetworkAssistanceInformationForInactive_paging( + in template (value) EUTRA_PagingeDRXInformation p_eUTRA_PagingeDRXInformation, + in template (value) ExtendedUEIdentityIndexValue p_extendedUEIdentityIndexValue, + in template (value) UERadioCapabilityForPaging p_uERadioCapabilityForPaging, + in template (value) MicoAllPLMN p_micoAllPLMN + ) := { + { + id := id_EUTRA_PagingeDRXInformation, + criticality := ignore, + extensionValue := { EUTRA_PagingeDRXInformation := p_eUTRA_PagingeDRXInformation } + }, + { + id := id_ExtendedUEIdentityIndexValue, + criticality := ignore, + extensionValue := { ExtendedUEIdentityIndexValue := p_extendedUEIdentityIndexValue } + }, + { + id := id_UERadioCapabilityForPaging, + criticality := ignore, + extensionValue := { UERadioCapabilityForPaging := p_uERadioCapabilityForPaging } + }, + { + id := id_MicoAllPLMN, + criticality := ignore, + extensionValue := { MicoAllPLMN := p_micoAllPLMN } + } + // TODO To be enhanced + } // End of template m_coreNetworkAssistanceInformationForInactive_paging + + template (omit) COUNTValueForPDCP_SN12 m_cOUNTValueForPDCP_SN12( + in template (value) COUNTValueForPDCP_SN12.pDCP_SN12 p_pDCP_SN12, + in template (value) COUNTValueForPDCP_SN12.hFN_PDCP_SN12 p_hFN_PDCP_SN12, + in template (omit) COUNTValueForPDCP_SN12.iE_Extensions p_iE_Extensions := omit + ) := { + pDCP_SN12 := p_pDCP_SN12, + hFN_PDCP_SN12 := p_hFN_PDCP_SN12, + iE_Extensions := p_iE_Extensions + } // End of template m_cOUNTValueForPDCP_SN12 + + template (omit) COUNTValueForPDCP_SN18 m_cOUNTValueForPDCP_SN18( + in template (value) COUNTValueForPDCP_SN18.pDCP_SN18 p_pDCP_SN18, + in template (value) COUNTValueForPDCP_SN18.hFN_PDCP_SN18 p_hFN_PDCP_SN18, + in template (omit) COUNTValueForPDCP_SN18.iE_Extensions p_iE_Extensions := omit + ) := { + pDCP_SN18 := p_pDCP_SN18, + hFN_PDCP_SN18 := p_hFN_PDCP_SN18, + iE_Extensions := p_iE_Extensions + } // End of template m_cOUNTValueForPDCP_SN18 + + template (value) CPTransportLayerInformation m_cPTransportLayerInformation_endpointIPAddress( + in template (value) TransportLayerAddress p_endpointIPAddress := PX_TRANSPORT_LAYER_ADDRESS + ) := { + endpointIPAddress := p_endpointIPAddress + } // End of template m_cPTransportLayerInformation_endpointIPAddress + + template (value) CPTransportLayerInformation m_cPTransportLayerInformation_choice_Extensions( + in template (value) CPTransportLayerInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_cPTransportLayerInformation_choice_Extensions + + template (value) CPTransportLayerInformation.choice_Extensions m_cPTransportLayerInformation_ext( + in template (value) EndpointIPAddressAndPort p_EndpointIPAddressAndPort + ) := { + id := id_EndpointIPAddressAndPort, + criticality := reject, + value_ := { EndpointIPAddressAndPort := p_EndpointIPAddressAndPort } + } // End of template m_cPTransportLayerInformation_ext + + template (omit) CriticalityDiagnostics m_criticalityDiagnostics( + in template (omit) ProcedureCode p_procedureCode := omit, + in template (omit) TriggeringMessage p_triggeringMessage := omit, + in template (omit) Criticality p_procedureCriticality := omit, + in template (omit) CriticalityDiagnostics_IE_List p_criticalityDiagnostics_IE_List := omit, + in template (omit) CriticalityDiagnostics.iE_Extensions p_iE_Extensions := omit + ) := { + procedureCode := p_procedureCode, + triggeringMessage := p_triggeringMessage, + procedureCriticality := p_procedureCriticality, + iEsCriticalityDiagnostics := p_criticalityDiagnostics_IE_List, + iE_Extensions := p_iE_Extensions + } // End of template m_criticalityDiagnostics + + template (omit) CriticalityDiagnostics_IE_Item m_criticalityDiagnostics_IE_Item( + in template (value) Criticality p_iECriticality, + in template (value) ProtocolIE_ID p_iE_ID, + in template (value) TypeOfError p_typeOfError, + in template (omit) CriticalityDiagnostics_IE_Item.iE_Extensions p_iE_Extensions := omit + ) := { + iECriticality := p_iECriticality, + iE_ID := p_iE_ID, + typeOfError := p_typeOfError, + iE_Extensions := p_iE_Extensions + } // End of template m_criticalityDiagnostics_IE_Item + + template (omit) CellBasedMDT_NR m_cellBasedMDT_NR( + in template (value) CellIdListforMDT_NR p_cellIdListforMDT, + in template (omit) CellBasedMDT_NR.iE_Extensions p_iE_Extensions + ) := { + cellIdListforMDT := p_cellIdListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template m_cellBasedMDT_NR + + template (omit) CellBasedMDT_EUTRA m_cellBasedMDT_EUTRA( + in template (value) CellIdListforMDT_EUTRA p_cellIdListforMDT, + in template (omit) CellBasedMDT_EUTRA.iE_Extensions p_iE_Extensions + ) := { + cellIdListforMDT := p_cellIdListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template m_cellBasedMDT_EUTRA + + template (omit) CellBasedQMC m_cellBasedQMC( + in template (value) CellIdListforQMC p_cellIdListforQMC, + in template (omit) CellBasedQMC.iE_Extensions p_iE_Extensions + ) := { + cellIdListforQMC := p_cellIdListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template m_cellBasedQMC + + template (value) DataForwardingNotPossible m_dataForwardingNotPossible(in DataForwardingNotPossible p_value := data_forwarding_not_possible) := p_value; + + template (value) DataForwardingAccepted m_dataForwardingAccepted(in DataForwardingAccepted p_value := data_forwarding_accepted) := p_value; + + template (omit) DataForwardingResponseDRBItem m_dataForwardingResponseDRBItem( + in template (value) DRB_ID p_dRB_ID, + in template (omit) UPTransportLayerInformation p_dLForwardingUP_TNLInformation := omit, + in template (omit) UPTransportLayerInformation p_uLForwardingUP_TNLInformation := omit, + in template (omit) DataForwardingResponseDRBItem.iE_Extensions p_iE_Extensions := omit + ) := { + dRB_ID := p_dRB_ID, + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + uLForwardingUP_TNLInformation := p_uLForwardingUP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_dataForwardingResponseDRBItem + + template (omit) DAPSRequestInfo m_dAPSRequestInfo( + in template (value) DAPSRequestInfo.dAPSIndicator p_dAPSIndicator := daps_ho_required, + in template (omit) DAPSRequestInfo.iE_Extensions p_iE_Extensions := omit + ) := { + dAPSIndicator := p_dAPSIndicator, + iE_Extensions := p_iE_Extensions + } // End of template m_dAPSRequestInfo + + template (omit) DAPSResponseInfoItem m_dAPSResponseInfoItem( + in template (value) DRB_ID p_dRB_ID, + in template (value) DAPSResponseInfo p_dAPSResponseInfo, + in template (omit) DAPSResponseInfoItem.iE_Extension p_iE_Extension := omit + ) := { + dRB_ID := p_dRB_ID, + dAPSResponseInfo := p_dAPSResponseInfo, + iE_Extension := p_iE_Extension + } // End of template m_dAPSResponseInfoItem + + template (omit) DAPSResponseInfo m_dAPSResponseInfo( + in template (value) DAPSResponseInfo.dapsresponseindicator p_dapsresponseindicator, + in template (omit) DAPSResponseInfo.iE_Extensions p_iE_Extensions := omit + ) := { + dapsresponseindicator := p_dapsresponseindicator, + iE_Extensions := p_iE_Extensions + } // End of template m_dAPSResponseInfo + + template (omit) DataForwardingResponseERABListItem m_DataForwardingResponseERABListItem( + in template (value) E_RAB_ID p_e_RAB_ID, + in template (value) UPTransportLayerInformation p_dLForwardingUP_TNLInformation, + in template (omit) DataForwardingResponseERABListItem.iE_Extensions p_iE_Extensions := omit + ) := { + e_RAB_ID := p_e_RAB_ID, + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_DataForwardingResponseERABListItem + + template (value) DelayCritical m_delayCritical(in DelayCritical p_value) := p_value; + + template (omit) DL_CP_SecurityInformation m_dL_CP_SecurityInformation( + in template (value) DL_NAS_MAC p_dl_NAS_MAC := PX_DL_NAS_MAC, + in template (omit) DL_CP_SecurityInformation.iE_Extensions p_iE_Extensions := omit + ) := { + dl_NAS_MAC := p_dl_NAS_MAC, + iE_Extensions := p_iE_Extensions + } // End of template m_dL_CP_SecurityInformation + + template (value) DLForwarding m_dLForwarding(in DLForwarding p_value := dl_forwarding_proposed) := p_value; + + template (value) DL_NGU_TNLInformationReused m_dL_NGU_TNLInformationReused(in DL_NGU_TNLInformationReused p_value := true_) := p_value; + + template (value) DirectForwardingPathAvailability m_directForwardingPathAvailability(in DirectForwardingPathAvailability p_value := direct_path_available) := p_value; + + template (omit) DRBsSubjectToStatusTransferItem m_dRBsSubjectToStatusTransferItem( + in template (value) DRB_ID p_dRB_ID, + in template (value) DRBStatusUL p_dRBStatusUL, + in template (value) DRBStatusDL p_dRBStatusDL, + in template (omit) DRBsSubjectToStatusTransferItem.iE_Extension p_iE_Extension := omit + ) := { + dRB_ID := p_dRB_ID, + dRBStatusUL := p_dRBStatusUL, + dRBStatusDL := p_dRBStatusDL, + iE_Extension := p_iE_Extension + } // End of template m_dRBsSubjectToStatusTransferItem + + template (value) DRBsSubjectToStatusTransferItem.iE_Extension m_dRBsSubjectToStatusTransferItem_associatedQosFlowList( + in template (value) AssociatedQosFlowList p_associatedQosFlowList + ) := { + { + id := id_OldAssociatedQosFlowList_ULendmarkerexpected, + criticality := ignore, + extensionValue := { AssociatedQosFlowList := p_associatedQosFlowList } + } + } // End of template m_dRBsSubjectToStatusTransferItem_associatedQosFlowList + + template (value) DRBStatusDL m_dRBStatusDL_dRBStatusDL12( + in template (value) DRBStatusDL12 p_dRBStatusDL12 + ) := { + dRBStatusDL12 := p_dRBStatusDL12 + } // End of template m_dRBStatusDL_dRBStatusDL12 + + template (value) DRBStatusDL m_dRBStatusDL_dRBStatusDL18( + in template (value) DRBStatusDL18 p_dRBStatusDL18 + ) := { + dRBStatusDL18 := p_dRBStatusDL18 + } // End of template m_dRBStatusDL_dRBStatusDL18 + + template (value) DRBStatusDL m_dRBStatusDL_choice_Extensions( + in template (value) DRBStatusDL.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_dRBStatusDL_choice_Extensions // type NGAP_Containers.NGAP_PROTOCOL_IES DRBStatusDL_ExtIEs (?); + + template (omit) DRBStatusDL12 m_dRBStatusDL12( + in template (value) COUNTValueForPDCP_SN12 p_dL_COUNTValue, + in template (omit) DRBStatusDL12.iE_Extension p_iE_Extension := omit + ) := { + dL_COUNTValue := p_dL_COUNTValue, + iE_Extension := p_iE_Extension + } // End of template m_dRBStatusDL12 + + template (omit) DRBStatusDL18 m_dRBStatusDL18( + in template (value) COUNTValueForPDCP_SN18 p_dL_COUNTValue, + in template (omit) DRBStatusDL18.iE_Extension p_iE_Extension := omit + ) := { + dL_COUNTValue := p_dL_COUNTValue, + iE_Extension := p_iE_Extension + } // End of template m_dRBStatusDL18 + + template (value) DRBStatusUL m_dRBStatusUL_dRBStatusUL12( + in template (value) DRBStatusUL12 p_dRBStatusUL12 + ) := { + dRBStatusUL12 := p_dRBStatusUL12 + } // End of template m_dRBStatusUL_dRBStatusUL12 + + template (value) DRBStatusUL m_dRBStatusUL_dRBStatusUL18( + in template (value) DRBStatusUL18 p_dRBStatusUL18 + ) := { + dRBStatusUL18 := p_dRBStatusUL18 + } // End of template m_dRBStatusUL_dRBStatusUL18 + + template (value) DRBStatusUL m_dRBStatusUL_choice_Extensions( + in template (value) DRBStatusUL.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_dRBStatusUL_choice_Extensions + + template (omit) DRBStatusUL12 m_dRBStatusUL12( + in template (value) COUNTValueForPDCP_SN12 p_uL_COUNTValue, + in template (omit) DRBStatusUL12.receiveStatusOfUL_PDCP_SDUs p_receiveStatusOfUL_PDCP_SDUs := omit, + in template (omit) DRBStatusUL12.iE_Extension p_iE_Extension := omit + ) := { + uL_COUNTValue := p_uL_COUNTValue, + receiveStatusOfUL_PDCP_SDUs := p_receiveStatusOfUL_PDCP_SDUs, + iE_Extension := p_iE_Extension + } // End of template m_dRBStatusUL12 + + template (omit) DRBStatusUL18 m_dRBStatusUL18( + in template (value) COUNTValueForPDCP_SN18 p_uL_COUNTValue, + in template (omit) DRBStatusUL18.receiveStatusOfUL_PDCP_SDUs p_receiveStatusOfUL_PDCP_SDUs := omit, + in template (omit) DRBStatusUL18.iE_Extension p_iE_Extension := omit + ) := { + uL_COUNTValue := p_uL_COUNTValue, + receiveStatusOfUL_PDCP_SDUs := p_receiveStatusOfUL_PDCP_SDUs, + iE_Extension := p_iE_Extension + } // End of template m_dRBStatusUL18 + + template (omit) DRBsToQosFlowsMappingItem m_dRBsToQosFlowsMappingItem( + in template (value) DRB_ID p_dRB_ID, + in template (value) AssociatedQosFlowList p_associatedQosFlowList, + in template (omit) DRBsToQosFlowsMappingItem.iE_Extensions p_iE_Extensions := omit + ) := { + dRB_ID := p_dRB_ID, + associatedQosFlowList := p_associatedQosFlowList, + iE_Extensions := p_iE_Extensions + } // End of template m_dRBsToQosFlowsMappingItem + + template (value) DRBsToQosFlowsMappingItem.iE_Extensions m_dRBsToQosFlowsMappingItem_dAPSRequestInfo( + in template (value) DAPSRequestInfo p_dAPSRequestInfo + ) := { + { + id := id_DAPSRequestInfo, + criticality := ignore, + extensionValue := { DAPSRequestInfo := p_dAPSRequestInfo } + } + } // End of template m_dRBsToQosFlowsMappingItem_dAPSRequestInfo + + template (omit) Dynamic5QIDescriptor m_dynamic5QIDescriptor( + in template (value) PriorityLevelQos p_priorityLevelQos, + in template (value) PacketDelayBudget p_packetDelayBudget, + in template (value) PacketErrorRate p_packetErrorRate, + in template (omit) FiveQI p_fiveQI := omit, + in template (omit) DelayCritical p_delayCritical := omit, + in template (omit) AveragingWindow p_averagingWindow := omit, + in template (omit) MaximumDataBurstVolume p_maximumDataBurstVolume := omit, + in template (omit) Dynamic5QIDescriptor.iE_Extensions p_iE_Extensions := omit + ) := { + priorityLevelQos := p_priorityLevelQos, + packetDelayBudget := p_packetDelayBudget, + packetErrorRate := p_packetErrorRate, + fiveQI := p_fiveQI, + delayCritical := p_delayCritical, + // The above IE shall be present in case of GBR QoS flow + averagingWindow := p_averagingWindow, + // The above IE shall be present in case of GBR QoS flow + maximumDataBurstVolume := p_maximumDataBurstVolume, + iE_Extensions := p_iE_Extensions + } // End of template m_dynamic5QIDescriptor + + template (value) Dynamic5QIDescriptor.iE_Extensions m_dynamic5QIDescriptor_extendedPacketDelayBudget( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_ExtendedPacketDelayBudget, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_dynamic5QIDescriptor_extendedPacketDelayBudget + + template (value) Dynamic5QIDescriptor.iE_Extensions m_dynamic5QIDescriptor_cNPacketDelayBudgetDL( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_CNPacketDelayBudgetDL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_dynamic5QIDescriptor_cNPacketDelayBudgetDL + + template (value) Dynamic5QIDescriptor.iE_Extensions m_dynamic5QIDescriptor_cNPacketDelayBudgetUL( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_CNPacketDelayBudgetUL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_dynamic5QIDescriptor_cNPacketDelayBudgetUL + + template (value) EarlyMeasurement m_earlyMeasurement(in EarlyMeasurement p_value := true_) := p_value; + + template (omit) EarlyStatusTransfer_TransparentContainer m_earlyStatusTransfer_TransparentContainer( + in template (value) ProcedureStageChoice p_procedureStage, + in template (omit) EarlyStatusTransfer_TransparentContainer.iE_Extensions p_iE_Extensions := omit + ) := { + procedureStage := p_procedureStage, + iE_Extensions := p_iE_Extensions + } // End of template m_earlyStatusTransfer_TransparentContainer + + template (value) ProcedureStageChoice m_procedureStageChoice_firstDLCount( + in template (value) FirstDLCount p_firstDLCount + ) := { + first_dl_count := p_firstDLCount + } // End of template m_procedureStageChoice_firstDLCount + + template (value) ProcedureStageChoice m_procedureStageChoice_choice_Extensions( + in template (value) ProcedureStageChoice.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_procedureStageChoice_choice_Extensions + + template (omit) FirstDLCount m_firstDLCount( + in template (value) DRBsSubjectToEarlyStatusTransfer_List p_dRBsSubjectToEarlyStatusTransfer, + in template (omit) FirstDLCount.iE_Extension p_iE_Extension := omit + ) := { + dRBsSubjectToEarlyStatusTransfer := p_dRBsSubjectToEarlyStatusTransfer, + iE_Extension := p_iE_Extension + } // End of template m_firstDLCount + + template (omit) DRBsSubjectToEarlyStatusTransfer_Item m_dRBsSubjectToEarlyStatusTransfer_Item( + in template (value) DRB_ID p_dRB_ID, + in template (value) DRBStatusDL p_firstDLCOUNT, + in template (omit) DRBsSubjectToEarlyStatusTransfer_Item.iE_Extension p_iE_Extension := omit + ) := { + dRB_ID := p_dRB_ID, + firstDLCOUNT := p_firstDLCOUNT, + iE_Extension := p_iE_Extension + } // End of template m_dRBsSubjectToEarlyStatusTransfer_Item + + template (value) EDT_Session m_eDT_Session(in EDT_Session p_value := true_) := p_value; + + template (omit) EmergencyAreaIDBroadcastEUTRA_Item m_emergencyAreaIDBroadcastEUTRA_Item( + in template (value) EmergencyAreaID p_emergencyAreaID, + in template (value) CompletedCellsInEAI_EUTRA p_completedCellsInEAI_EUTRA, + in template (omit) EmergencyAreaIDBroadcastEUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + emergencyAreaID := p_emergencyAreaID, + completedCellsInEAI_EUTRA := p_completedCellsInEAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template m_emergencyAreaIDBroadcastEUTRA_Item + + template (omit) EmergencyAreaIDBroadcastNR_Item m_emergencyAreaIDBroadcastNR_Item( + in template (value) EmergencyAreaID p_emergencyAreaID, + in template (value) CompletedCellsInEAI_NR p_completedCellsInEAI_NR, + in template (omit) EmergencyAreaIDBroadcastNR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + emergencyAreaID := p_emergencyAreaID, + completedCellsInEAI_NR := p_completedCellsInEAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template m_emergencyAreaIDBroadcastNR_Item + + template (omit) EmergencyAreaIDCancelledEUTRA_Item m_emergencyAreaIDCancelledEUTRA_Item( + in template (value) EmergencyAreaID p_emergencyAreaID, + in template (value) CancelledCellsInEAI_EUTRA p_cancelledCellsInEAI_EUTRA, + in template (omit) EmergencyAreaIDCancelledEUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + emergencyAreaID := p_emergencyAreaID, + cancelledCellsInEAI_EUTRA := p_cancelledCellsInEAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template m_emergencyAreaIDCancelledEUTRA_Item + + template (omit) EmergencyAreaIDCancelledNR_Item m_emergencyAreaIDCancelledNR_Item( + in template (value) EmergencyAreaID p_emergencyAreaID, + in template (value) CancelledCellsInEAI_NR p_cancelledCellsInEAI_NR, + in template (omit) EmergencyAreaIDCancelledNR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + emergencyAreaID := p_emergencyAreaID, + cancelledCellsInEAI_NR := p_cancelledCellsInEAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template m_emergencyAreaIDCancelledNR_Item + + template (omit) EmergencyFallbackIndicator m_emergencyFallbackIndicator( + in template (value) EmergencyFallbackRequestIndicator p_emergencyFallbackRequestIndicator, + in template (omit) EmergencyServiceTargetCN p_emergencyServiceTargetCN := omit, + in template (omit) EmergencyFallbackIndicator.iE_Extensions p_iE_Extensions := omit + ) := { + emergencyFallbackRequestIndicator := p_emergencyFallbackRequestIndicator, + emergencyServiceTargetCN := p_emergencyServiceTargetCN, + iE_Extensions := p_iE_Extensions + } // End of template m_emergencyFallbackIndicator + + template (value) EmergencyFallbackRequestIndicator m_emergencyFallbackRequestIndicator(in EmergencyFallbackRequestIndicator p_value := emergency_fallback_requested) := p_value; + + template (value) EmergencyServiceTargetCN m_emergencyServiceTargetCN(in EmergencyServiceTargetCN p_value := fiveGC) := p_value; + + template (value) ENB_ID m_eNB_ID_macroENB_ID( + in template (value) Bit20 p_macroENB_ID + ) := { + macroENB_ID := p_macroENB_ID + } // End of template m_eNB_ID_macroENB_ID + + template (value) ENB_ID m_eNB_ID_homeENB_ID( + in template (value) Bit28 p_homeENB_ID + ) := { + homeENB_ID := p_homeENB_ID + } // End of template m_eNB_ID_homeENB_ID + + template (value) ENB_ID m_eNB_ID_short_macroENB_ID( + in template (value) Bit18 p_short_macroENB_ID + ) := { + short_macroENB_ID := p_short_macroENB_ID + } // End of template m_eNB_ID_short_macroENB_ID + + template (value) ENB_ID m_eNB_ID_long_macroENB_ID( + in template (value) Bit21 p_long_macroENB_ID + ) := { + long_macroENB_ID := p_long_macroENB_ID + } // End of template m_eNB_ID_long_macroENB_ID + + template (value) ENB_ID m_eNB_ID_choice_Extensions( + in template (value) ENB_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_eNB_ID_choice_Extensions + + template (value) Enhanced_CoverageRestriction m_enhanced_CoverageRestriction(in Enhanced_CoverageRestriction p_value := restricted) := p_value; + + template (omit) EndpointIPAddressAndPort m_endpointIPAddressAndPort( + in template (value) TransportLayerAddress p_endpointIPAddress := PX_TRANSPORT_LAYER_ADDRESS, + in template (value) PortNumber p_portNumber, + in template (omit) EndpointIPAddressAndPort.iE_Extensions p_iE_Extensions := omit + ) := { + endpointIPAddress := p_endpointIPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template m_endpointIPAddressAndPort + + template (value) EndIndication m_endIndication(in EndIndication p_value := no_further_data) := p_value; + + template (omit) EPS_TAI m_ePS_TAI( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) EPS_TAC p_ePS_TAC := PX_EPS_TAC, + in template (omit) EPS_TAI.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + ePS_TAC := p_ePS_TAC, + iE_Extensions := p_iE_Extensions + } // End of template m_ePS_TAI + + template (omit) E_RABInformationItem m_e_RABInformationItem( + in template (value) E_RAB_ID p_e_RAB_ID, + in template (value) DLForwarding p_dLForwarding, + in template (omit) E_RABInformationItem.iE_Extensions p_iE_Extensions := omit + ) := { + e_RAB_ID := p_e_RAB_ID, + dLForwarding := p_dLForwarding, + iE_Extensions := p_iE_Extensions + } // End of template m_e_RABInformationItem + + template (omit) E_RABInformationItem.iE_Extensions m_e_RABInformationItem_id_SourceTNLAddrInfo( + in template (value) TransportLayerAddress p_transportLayerAddress := PX_SOURCE_TRANSPORT_LAYER_ADDRESS + ) := { + { + id := id_SourceTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template m_e_RABInformationItem_id_SourceTNLAddrInfo + + template (omit) E_RABInformationItem.iE_Extensions m_e_RABInformationItem_id_SourceNodeTNLAddrInfo( + in template (value) TransportLayerAddress p_transportLayerAddress := PX_SOURCE_TRANSPORT_LAYER_ADDRESS + ) := { + { + id := id_SourceNodeTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template m_e_RABInformationItem_id_SourceNodeTNLAddrInfo + + template (omit) E_RABInformationItem.iE_Extensions m_e_RABInformationItem_full( + in template (value) TransportLayerAddress p_transportLayerAddress_id_SourceTNLAddrInfo := PX_SOURCE_TRANSPORT_LAYER_ADDRESS, + in template (value) TransportLayerAddress p_transportLayerAddress_id_SourceNodeTNLAddrInfo := PX_SOURCE_TRANSPORT_LAYER_ADDRESS + ) := { + { + id := id_SourceTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress_id_SourceTNLAddrInfo } + }, + { + id := id_SourceNodeTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress_id_SourceNodeTNLAddrInfo } + } + } // End of template m_e_RABInformationItem_full + + template (omit) EUTRA_CGI m_uUTRA_CGI( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) EUTRACellIdentity p_eUTRACellIdentity := PX_EUTRA_CELL_IDENTITY, + in template (omit) EUTRA_CGI.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + eUTRACellIdentity := p_eUTRACellIdentity, + iE_Extensions := p_iE_Extensions + } // End of template m_uUTRA_CGI + + template (omit) EUTRA_PagingeDRXInformation m_eUTRA_PagingeDRXInformation( + in template (value) EUTRA_Paging_eDRX_Cycle p_eUTRA_paging_eDRX_Cycle, + in template (omit) EUTRA_Paging_Time_Window p_eUTRA_paging_Time_Window := omit, + in template (omit) EUTRA_PagingeDRXInformation.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_paging_eDRX_Cycle := p_eUTRA_paging_eDRX_Cycle, + eUTRA_paging_Time_Window := p_eUTRA_paging_Time_Window, + iE_Extensions := p_iE_Extensions + } // End of template m_eUTRA_PagingeDRXInformation + + template (value) EUTRA_Paging_eDRX_Cycle m_eUTRA_Paging_eDRX_Cycle(in EUTRA_Paging_eDRX_Cycle p_value := hfhalf) := p_value; + + template (value) EUTRA_Paging_Time_Window m_eUTRA_Paging_Time_Window(in EUTRA_Paging_Time_Window p_value := s1) := p_value; + + template (value) EventType m_eventType(in EventType p_value := direct) := p_value; + + template (omit) ExcessPacketDelayThresholdItem m_excessPacketDelayThresholdItem( + in template (value) FiveQI p_fiveQi, + in template (value) ExcessPacketDelayThresholdValue p_excessPacketDelayThresholdValue, + in template (omit) ExcessPacketDelayThresholdItem.iE_Extensions p_iE_Extensions := omit + ) := { + fiveQi := p_fiveQi, + excessPacketDelayThresholdValue := p_excessPacketDelayThresholdValue, + iE_Extensions := p_iE_Extensions + } // End of template m_excessPacketDelayThresholdItem + + template (value) ExcessPacketDelayThresholdValue m_excessPacketDelayThresholdValue(in ExcessPacketDelayThresholdValue p_value := ms0dot25) := p_value; + + template (value) ExpectedHOInterval m_expectedHOInterval(in ExpectedHOInterval p_value := sec15) := p_value; + + template (omit) ExpectedUEActivityBehaviour m_expectedUEActivityBehaviour( + in template (omit) ExpectedActivityPeriod p_expectedActivityPeriod := omit, + in template (omit) ExpectedIdlePeriod p_expectedIdlePeriod := omit, + in template (omit) SourceOfUEActivityBehaviourInformation p_sourceOfUEActivityBehaviourInformation := omit, + in template (omit) ExpectedUEActivityBehaviour.iE_Extensions p_iE_Extensions := omit + ) := { + expectedActivityPeriod := p_expectedActivityPeriod, + expectedIdlePeriod := p_expectedIdlePeriod, + sourceOfUEActivityBehaviourInformation := p_sourceOfUEActivityBehaviourInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_expectedUEActivityBehaviour + + template (omit) ExpectedUEBehaviour m_expectedUEBehaviour( + in template (omit) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := omit, + in template (omit) ExpectedHOInterval p_expectedHOInterval := omit, + in template (omit) ExpectedUEMobility p_expectedUEMobility := omit, + in template (omit) ExpectedUEMovingTrajectory p_expectedUEMovingTrajectory:= omit, + in template (omit) ExpectedUEBehaviour.iE_Extensions p_iE_Extensions := omit + ) := { + expectedUEActivityBehaviour := p_expectedUEActivityBehaviour, + expectedHOInterval := p_expectedHOInterval, + expectedUEMobility := p_expectedUEMobility, + expectedUEMovingTrajectory := p_expectedUEMovingTrajectory, + iE_Extensions := p_iE_Extensions + } // End of template m_expectedUEBehaviour + + template (value) ExpectedUEMobility m_expectedUEMobility(in ExpectedUEMobility p_value := mobile) := p_value; + + template (omit) ExpectedUEMovingTrajectoryItem m_expectedUEMovingTrajectoryItem( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (omit) ExpectedUEMovingTrajectoryItem.timeStayedInCell p_timeStayedInCell := omit, + in template (omit) ExpectedUEMovingTrajectoryItem.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CGI := p_nGRAN_CGI, + timeStayedInCell := p_timeStayedInCell, + iE_Extensions := p_iE_Extensions + } // End of template m_expectedUEMovingTrajectoryItem + + template (omit) Extended_AMFName m_extended_AMFName( + in template (omit) AMFNameVisibleString p_aMFNameVisibleString := omit, + in template (omit) AMFNameUTF8String p_aMFNameUTF8String := omit, + in template (omit) Extended_AMFName.iE_Extensions p_iE_Extensions := omit + ) := { + aMFNameVisibleString := p_aMFNameVisibleString, + aMFNameUTF8String := p_aMFNameUTF8String, + iE_Extensions := p_iE_Extensions + } // End of template m_extended_AMFName + + template (omit) Extended_RANNodeName m_extended_RANNodeName( + in template (omit) RANNodeNameVisibleString p_rANNodeNameVisibleString := omit, + in template (omit) RANNodeNameUTF8String p_rANNodeNameUTF8String := omit, + in template (omit) Extended_RANNodeName.iE_Extensions p_iE_Extensions := omit + ) := { + rANNodeNameVisibleString := p_rANNodeNameVisibleString, + rANNodeNameUTF8String := p_rANNodeNameUTF8String, + iE_Extensions := p_iE_Extensions + } // End of template m_extended_RANNodeName + + template (omit) ExtendedRATRestrictionInformation m_extendedRATRestrictionInformation( + in template (value) ExtendedRATRestrictionInformation.primaryRATRestriction p_primaryRATRestriction, + in template (value) ExtendedRATRestrictionInformation.secondaryRATRestriction p_secondaryRATRestriction, + in template (omit) ExtendedRATRestrictionInformation.iE_Extensions p_iE_Extensions := omit + ) := { + primaryRATRestriction := p_primaryRATRestriction, + secondaryRATRestriction := p_secondaryRATRestriction, + iE_Extensions := p_iE_Extensions + } // End of template m_extendedRATRestrictionInformation + + template (value) EventTrigger m_eventTrigger_outOfCoverage( + in template (value) EventTrigger.outOfCoverage p_outOfCoverage := true_ + ) := { + outOfCoverage := p_outOfCoverage + } // End of template m_eventTrigger_outOfCoverage + + template (value) EventTrigger m_eventTrigger_eventL1LoggedMDTConfig( + in template (value) EventL1LoggedMDTConfig p_eventL1LoggedMDTConfig + ) := { + eventL1LoggedMDTConfig := p_eventL1LoggedMDTConfig + } // End of template m_eventTrigger_eventL1LoggedMDTConfig + + template (value) EventTrigger m_eventTrigger_choice_Extensions( + in template (value) EventTrigger.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_eventTrigger_choice_Extensions + + template (omit) EventL1LoggedMDTConfig m_eventL1LoggedMDTConfig( + in template (value) MeasurementThresholdL1LoggedMDT p_l1Threshold, + in template (value) Hysteresis p_hysteresis, + in template (value) TimeToTrigger p_timeToTrigger, + in template (omit) EventL1LoggedMDTConfig.iE_Extensions p_iE_Extensions := omit + ) := { + l1Threshold := p_l1Threshold, + hysteresis := p_hysteresis, + timeToTrigger := p_timeToTrigger, + iE_Extensions := p_iE_Extensions + } // End of template m_eventL1LoggedMDTConfig + + template (value) MeasurementThresholdL1LoggedMDT m_measurementThresholdL1LoggedMDT_threshold_RSRP( + in template (value) Threshold_RSRP p_threshold_RSRP + ) := { + threshold_RSRP := p_threshold_RSRP + } // End of template m_measurementThresholdL1LoggedMDT_threshold_RSRP + + template (value) MeasurementThresholdL1LoggedMDT m_measurementThresholdL1LoggedMDT_threshold_RSRQ( + in template (value) Threshold_RSRQ p_threshold_RSRQ + ) := { + threshold_RSRQ := p_threshold_RSRQ + } // End of template m_measurementThresholdL1LoggedMDT_threshold_RSRQ + + template (value) MeasurementThresholdL1LoggedMDT m_measurementThresholdL1LoggedMDT_choice_Extensions( + in template (value) MeasurementThresholdL1LoggedMDT.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_measurementThresholdL1LoggedMDT_choice_Extensions + + template (omit) FailureIndication m_failureIndication( + in template (value) UERLFReportContainer p_uERLFReportContainer, + in template (omit) FailureIndication.iE_Extensions p_iE_Extensions := omit + ) := { + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template m_failureIndication + + template (omit) FiveG_ProSeAuthorized m_FiveG_ProSeAuthorized( + in template (omit) FiveGProSeDirectDiscovery p_fiveGProSeDirectDiscovery := omit, + in template (omit) FiveGProSeDirectCommunication p_fiveGProSeDirectCommunication := omit, + in template (omit) FiveGProSeLayer2UEtoNetworkRelay p_fiveGProSeLayer2UEtoNetworkRelay := omit, + in template (omit) FiveGProSeLayer3UEtoNetworkRelay p_fiveGProSeLayer3UEtoNetworkRelay := omit, + in template (omit) FiveGProSeLayer2RemoteUE p_fiveGProSeLayer2RemoteUE := omit, + in template (omit) FiveG_ProSeAuthorized.iE_Extensions p_iE_Extensions := omit + ) := { + fiveGProSeDirectDiscovery := p_fiveGProSeDirectDiscovery, + fiveGProSeDirectCommunication := p_fiveGProSeDirectCommunication, + fiveGProSeLayer2UEtoNetworkRelay := p_fiveGProSeLayer2UEtoNetworkRelay, + fiveGProSeLayer3UEtoNetworkRelay := p_fiveGProSeLayer3UEtoNetworkRelay, + fiveGProSeLayer2RemoteUE := p_fiveGProSeLayer2RemoteUE, + iE_Extensions := p_iE_Extensions + } // End of template m_FiveG_ProSeAuthorized + + template (value) FiveGProSeDirectDiscovery m_fiveGProSeDirectDiscovery(in FiveGProSeDirectDiscovery p_value := authorized) := p_value; + + template (value) FiveGProSeDirectCommunication m_fiveGProSeDirectCommunication(in FiveGProSeDirectCommunication p_value := authorized) := p_value; + + template (value) FiveGProSeLayer2UEtoNetworkRelay m_fiveGProSeLayer2UEtoNetworkRelay(in FiveGProSeLayer2UEtoNetworkRelay p_value := authorized) := p_value; + + template (value) FiveGProSeLayer3UEtoNetworkRelay m_fiveGProSeLayer3UEtoNetworkRelay(in FiveGProSeLayer3UEtoNetworkRelay p_value := authorized) := p_value; + + template (value) FiveGProSeLayer2RemoteUE m_fiveGProSeLayer2RemoteUE(in FiveGProSeLayer2RemoteUE p_value := authorized) := p_value; + + template (omit) FiveG_ProSePC5QoSParameters m_fiveG_ProSePC5QoSParameters( + in template (value) FiveGProSePC5QoSFlowList p_fiveGProSepc5QoSFlowList, + in template (omit) BitRate p_fiveGProSepc5LinkAggregateBitRates := omit, + in template (omit) FiveG_ProSePC5QoSParameters.iE_Extensions p_iE_Extensions := omit + ) := { + fiveGProSepc5QoSFlowList := p_fiveGProSepc5QoSFlowList, + fiveGProSepc5LinkAggregateBitRates := p_fiveGProSepc5LinkAggregateBitRates, + iE_Extensions := p_iE_Extensions + } // End of template m_fiveG_ProSePC5QoSParameters + + template (omit) FiveGProSePC5QoSFlowItem m_fiveGProSePC5QoSFlowItem( + in template (value) FiveQI p_fiveGproSepQI, + in template (omit) FiveGProSePC5FlowBitRates p_fiveGproSepc5FlowBitRates := omit, + in template (omit) Range p_fiveGproSerange := omit, + in template (omit) FiveGProSePC5QoSFlowItem.iE_Extensions p_iE_Extensions := omit + ) := { + fiveGproSepQI := p_fiveGproSepQI, + fiveGproSepc5FlowBitRates := p_fiveGproSepc5FlowBitRates, + fiveGproSerange := p_fiveGproSerange, + iE_Extensions := p_iE_Extensions + } // End of template m_fiveGProSePC5QoSFlowItem + + template (omit) FiveGProSePC5FlowBitRates m_fiveGProSePC5FlowBitRates( + in template (value) BitRate p_fiveGproSeguaranteedFlowBitRate, + in template (value) BitRate p_fiveGproSemaximumFlowBitRate, + in template (omit) FiveGProSePC5FlowBitRates.iE_Extensions p_iE_Extensions := omit + ) := { + fiveGproSeguaranteedFlowBitRate := p_fiveGproSeguaranteedFlowBitRate, + fiveGproSemaximumFlowBitRate := p_fiveGproSemaximumFlowBitRate, + iE_Extensions := p_iE_Extensions + } // End of template m_fiveGProSePC5FlowBitRates + + template (omit) FiveG_S_TMSI m_fiveG_S_TMSI( + in template (value) AMFSetID p_aMFSetID := PX_AMF_SET_ID, + in template (value) AMFPointer p_aMFPointer := PX_AMF_POINTER, + in template (value) FiveG_TMSI p_fiveG_TMSI, + in template (omit) FiveG_S_TMSI.iE_Extensions p_iE_Extensions := omit + ) := { + aMFSetID := p_aMFSetID, + aMFPointer := p_aMFPointer, + fiveG_TMSI := p_fiveG_TMSI, + iE_Extensions := p_iE_Extensions + } // End of template m_fiveG_S_TMSI + + template (omit) ForbiddenAreaInformation_Item m_forbiddenAreaInformation_Item( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) ForbiddenTACs p_forbiddenTACs, + in template (omit) ForbiddenAreaInformation_Item.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + forbiddenTACs := p_forbiddenTACs, + iE_Extensions := p_iE_Extensions + } // End of template m_forbiddenAreaInformation_Item + + template (omit) FromEUTRANtoNGRAN m_fromEUTRANtoNGRAN( + in template (value) IntersystemSONeNBID p_sourceeNBID, + in template (value) IntersystemSONNGRANnodeID p_targetNGRANnodeID, + in template (omit) FromEUTRANtoNGRAN.iE_Extensions p_iE_Extensions := omit + ) := { + sourceeNBID := p_sourceeNBID, + targetNGRANnodeID := p_targetNGRANnodeID, + iE_Extensions := p_iE_Extensions + } // End of template m_fromEUTRANtoNGRAN + + template (omit) FromNGRANtoEUTRAN m_fromNGRANtoEUTRAN( + in template (value) IntersystemSONNGRANnodeID p_sourceNGRANnodeID, + in template (value) IntersystemSONeNBID p_targeteNBID, + in template (omit) FromNGRANtoEUTRAN.iE_Extensions p_iE_Extensions := omit + ) := { + sourceNGRANnodeID := p_sourceNGRANnodeID, + targeteNBID := p_targeteNBID, + iE_Extensions := p_iE_Extensions + } // End of template m_fromNGRANtoEUTRAN + + template (omit) GBR_QosInformation m_gBR_QosInformation( + in template (value) BitRate p_maximumFlowBitRateDL, + in template (value) BitRate p_maximumFlowBitRateUL, + in template (value) BitRate p_guaranteedFlowBitRateDL, + in template (value) BitRate p_guaranteedFlowBitRateUL, + in template (omit) NotificationControl p_notificationControl := omit, + in template (omit) PacketLossRate p_maximumPacketLossRateDL := omit, + in template (omit) PacketLossRate p_maximumPacketLossRateUL := omit, + in template (omit) GBR_QosInformation.iE_Extensions p_iE_Extensions := omit + ) := { + maximumFlowBitRateDL := p_maximumFlowBitRateDL, + maximumFlowBitRateUL := p_maximumFlowBitRateUL, + guaranteedFlowBitRateDL := p_guaranteedFlowBitRateDL, + guaranteedFlowBitRateUL := p_guaranteedFlowBitRateUL, + notificationControl := p_notificationControl, + maximumPacketLossRateDL := p_maximumPacketLossRateDL, + maximumPacketLossRateUL := p_maximumPacketLossRateUL, + iE_Extensions := p_iE_Extensions + } // End of template m_gBR_QosInformation + + template (value) GBR_QosInformation.iE_Extensions m_gBR_QosInformation_id_AlternativeQoSParaSetList( + in template (value) AlternativeQoSParaSetList p_alternativeQoSParaSetList + ) := { + { + id := id_AlternativeQoSParaSetList, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetList := p_alternativeQoSParaSetList} + } + } // End of template m_gBR_QosInformation_id_AlternativeQoSParaSetList + + template (omit) GlobalCable_ID_new m_globalCable_ID_new( + in template (value) GlobalCable_ID p_globalCable_ID, + in template (value) TAI p_tAI, + in template (omit) GlobalCable_ID_new.iE_Extensions p_iE_Extensions := omit + ) := { + globalCable_ID := p_globalCable_ID, + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template m_globalCable_ID_new + + template (omit) GlobalGNB_ID m_ie_globalGnbId( + in template (value) PLMNIdentity p_plmnId := PX_PLMN_IDENTITY, + in template (value) bitstring p_gnbId := PX_GNB_ID, + in template (omit) GlobalGNB_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_plmnId,//'010001'O, + gNB_ID := { gNB_ID := p_gnbId/*'0000000000000000000000'B*/}, + iE_Extensions := p_iE_Extensions + } // End of template m_ie_globalGnbId + + template (omit) GlobalN3IWF_ID m_globalN3IWF_ID( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) N3IWF_ID p_n3IWF_ID, + in template (omit) GlobalN3IWF_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + n3IWF_ID := p_n3IWF_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_globalN3IWF_ID + + template (omit) GlobalLine_ID m_globalLine_ID( + in template (value) GlobalLineIdentity p_globalLineIdentity, + in template (omit) LineType p_lineType := omit, + in template (omit) GlobalLine_ID.iE_Extensions p_iE_Extensions := omit + ) := { + globalLineIdentity := p_globalLineIdentity, + lineType := p_lineType, + iE_Extensions := p_iE_Extensions + } // End of template m_globalLine_ID + + template (value) GlobalLine_ID.iE_Extensions m_globalLine_ID_id_TAI(in template (value) TAI p_tAI) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template m_globalLine_ID_id_TAI + + template (omit) GlobalNgENB_ID m_globalNgENB_ID( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) NgENB_ID p_ngENB_ID, + in template (omit) GlobalNgENB_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + ngENB_ID := p_ngENB_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_globalNgENB_ID + + template (value) GlobalRANNodeID m_globalRANNodeID_globalGNB_ID( + in template (value) GlobalGNB_ID p_globalGNB_ID + ) := { + globalGNB_ID := p_globalGNB_ID + } // End of template m_globalRANNodeID_globalGNB_ID + + template (value) GlobalRANNodeID m_globalRANNodeID_globalNgENB_ID( + in template (value) GlobalNgENB_ID p_globalNgENB_ID + ) := { + globalNgENB_ID := p_globalNgENB_ID + } // End of template m_globalRANNodeID_globalNgENB_ID + + template (value) GlobalRANNodeID m_globalRANNodeID_globalN3IWF_ID( + in template (value) GlobalN3IWF_ID p_globalN3IWF_ID + ) := { + globalN3IWF_ID := p_globalN3IWF_ID + } // End of template m_globalRANNodeID_globalN3IWF_ID + + template (value) GlobalRANNodeID m_globalRANNodeID_choice_Extensions( + in template (value) GlobalRANNodeID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_globalRANNodeID_choice_Extensions + + template (value) GlobalRANNodeID.choice_Extensions m_globalRANNodeID_id_GlobalTNGF_ID( + in template (value) GlobalTNGF_ID p_globalTNGF_ID + ) := { + id := id_GlobalTNGF_ID, + criticality := reject, + value_ := { GlobalTNGF_ID := p_globalTNGF_ID } + } // End of template m_globalRANNodeID_id_GlobalTNGF_ID + + template (value) GlobalRANNodeID.choice_Extensions m_globalRANNodeID_id_GlobalTWIF_ID( + in template (value) GlobalTNGF_ID p_globalTWIF_ID + ) := { + id := id_GlobalTWIF_ID, + criticality := reject, + value_ := { GlobalTNGF_ID := p_globalTWIF_ID } + } // End of template m_globalRANNodeID_id_GlobalTWIF_ID + + template (value) GlobalRANNodeID.choice_Extensions m_globalRANNodeID_id_GlobalW_AGF_ID( + in template (value) GlobalW_AGF_ID p_globalW_AGF_ID + ) := { + id := id_GlobalW_AGF_ID, + criticality := reject, + value_ := { GlobalW_AGF_ID := p_globalW_AGF_ID } + } // End of template m_globalRANNodeID_id_GlobalW_AGF_ID + + // template (value) GlobalRANNodeID.choice_Extensions m_globalRANNodeID_all( + // in template (value) GlobalTNGF_ID p_globalTNGF_ID, + // in template (value) GlobalTWIF_ID p_globalTWIF_ID, + // in template (value) GlobalW_AGF_ID p_globalW_AGF_ID + // ) := { + // { + // id := id_GlobalTNGF_ID, + // criticality := reject, + // value_ := { GlobalTNGF_ID := p_globalTNGF_ID } + // }, + // { + // id := id_GlobalTWIF_ID, + // criticality := reject, + // value_ := { GlobalTNGF_ID := p_globalTWIF_ID } + // }, + // { + // id := id_GlobalW_AGF_ID, + // criticality := reject, + // value_ := { GlobalW_AGF_ID := p_globalW_AGF_ID } + // } + // } // End of template m_globalRANNodeID_all + + template (omit) GlobalTNGF_ID m_globalTNGF_ID( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) TNGF_ID p_tNGF_ID, + in template (omit) GlobalTNGF_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + tNGF_ID := p_tNGF_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_globalTNGF_ID + + template (omit) GlobalTWIF_ID m_globalTWIF_ID( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) TWIF_ID p_tWIF_ID, + in template (omit) GlobalTWIF_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + tWIF_ID := p_tWIF_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_globalTWIF_ID + + template (omit) GlobalW_AGF_ID m_GlobalW_AGF_ID( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) W_AGF_ID p_w_AGF_ID, + in template (omit) GlobalW_AGF_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + w_AGF_ID := p_w_AGF_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_GlobalW_AGF_ID + + template (value) GNB_ID m_gNB_ID_gNB_ID( + in template (value) GNB_ID.gNB_ID p_gNB_ID + ) := { + gNB_ID := p_gNB_ID + } // End of template m_gNB_ID_gNB_ID + + template (value) GNB_ID m_gNB_ID_choice_Extensions( + in template (value) GNB_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_gNB_ID_choice_Extensions + + template (omit) GTPTunnel m_gTPTunnel( + in template (value) TransportLayerAddress p_tla := PX_TRANSPORT_LAYER_ADDRESS, + in template (value) GTP_TEID p_gtp_teid := PX_GTP_TEID, + in template (omit) GTPTunnel.iE_Extensions p_iE_Extensions := omit + ):= { + transportLayerAddress := p_tla, + gTP_TEID := p_gtp_teid, + iE_Extensions := p_iE_Extensions + } // End of template m_gTPTunnel + + template (omit) GUAMI m_gUAMI( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) AMFRegionID p_aMFRegionID := PX_AMF_REGION_ID, + in template (value) AMFSetID p_aMFSetID := PX_AMF_SET_ID, + in template (value) AMFPointer p_aMFPointer := PX_AMF_POINTER, + in template (omit) GUAMI.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + aMFRegionID := p_aMFRegionID, + aMFSetID := p_aMFSetID, + aMFPointer := p_aMFPointer, + iE_Extensions := p_iE_Extensions + } // End of template m_gUAMI + + template (value) GUAMIType m_gUAMIType(in GUAMIType p_val := native) := p_val; + + template (omit) HandoverCommandTransfer m_handoverCommandTransfer( + in template (omit) UPTransportLayerInformation p_dLForwardingUP_TNLInformation := omit, + in template (omit) QosFlowToBeForwardedList p_qosFlowToBeForwardedList := omit, + in template (omit) DataForwardingResponseDRBList p_dataForwardingResponseDRBList := omit, + in template (omit) HandoverCommandTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + qosFlowToBeForwardedList := p_qosFlowToBeForwardedList, + dataForwardingResponseDRBList := p_dataForwardingResponseDRBList, + iE_Extensions := p_iE_Extensions + } // End of template m_handoverCommandTransfer + + template (value) HandoverCommandTransfer.iE_Extensions m_handoverCommandTransfer_id_AdditionalDLForwardingUPTNLInformation( + in template (value) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList + ) := { + { + id := id_AdditionalDLForwardingUPTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template m_handoverCommandTransfer_id_AdditionalDLForwardingUPTNLInformation + + template (value) HandoverCommandTransfer.iE_Extensions m_handoverCommandTransfer_id_ULForwardingUP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_ULForwardingUP_TNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_handoverCommandTransfer_id_ULForwardingUP_TNLInformation + + template (value) HandoverCommandTransfer.iE_Extensions m_handoverCommandTransfer_id_AdditionalULForwardingUPTNLInformation( + in template (value) UPTransportLayerInformationList p_uPTransportLayerInformationList + ) := { + { + id := id_AdditionalULForwardingUPTNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template m_handoverCommandTransfer_id_AdditionalULForwardingUPTNLInformation + + template (value) HandoverCommandTransfer.iE_Extensions m_handoverCommandTransfer_id_DataForwardingResponseERABList( + in template (value) DataForwardingResponseERABList p_dataForwardingResponseERABList + ) := { + { + id := id_DataForwardingResponseERABList, + criticality := ignore, + extensionValue := { DataForwardingResponseERABList := p_dataForwardingResponseERABList } + } + } // End of template m_handoverCommandTransfer_id_DataForwardingResponseERABList + + template (value) HandoverCommandTransfer.iE_Extensions m_handoverCommandTransfer_id_QosFlowFailedToSetupList( + in template (value) QosFlowListWithCause p_qosFlowListWithCause + ) := { + { + id := id_QosFlowFailedToSetupList, + criticality := ignore, + extensionValue := { QosFlowListWithCause := p_qosFlowListWithCause } + } + } // End of template m_handoverCommandTransfer_id_QosFlowFailedToSetupList + + template (value) HandoverFlag m_handoverFlag(in HandoverFlag p_val := handover_preparation) := p_val; + + template (omit) HandoverPreparationUnsuccessfulTransfer m_mandoverPreparationUnsuccessfulTransfer( + in template (value) Cause p_cause, + in template (omit) HandoverPreparationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_mandoverPreparationUnsuccessfulTransfer + + template (omit) HandoverRequestAcknowledgeTransfer m_handoverRequestAcknowledgeTransfer( + in template (value) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation, + in template (value) QosFlowListWithDataForwarding p_qosFlowSetupResponseList, + in template (omit) UPTransportLayerInformation p_dLForwardingUP_TNLInformation := omit, + in template (omit) SecurityResult p_securityResult := omit, + in template (omit) QosFlowListWithCause p_qosFlowFailedToSetupList := omit, + in template (omit) DataForwardingResponseDRBList p_dataForwardingResponseDRBList := omit, + in template (omit) HandoverRequestAcknowledgeTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + securityResult := p_securityResult, + qosFlowSetupResponseList := p_qosFlowSetupResponseList, + qosFlowFailedToSetupList := p_qosFlowFailedToSetupList, + dataForwardingResponseDRBList := p_dataForwardingResponseDRBList, + iE_Extensions := p_iE_Extensions + } // End of template m_handoverRequestAcknowledgeTransfer + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_AdditionalDLUPTNLInformationForHOList( + in template (value) AdditionalDLUPTNLInformationForHOList p_additionalDLUPTNLInformationForHOList + ) := { + { + id := id_AdditionalDLUPTNLInformationForHOList, + criticality := reject, + extensionValue := { AdditionalDLUPTNLInformationForHOList := p_additionalDLUPTNLInformationForHOList } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_AdditionalDLUPTNLInformationForHOList + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_ULForwardingUP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_ULForwardingUP_TNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_ULForwardingUP_TNLInformation + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_AdditionalULForwardingUPTNLInformation( + in template (value) UPTransportLayerInformationList p_uPTransportLayerInformationList + ) := { + { + id := id_AdditionalULForwardingUPTNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_AdditionalULForwardingUPTNLInformation + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_DataForwardingResponseERABList( + in template (value) DataForwardingResponseERABList p_dataForwardingResponseERABList + ) := { + { + id := id_DataForwardingResponseERABList, + criticality := ignore, + extensionValue := { DataForwardingResponseERABList := p_dataForwardingResponseERABList } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_DataForwardingResponseERABList + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_RedundantDL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_RedundantDL_NGU_UP_TNLInformation + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_UsedRSNInformation( + in template (value) RedundantPDUSessionInformation p_redundantPDUSessionInformation + ) := { + { + id := id_UsedRSNInformation, + criticality := ignore, + extensionValue := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_UsedRSNInformation + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_GlobalRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_GlobalRANNodeID + + template (value) HandoverRequestAcknowledgeTransfer.iE_Extensions m_handoverRequestAcknowledgeTransfer_id_MBS_SupportIndicator( + in template (value) MBS_SupportIndicator p_mBS_SupportIndicator + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template m_handoverRequestAcknowledgeTransfer_id_MBS_SupportIndicator + + template (omit) HandoverRequiredTransfer m_handoverRequiredTransfer( + in template (omit) DirectForwardingPathAvailability p_directForwardingPathAvailability := omit, + in template (omit) HandoverRequiredTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + directForwardingPathAvailability := p_directForwardingPathAvailability, + iE_Extensions := p_iE_Extensions + } // End of template m_handoverRequiredTransfer + + template (omit) HandoverResourceAllocationUnsuccessfulTransfer m_handoverResourceAllocationUnsuccessfulTransfer( + in template (value) Cause p_cause, + in template (omit) CriticalityDiagnostics p_criticalityDiagnostics := omit, + in template (omit) HandoverResourceAllocationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template m_handoverResourceAllocationUnsuccessfulTransfer + + template (value) HandoverType m_handoverType(in HandoverType p_value := intra5gs) := p_value; + + template (omit) HFCNode_ID_new m_hFCNode_ID_new( + in template (value) HFCNode_ID p_hFCNode_ID, + in template (value) TAI p_tAI, + in template (omit) HFCNode_ID_new.iE_Extensions p_iE_Extensions := omit + ) := { + hFCNode_ID := p_hFCNode_ID, + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template m_hFCNode_ID_new + + template (omit) HOReport m_hOReport( + in template (value) HOReport.handoverReportType p_handoverReportType := ho_too_early, + in template (value) Cause p_handoverCause, + in template (value) NGRAN_CGI p_sourcecellCGI, + in template (value) NGRAN_CGI p_targetcellCGI, + in template (omit) NGRAN_CGI p_reestablishmentcellCGI, + in template (omit) Bit16 p_sourcecellC_RNTI := omit, + in template (omit) EUTRA_CGI p_targetcellinE_UTRAN := omit, + in template (omit) MobilityInformation p_mobilityInformation := omit, + in template (omit) UERLFReportContainer p_uERLFReportContainer := omit, + in template (omit) HOReport.iE_Extensions p_iE_Extensions := omit + ) := { + handoverReportType := p_handoverReportType, + handoverCause := p_handoverCause, + sourcecellCGI := p_sourcecellCGI, + targetcellCGI := p_targetcellCGI, + reestablishmentcellCGI := p_reestablishmentcellCGI, + // The above IE shall be present if the Handover Report Type IE is set to the value "HO to wrong cell" + sourcecellC_RNTI := p_sourcecellC_RNTI, + targetcellinE_UTRAN := p_targetcellinE_UTRAN, + // The above IE shall be present if the Handover Report Type IE is set to the value "Inter System ping_pong" + mobilityInformation := p_mobilityInformation, + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template m_hOReport + + template (value) IAB_Authorized m_iAB_Authorized(in IAB_Authorized p_value := authorized) := p_value; + + template (value) IAB_Supported m_iAB_Supported(in IAB_Supported p_value := true_) := p_value; + + template (value) IABNodeIndication m_iABNodeIndication(in IABNodeIndication p_value := true_) := p_value; + + template (value) IMSVoiceSupportIndicator m_iMSVoiceSupportIndicator(in IMSVoiceSupportIndicator p_value := supported) := p_value; + + template (omit) InfoOnRecommendedCellsAndRANNodesForPaging m_infoOnRecommendedCellsAndRANNodesForPaging( + in template (value) RecommendedCellsForPaging p_recommendedCellsForPaging, + in template (value) RecommendedRANNodesForPaging p_recommendRANNodesForPaging, + in template (omit) InfoOnRecommendedCellsAndRANNodesForPaging.iE_Extensions p_iE_Extensions := omit + ) := { + recommendedCellsForPaging := p_recommendedCellsForPaging, + recommendRANNodesForPaging := p_recommendRANNodesForPaging, + iE_Extensions := p_iE_Extensions + } // End of template m_infoOnRecommendedCellsAndRANNodesForPaging + + template (value) IntegrityProtectionIndication m_integrityProtectionIndication(in IntegrityProtectionIndication p_value := required) := p_value; + + template (value) IntegrityProtectionResult m_integrityProtectionResult(in IntegrityProtectionResult p_value := performed) := p_value; + + template (omit) ImmediateMDTNr m_immediateMDTNr( + in template (value) MeasurementsToActivate p_measurementsToActivate, + in template (omit) M1Configuration p_m1Configuration := omit, + in template (omit) M4Configuration p_m4Configuration := omit, + in template (omit) M5Configuration p_m5Configuration := omit, + in template (omit) M6Configuration p_m6Configuration := omit, + in template (omit) M7Configuration p_m7Configuration := omit, + in template (omit) BluetoothMeasurementConfiguration p_bluetoothMeasurementConfiguration := omit, + in template (omit) WLANMeasurementConfiguration p_wLANMeasurementConfiguration := omit, + in template (omit) MDT_Location_Info p_mDT_Location_Info := omit, + in template (omit) SensorMeasurementConfiguration p_sensorMeasurementConfiguration := omit, + in template (omit) ImmediateMDTNr.iE_Extensions p_iE_Extensions := omit + ) := { + measurementsToActivate := p_measurementsToActivate, + m1Configuration := p_m1Configuration, + // The above IE shall be present if the Measurements to Activate IE has the first bit set to “1” + m4Configuration := p_m4Configuration, + // The above IE shall be present if the Measurements to Activate IE has the third bit set to “1” + m5Configuration := p_m5Configuration, + // The above IE shall be present if the Measurements to Activate IE has the fourth bit set to “1” + m6Configuration := p_m6Configuration, + // The above IE shall be present if the Measurements to Activate IE has the fifth bit set to “1” + m7Configuration := p_m7Configuration, + // The above IE shall be present if the Measurements to Activate IE has the sixth bit set to “1” + bluetoothMeasurementConfiguration := p_bluetoothMeasurementConfiguration, + wLANMeasurementConfiguration := p_wLANMeasurementConfiguration, + mDT_Location_Info := p_mDT_Location_Info, + sensorMeasurementConfiguration := p_sensorMeasurementConfiguration, + iE_Extensions := p_iE_Extensions + } // End of template m_immediateMDTNr + + template (omit) InterSystemFailureIndication m_interSystemFailureIndication( + in template (omit) UERLFReportContainer p_uERLFReportContainer := omit, + in template (omit) InterSystemFailureIndication.iE_Extensions p_iE_Extensions := omit + ) := { + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template m_interSystemFailureIndication + + template (omit) IntersystemSONConfigurationTransfer m_intersystemSONConfigurationTransfer( + in template (value) IntersystemSONTransferType p_transferType, + in template (value) IntersystemSONInformation p_intersystemSONInformation, + in template (omit) IntersystemSONConfigurationTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + transferType := p_transferType, + intersystemSONInformation := p_intersystemSONInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemSONConfigurationTransfer + + template (value) IntersystemSONTransferType m_intersystemSONTransferType_fromEUTRANtoNGRAN( + in template (value) FromEUTRANtoNGRAN p_fromEUTRANtoNGRAN + ) := { + fromEUTRANtoNGRAN := p_fromEUTRANtoNGRAN + } // End of template m_intersystemSONTransferType_fromEUTRANtoNGRAN + + template (value) IntersystemSONTransferType m_intersystemSONTransferType_fromNGRANtoEUTRAN( + in template (value) FromNGRANtoEUTRAN p_fromNGRANtoEUTRAN + ) := { + fromNGRANtoEUTRAN := p_fromNGRANtoEUTRAN + } // End of template m_intersystemSONTransferType_fromNGRANtoEUTRAN + + template (value) IntersystemSONTransferType m_intersystemSONTransferType_choice_Extensions( + in template (value) IntersystemSONTransferType.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_intersystemSONTransferType_choice_Extensions + + template (value) IntersystemSONeNBID m_intersystemSONeNBID( + in template (value) GlobalENB_ID p_globaleNBID, + in template (value) EPS_TAI p_selectedEPSTAI, + in template (omit) IntersystemSONeNBID.iE_Extensions p_iE_Extensions := omit + ) := { + globaleNBID := p_globaleNBID, + selectedEPSTAI := p_selectedEPSTAI, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemSONeNBID + + template (value) IntersystemSONNGRANnodeID m_intersystemSONNGRANnodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) TAI p_selectedTAI, + in template (omit) IntersystemSONNGRANnodeID.iE_Extensions p_iE_Extensions := omit + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemSONNGRANnodeID + + template (value) IntersystemSONInformation m_intersystemSONInformation_intersystemSONInformationReport( + in template (value) IntersystemSONInformationReport p_intersystemSONInformationReport + ) := { + intersystemSONInformationReport := p_intersystemSONInformationReport + } // End of template m_intersystemSONInformation_intersystemSONInformationReport + + template (value) IntersystemSONInformation m_intersystemSONInformation_choice_Extensions( + in template (value) IntersystemSONInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_intersystemSONInformation_choice_Extensions + + template (value) IntersystemSONInformation.choice_Extensions m_intersystemSONInformation_id_IntersystemSONInformationRequest( + in template (value) IntersystemSONInformationRequest p_intersystemSONInformationRequest + ) := { + id := id_IntersystemSONInformationRequest, + criticality := ignore, + value_ := { IntersystemSONInformationRequest := p_intersystemSONInformationRequest } + } // End of template m_intersystemSONInformation_id_IntersystemSONInformationRequest + + template (value) IntersystemSONInformation.choice_Extensions m_intersystemSONInformation_id_IntersystemSONInformationReply( + in template (value) IntersystemSONInformationReply p_intersystemSONInformationReply + ) := { + id := id_IntersystemSONInformationReply, + criticality := ignore, + value_ := { IntersystemSONInformationReply := p_intersystemSONInformationReply } + } // End of template m_intersystemSONInformation_id_IntersystemSONInformationReply + + template (value) IntersystemSONInformationRequest m_intersystemSONInformationRequest_nGRAN_CellActivation( + in template (value) IntersystemCellActivationRequest p_nGRAN_CellActivation + ) := { + nGRAN_CellActivation := p_nGRAN_CellActivation + } // End of template m_intersystemSONInformationRequest_nGRAN_CellActivation + + template (value) IntersystemSONInformationRequest m_intersystemSONInformationRequest_resourceStatus( + in template (value) IntersystemResourceStatusRequest p_resourceStatus + ) := { + resourceStatus := p_resourceStatus + } // End of template m_intersystemSONInformationRequest_resourceStatus + + template (value) IntersystemSONInformationRequest m_intersystemSONInformationRequest_choice_Extensions( + in template (value) IntersystemSONInformationRequest.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_intersystemSONInformationRequest_choice_Extensions + + template (omit) IntersystemCellActivationRequest m_intersystemCellActivationRequest( + in template (value) IntersystemCellActivationRequest.activationID p_activationID, + in template (value) CellsToActivateList p_cellsToActivateList, + in template (omit) IntersystemCellActivationRequest.iE_Extensions p_iE_Extensions := omit + ) := { + activationID := p_activationID, + cellsToActivateList := p_cellsToActivateList, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemCellActivationRequest + + template (omit) IntersystemResourceStatusRequest m_intersystemResourceStatusRequest( + in template (value) ReportingSystem p_reportingSystem, + in template (value) ReportCharacteristics p_reportCharacteristics, + in template (value) ReportType p_reportType, + in template (omit) IntersystemResourceStatusRequest.iE_Extensions p_iE_Extensions := omit + ) := { + reportingSystem := p_reportingSystem, + reportCharacteristics := p_reportCharacteristics, + reportType := p_reportType, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemResourceStatusRequest + + template (value) ReportingSystem m_reportingSystem_eUTRAN( + in template (value) EUTRAN_ReportingSystemIEs p_eUTRAN + ) := { + eUTRAN := p_eUTRAN + } // End of template m_reportingSystem_eUTRAN + + template (value) ReportingSystem m_reportingSystem_nGRAN( + in template (value) NGRAN_ReportingSystemIEs p_nGRAN + ) := { + nGRAN := p_nGRAN + } // End of template m_reportingSystem_nGRAN + + template (value) ReportingSystem m_reportingSystem_choice_Extensions( + in template (value) ReportingSystem.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_reportingSystem_choice_Extensions + + template (omit) EUTRAN_ReportingSystemIEs m_eUTRAN_ReportingSystemIEs( + in template (value) EUTRAN_CellToReportList p_eUTRAN_CellToReportList, + in template (omit) EUTRAN_ReportingSystemIEs.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRAN_CellToReportList := p_eUTRAN_CellToReportList, + iE_Extensions := p_iE_Extensions + } // End of template m_eUTRAN_ReportingSystemIEs + + template (omit) NGRAN_ReportingSystemIEs m_nGRAN_ReportingSystemIEs( + in template (value) NGRAN_CellToReportList p_nGRAN_CellToReportList, + in template (omit) NGRAN_ReportingSystemIEs.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CellToReportList := p_nGRAN_CellToReportList, + iE_Extensions := p_iE_Extensions + } // End of template m_nGRAN_ReportingSystemIEs + + template (omit) EUTRAN_CellToReportItem m_eUTRAN_CellToReportItem( + in template (value) EUTRA_CGI p_eCGI, + in template (omit) EUTRAN_CellToReportItem.iE_Extensions p_iE_Extensions := omit + ) := { + eCGI := p_eCGI, + iE_Extensions := p_iE_Extensions + } // End of template m_eUTRAN_CellToReportItem + + template (omit) NGRAN_CellToReportItem m_nGRAN_CellToReportItem( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (omit) NGRAN_CellToReportItem.iE_Extensions p_iE_Extensions := omit + ):= { + nGRAN_CGI := p_nGRAN_CGI, + iE_Extensions := p_iE_Extensions + } // End of template m_nGRAN_CellToReportItem + + template (value) ReportType m_reportType_eventBasedReporting( + in template (value) EventBasedReportingIEs p_eventBasedReporting + ) := { + eventBasedReporting := p_eventBasedReporting + } // End of template m_reportType_eventBasedReporting + + template (value) ReportType m_reportType_periodicReporting( + in template (value) PeriodicReportingIEs p_periodicReporting + ) := { + periodicReporting := p_periodicReporting + } // End of template m_reportType_periodicReporting + + template (value) ReportType m_reportType_choice_Extensions( + in template (value) ReportType.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_reportType_choice_Extensions + + template (value) EventBasedReportingIEs m_eventBasedReportingIEs( + in template (value) IntersystemResourceThreshold p_intersystemResourceThresholdLow, + in template (value) IntersystemResourceThreshold p_intersystemResourceThresholdHigh, + in template (value)NumberOfMeasurementReportingLevels p_numberOfMeasurementReportingLevels, + in template (omit) EventBasedReportingIEs.iE_Extensions p_iE_Extensions := omit + ) := { + intersystemResourceThresholdLow := p_intersystemResourceThresholdLow, + intersystemResourceThresholdHigh := p_intersystemResourceThresholdHigh, + numberOfMeasurementReportingLevels := p_numberOfMeasurementReportingLevels, + iE_Extensions := p_iE_Extensions + } // End of template m_eventBasedReportingIEs + + template (value) NumberOfMeasurementReportingLevels m_numberOfMeasurementReportingLevels(in NumberOfMeasurementReportingLevels p_value := n2) := p_value; + + template (omit) PeriodicReportingIEs m_PeriodicReportingIEs( + in template (value) ReportingPeriodicity p_reportingPeriodicity, + in template (omit) PeriodicReportingIEs.iE_Extensions p_iE_Extensions := omit + ) := { + reportingPeriodicity := p_reportingPeriodicity, + iE_Extensions := p_iE_Extensions + } // End of template m_PeriodicReportingIEs + + template (value) ReportingPeriodicity m_reportingPeriodicity(in ReportingPeriodicity p_value := stop_) := p_value; + + template (value) IntersystemSONInformationReply m_intersystemSONInformationReply_nGRAN_CellActivation( + in template (value) IntersystemCellActivationReply p_nGRAN_CellActivation + ) := { + nGRAN_CellActivation := p_nGRAN_CellActivation + } // End of template m_intersystemSONInformationReply_nGRAN_CellActivation + + template (value) IntersystemSONInformationReply m_intersystemSONInformationReply_resourceStatus( + in template (value) IntersystemResourceStatusReply p_resourceStatus + ) := { + resourceStatus := p_resourceStatus + } // End of template m_intersystemSONInformationReply_resourceStatus + + template (value) IntersystemSONInformationReply m_intersystemSONInformationReply_choice_Extensions( + in template (value) IntersystemSONInformationReply.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_intersystemSONInformationReply_choice_Extensions + + template (omit) IntersystemCellActivationReply m_intersystemCellActivationReply( + in template (value) ActivatedCellList p_activatedCellList, + in template (value) IntersystemCellActivationReply.activation_ID p_activation_ID, + in template (omit) IntersystemCellActivationReply.iE_Extensions p_iE_Extensions := omit + ) := { + activatedCellList := p_activatedCellList, + activation_ID := p_activation_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemCellActivationReply + + template (omit) IntersystemResourceStatusReply m_intersystemResourceStatusReply( + in template (value) ReportingSystem p_reportingsystem, + in template (omit) IntersystemResourceStatusReply.iE_Extensions p_iE_Extensions := omit + ) := { + reportingsystem := p_reportingsystem, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemResourceStatusReply + + template (value) IntersystemSONInformationReport m_intersystemSONInformationReport_hOReportInformation( + in template (value) InterSystemHOReport p_hOReportInformation + ) := { + hOReportInformation := p_hOReportInformation + } // End of template m_intersystemSONInformationReport_hOReportInformation + + template (value) IntersystemSONInformationReport m_intersystemSONInformationReport_failureIndicationInformation( + in template (value) InterSystemFailureIndication p_failureIndicationInformation + ) := { + failureIndicationInformation := p_failureIndicationInformation + } // End of template m_intersystemSONInformationReport_failureIndicationInformation + + template (value) IntersystemSONInformationReport m_intersystemSONInformationReport_choice_Extensions( + in template (value) IntersystemSONInformationReport.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_intersystemSONInformationReport_choice_Extensions + + template (value) IntersystemSONInformationReport.choice_Extensions m_intersystemSONInformationReport_id_EnergySavingIndication( + in template (value) IntersystemCellStateIndication p_intersystemCellStateIndication + ) := { + id := id_EnergySavingIndication, + criticality := ignore, + value_ := { IntersystemCellStateIndication := p_intersystemCellStateIndication } + } // End of template m_intersystemSONInformationReport_id_EnergySavingIndication + + template (value) IntersystemSONInformationReport.choice_Extensions m_intersystemSONInformationReport_id_IntersystemResourceStatusUpdate( + in template (value) IntersystemResourceStatusReport p_intersystemResourceStatusReport + ) := { + id := id_IntersystemResourceStatusUpdate, + criticality := ignore, + value_ := { IntersystemResourceStatusReport := p_intersystemResourceStatusReport } + } // End of template m_intersystemSONInformationReport_id_IntersystemResourceStatusUpdate + + template (omit) NotificationCell_Item m_notificationCell_Item( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (value) NotificationCell_Item.notifyFlag p_notifyFlag := activated, + in template (omit) NotificationCell_Item.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CGI := p_nGRAN_CGI, + notifyFlag := p_notifyFlag, + iE_Extensions := p_iE_Extensions + } // End of template m_notificationCell_Item + + template (omit) IntersystemResourceStatusReport m_intersystemResourceStatusReport( + in template (value) ResourceStatusReportingSystem p_reportingSystem, + in template (omit) IntersystemResourceStatusReport.iE_Extensions p_iE_Extensions := omit + ) := { + reportingSystem := p_reportingSystem, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemResourceStatusReport + + template (value) ResourceStatusReportingSystem m_resourceStatusReportingSystemt_eUTRAN_ReportingStatus( + in template (value) EUTRAN_ReportingStatusIEs p_eUTRAN_ReportingStatus + ) := { + eUTRAN_ReportingStatus := p_eUTRAN_ReportingStatus + } // End of template m_resourceStatusReportingSystem_eUTRAN_ReportingStatus + + template (value) ResourceStatusReportingSystem m_resourceStatusReportingSystemt_nGRAN_ReportingStatus( + in template (value) NGRAN_ReportingStatusIEs p_nGRAN_ReportingStatus + ) := { + nGRAN_ReportingStatus := p_nGRAN_ReportingStatus + } // End of template m_resourceStatusReportingSystem_nGRAN_ReportingStatus + + template (value) ResourceStatusReportingSystem m_resourceStatusReportingSystem_choice_Extensions( + in template (value) ResourceStatusReportingSystem.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_resourceStatusReportingSystem_choice_Extensions + + template (omit) EUTRAN_ReportingStatusIEs m_eUTRAN_ReportingStatusIEs( + in template (value) EUTRAN_CellReportList p_eUTRAN_CellReportList, + in template (omit) EUTRAN_ReportingStatusIEs.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRAN_CellReportList := p_eUTRAN_CellReportList, + iE_Extensions := p_iE_Extensions + } // End of template m_eUTRAN_ReportingStatusIEs + + template (omit) EUTRAN_CellReportItem m_eUTRAN_CellReportItem ( + in template (value) EUTRA_CGI p_eCGI, + in template (value) EUTRAN_CompositeAvailableCapacityGroup p_eUTRAN_CompositeAvailableCapacityGroup, + in template (omit) EUTRAN_NumberOfActiveUEs p_eUTRAN_NumberOfActiveUEs := omit, + in template (omit) NGRAN_NoofRRCConnections p_eUTRAN_NoofRRCConnections := omit, + in template (omit) EUTRAN_RadioResourceStatus p_eUTRAN_RadioResourceStatus := omit, + in template (omit) EUTRAN_CellReportItem.iE_Extensions p_iE_Extensions := omit + ):= { + eCGI := p_eCGI, + eUTRAN_CompositeAvailableCapacityGroup := p_eUTRAN_CompositeAvailableCapacityGroup, + eUTRAN_NumberOfActiveUEs := p_eUTRAN_NumberOfActiveUEs, + eUTRAN_NoofRRCConnections := p_eUTRAN_NoofRRCConnections, + eUTRAN_RadioResourceStatus := p_eUTRAN_RadioResourceStatus, + iE_Extensions := p_iE_Extensions + } // End of template m_eUTRAN_ReportingStatusIEs + + template (omit) EUTRAN_CompositeAvailableCapacityGroup m_EUTRAN_CompositeAvailableCapacityGroup( + in template (value) CompositeAvailableCapacity p_dL_CompositeAvailableCapacity, + in template (value) CompositeAvailableCapacity p_uL_CompositeAvailableCapacity, + in template (omit) EUTRAN_CompositeAvailableCapacityGroup.iE_Extensions p_iE_Extensions := omit + ) := { + dL_CompositeAvailableCapacity := p_dL_CompositeAvailableCapacity, + uL_CompositeAvailableCapacity := p_uL_CompositeAvailableCapacity, + iE_Extensions := p_iE_Extensions + } // End of template m_EUTRAN_CompositeAvailableCapacityGroup + + template (omit) CompositeAvailableCapacity m_compositeAvailableCapacity( + in template (value) CompositeAvailableCapacity.capacityValue p_capacityValue, + in template (omit) CompositeAvailableCapacity.cellCapacityClassValue p_cellCapacityClassValue := omit, + in template (omit) CompositeAvailableCapacity.iE_Extensions p_iE_Extensions := omit + ) := { + cellCapacityClassValue := p_cellCapacityClassValue, + capacityValue := p_capacityValue, + iE_Extensions := p_iE_Extensions + } // End of template m_compositeAvailableCapacity + + template (omit) EUTRAN_RadioResourceStatus m_eUTRAN_RadioResourceStatus( + in template (value) EUTRAN_RadioResourceStatus.dL_GBR_PRB_usage p_dL_GBR_PRB_usage, + in template (value) EUTRAN_RadioResourceStatus.uL_GBR_PRB_usage p_uL_GBR_PRB_usage, + in template (value) EUTRAN_RadioResourceStatus.dL_non_GBR_PRB_usage p_dL_non_GBR_PRB_usage, + in template (value) EUTRAN_RadioResourceStatus.uL_non_GBR_PRB_usage p_uL_non_GBR_PRB_usage, + in template (value) EUTRAN_RadioResourceStatus.dL_Total_PRB_usage p_dL_Total_PRB_usage, + in template (value) EUTRAN_RadioResourceStatus.uL_Total_PRB_usage p_uL_Total_PRB_usage, + in template (omit) EUTRAN_RadioResourceStatus.dL_scheduling_PDCCH_CCE_usage p_dL_scheduling_PDCCH_CCE_usage := omit, + in template (omit) EUTRAN_RadioResourceStatus.uL_scheduling_PDCCH_CCE_usage p_uL_scheduling_PDCCH_CCE_usage := omit, + in template (omit) EUTRAN_RadioResourceStatus.iE_Extensions p_iE_Extensions := omit + ) := { + dL_GBR_PRB_usage := p_dL_GBR_PRB_usage, + uL_GBR_PRB_usage := p_uL_GBR_PRB_usage, + dL_non_GBR_PRB_usage := p_dL_non_GBR_PRB_usage, + uL_non_GBR_PRB_usage := p_uL_non_GBR_PRB_usage, + dL_Total_PRB_usage := p_dL_Total_PRB_usage, + uL_Total_PRB_usage := p_uL_Total_PRB_usage, + dL_scheduling_PDCCH_CCE_usage := p_dL_scheduling_PDCCH_CCE_usage, + uL_scheduling_PDCCH_CCE_usage := p_uL_scheduling_PDCCH_CCE_usage, + iE_Extensions := p_iE_Extensions + } // End of template m_eUTRAN_RadioResourceStatus + + template (omit) NGRAN_ReportingStatusIEs m_nGRAN_ReportingStatusIEs( + in template (value) NGRAN_CellReportList p_nGRAN_CellReportList, + in template (omit) NGRAN_ReportingStatusIEs.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CellReportList := p_nGRAN_CellReportList, + iE_Extensions := p_iE_Extensions + } // End of template m_nGRAN_ReportingStatusIEs + + template (omit) NGRAN_CellReportItem m_nGRAN_CellReportItem( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (value) EUTRAN_CompositeAvailableCapacityGroup p_nGRAN_CompositeAvailableCapacityGroup, + in template (omit) NGRAN_NumberOfActiveUEs p_nGRAN_NumberOfActiveUEs := omit, + in template (omit) NGRAN_NoofRRCConnections p_nGRAN_NoofRRCConnections := omit, + in template (omit) NGRAN_RadioResourceStatus p_nGRAN_RadioResourceStatus := omit, + in template (omit) NGRAN_CellReportItem.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CGI := p_nGRAN_CGI, + nGRAN_CompositeAvailableCapacityGroup := p_nGRAN_CompositeAvailableCapacityGroup, + nGRAN_NumberOfActiveUEs := p_nGRAN_NumberOfActiveUEs, + nGRAN_NoofRRCConnections := p_nGRAN_NoofRRCConnections, + nGRAN_RadioResourceStatus := p_nGRAN_RadioResourceStatus, + iE_Extensions := p_iE_Extensions + } // End of template m_nGRAN_CellReportItem + + template (omit) NGRAN_RadioResourceStatus m_nGRAN_RadioResourceStatus( + in template (value) NGRAN_RadioResourceStatus.dL_GBR_PRB_usage_for_MIMO p_dL_GBR_PRB_usage_for_MIMO, + in template (value) NGRAN_RadioResourceStatus.uL_GBR_PRB_usage_for_MIMO p_uL_GBR_PRB_usage_for_MIMO, + in template (value) NGRAN_RadioResourceStatus.dL_non_GBR_PRB_usage_for_MIMO p_dL_non_GBR_PRB_usage_for_MIMO, + in template (value) NGRAN_RadioResourceStatus.uL_non_GBR_PRB_usage_for_MIMO p_uL_non_GBR_PRB_usage_for_MIMO, + in template (value) NGRAN_RadioResourceStatus.dL_Total_PRB_usage_for_MIMO p_dL_Total_PRB_usage_for_MIMO, + in template (value) NGRAN_RadioResourceStatus.uL_Total_PRB_usage_for_MIMO p_uL_Total_PRB_usage_for_MIMO, + in template (omit) NGRAN_RadioResourceStatus.iE_Extensions p_iE_Extensions := omit + ) := { + dL_GBR_PRB_usage_for_MIMO := p_dL_GBR_PRB_usage_for_MIMO, + uL_GBR_PRB_usage_for_MIMO := p_uL_GBR_PRB_usage_for_MIMO, + dL_non_GBR_PRB_usage_for_MIMO := p_dL_non_GBR_PRB_usage_for_MIMO, + uL_non_GBR_PRB_usage_for_MIMO := p_uL_non_GBR_PRB_usage_for_MIMO, + dL_Total_PRB_usage_for_MIMO := p_dL_Total_PRB_usage_for_MIMO, + uL_Total_PRB_usage_for_MIMO := p_uL_Total_PRB_usage_for_MIMO, + iE_Extensions := p_iE_Extensions + } // End of template m_nGRAN_RadioResourceStatus + + template (omit) InterSystemHOReport m_interSystemHOReport( + in template (value) InterSystemHandoverReportType p_handoverReportType, + in template (omit) InterSystemHOReport.iE_Extensions p_iE_Extensions := omit + ) := { + handoverReportType := p_handoverReportType, + iE_Extensions := p_iE_Extensions + } // End of template m_interSystemHOReport + + template (value) InterSystemHandoverReportType m_interSystemHandoverReportType_tooearlyIntersystemHO( + in template (value) TooearlyIntersystemHO p_tooearlyIntersystemHO + ) := { + tooearlyIntersystemHO := p_tooearlyIntersystemHO + } // End of template m_interSystemHandoverReportType_tooearlyIntersystemHO + + template (value) InterSystemHandoverReportType m_interSystemHandoverReportType_intersystemUnnecessaryHO( + in template (value) IntersystemUnnecessaryHO p_intersystemUnnecessaryHO + ) := { + intersystemUnnecessaryHO := p_intersystemUnnecessaryHO + } // End of template m_interSystemHandoverReportType_intersystemUnnecessaryHO + + template (value) InterSystemHandoverReportType m_interSystemHandoverReportType_choice_Extensions( + in template (value) InterSystemHandoverReportType.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_interSystemHandoverReportType_choice_Extensions + + template (omit) IntersystemUnnecessaryHO m_intersystemUnnecessaryHO( + in template (value) NGRAN_CGI p_sourcecellID, + in template (value) EUTRA_CGI p_targetcellID, + in template (value) IntersystemUnnecessaryHO.earlyIRATHO p_earlyIRATHO := true_, + in template (value) CandidateCellList p_candidateCellList, + in template (omit) IntersystemUnnecessaryHO.iE_Extensions p_iE_Extensions := omit + ) := { + sourcecellID := p_sourcecellID, + targetcellID := p_targetcellID, + earlyIRATHO := p_earlyIRATHO, + candidateCellList := p_candidateCellList, + iE_Extensions := p_iE_Extensions + } // End of template m_intersystemUnnecessaryHO + + template (omit) LAI m_lai( + in template (value) PLMNIdentity p_pLMNidentity, + in template (value) LAC p_lAC, + in template (omit) LAI.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNidentity := p_pLMNidentity, + lAC := p_lAC, + iE_Extensions := p_iE_Extensions + } // End of template m_lai + + template (value) LastVisitedCellInformation m_interSystemHandoverReportType_nGRANCell( + in template (value) LastVisitedNGRANCellInformation p_nGRANCell + ) := { + nGRANCell := p_nGRANCell + } // End of template m_interSystemHandoverReportType_nGRANCell + + template (value) LastVisitedCellInformation m_interSystemHandoverReportType_eUTRANCell( + in template (value) LastVisitedEUTRANCellInformation p_eUTRANCell + ) := { + eUTRANCell := p_eUTRANCell + } // End of template m_interSystemHandoverReportType_eUTRANCell + + template (value) LastVisitedCellInformation m_interSystemHandoverReportType_uTRANCell( + in template (value) LastVisitedUTRANCellInformation p_uTRANCell + ) := { + uTRANCell := p_uTRANCell + } // End of template m_interSystemHandoverReportType_uTRANCell + + template (value) LastVisitedCellInformation m_interSystemHandoverReportType_gERANCell( + in template (value) LastVisitedGERANCellInformation p_gERANCell + ) := { + gERANCell := p_gERANCell + } // End of template m_interSystemHandoverReportType_gERANCell + + template (value) LastVisitedCellInformation m_lastVisitedCellInformation_choice_Extensions( + in template (value) LastVisitedCellInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_lastVisitedCellInformation_choice_Extensions + + template (omit) LastVisitedCellItem m_lastVisitedCellItem( + in template (value) LastVisitedCellInformation p_lastVisitedCellInformation, + in template (omit) LastVisitedCellItem.iE_Extensions p_iE_Extensions := omit + ) := { + lastVisitedCellInformation := p_lastVisitedCellInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_lastVisitedCellItem + + template (omit) LastVisitedNGRANCellInformation m_lastVisitedNGRANCellInformation( + in template (value) NGRAN_CGI p_globalCellID, + in template (value) CellType p_cellType, + in template (value) TimeUEStayedInCell p_timeUEStayedInCell, + in template (omit) TimeUEStayedInCellEnhancedGranularity p_timeUEStayedInCellEnhancedGranularity := omit, + in template (omit) Cause p_hOCauseValue := omit, + in template (omit) LastVisitedNGRANCellInformation.iE_Extensions p_iE_Extensions := omit + ) := { + globalCellID := p_globalCellID, + cellType := p_cellType, + timeUEStayedInCell := p_timeUEStayedInCell, + timeUEStayedInCellEnhancedGranularity := p_timeUEStayedInCellEnhancedGranularity, + hOCauseValue := p_hOCauseValue, + iE_Extensions := p_iE_Extensions + } // End of template m_lastVisitedNGRANCellInformation + + template (value) LastVisitedNGRANCellInformation.iE_Extensions m_lastVisitedNGRANCellInformation_id_LastVisitedPSCellList( + in template (value) LastVisitedPSCellList p_lastVisitedPSCellList + ) := { + { + id := id_LastVisitedPSCellList, + criticality := ignore, + extensionValue := { LastVisitedPSCellList := p_lastVisitedPSCellList } + } + } // End of template m_lastVisitedNGRANCellInformation_id_LastVisitedPSCellList + + template (omit) LastVisitedPSCellInformation m_LastVisitedPSCellInformation( + in template (value) NGRAN_CGI p_pSCellID, + in template (value) LastVisitedPSCellInformation.timeStay p_timeStay, + in template (omit) LastVisitedPSCellInformation.iE_Extensions p_iE_Extensions := omit + ) := { + pSCellID := p_pSCellID, + timeStay := p_timeStay, + iE_Extensions := p_iE_Extensions + } // End of template m_LastVisitedPSCellInformation + + template (value) LineType m_lineType(in LineType p_value := pon) := p_value; + + template (value) LocationReportingAdditionalInfo m_locationReportingAdditionalInfo(in LocationReportingAdditionalInfo p_value := includePSCell) := p_value; + + template (omit) LocationReportingRequestType m_locationReportingRequestType( + in template (value) EventType p_eventType, + in template (value) ReportArea p_reportArea, + in template (omit) AreaOfInterestList p_areaOfInterestList := omit, + in template (omit) LocationReportingReferenceID p_locationReportingReferenceIDToBeCancelled := omit, + in template (omit) LocationReportingRequestType.iE_Extensions p_iE_Extensions := omit + ) := { + eventType := p_eventType, + reportArea := p_reportArea, + areaOfInterestList := p_areaOfInterestList, + locationReportingReferenceIDToBeCancelled := p_locationReportingReferenceIDToBeCancelled, + // The above IE shall be present if the event type is set to “stop reporting UE presence in the area of interest” + iE_Extensions := p_iE_Extensions + } // End of template m_locationReportingRequestType + + template (value) LocationReportingRequestType.iE_Extensions m_locationReportingRequestType_id_LocationReportingAdditionalInfo( + in template (value) LocationReportingAdditionalInfo p_locationReportingAdditionalInfo + ) := { + { + id := id_LocationReportingAdditionalInfo, + criticality := ignore, + extensionValue := { LocationReportingAdditionalInfo := p_locationReportingAdditionalInfo } + } + } // End of template m_locationReportingRequestType_id_LocationReportingAdditionalInfo + + template (omit) LoggedMDTNr m_loggedMDTNr( + in template (value) LoggingInterval p_loggingInterval, + in template (value) LoggingDuration p_loggingDuration, + in template (value) LoggedMDTTrigger p_loggedMDTTrigger, + in template (omit) BluetoothMeasurementConfiguration p_bluetoothMeasurementConfiguration := omit, + in template (omit) WLANMeasurementConfiguration p_wLANMeasurementConfiguration := omit, + in template (omit) SensorMeasurementConfiguration p_sensorMeasurementConfiguration := omit, + in template (omit) AreaScopeOfNeighCellsList p_areaScopeOfNeighCellsList := omit, + in template (omit) LoggedMDTNr.iE_Extensions p_iE_Extensions := omit + ) := { + loggingInterval := p_loggingInterval, + loggingDuration := p_loggingDuration, + loggedMDTTrigger := p_loggedMDTTrigger, + bluetoothMeasurementConfiguration := p_bluetoothMeasurementConfiguration, + wLANMeasurementConfiguration := p_wLANMeasurementConfiguration, + sensorMeasurementConfiguration := p_sensorMeasurementConfiguration, + areaScopeOfNeighCellsList := p_areaScopeOfNeighCellsList, + iE_Extensions := p_iE_Extensions + } // End of template m_loggedMDTNr + + template (value) LoggingInterval m_loggingInterval(in LoggingInterval p_value := ms320) := p_value; + + template (value) LoggingDuration m_loggingDuration(in LoggingDuration p_value := m10) := p_value; + + template (value) Links_to_log m_Links_to_log(in Links_to_log p_value := uplink) := p_value; + + template (value) LoggedMDTTrigger m_loggedMDTTrigger_gERANCell( + in template (value) EventTrigger p_eventTrigger + ) := { + eventTrigger := p_eventTrigger + } // End of template m_loggedMDTTrigger_gERANCell + + template (value) LoggedMDTTrigger m_loggedMDTTrigger_choice_Extensions( + in template (value) LoggedMDTTrigger.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_loggedMDTTrigger_choice_Extensions + + template (value) LTEM_Indication m_lTEM_Indication(in LTEM_Indication p_value := lte_m) := p_value; + + template (omit) LTEV2XServicesAuthorized m_lTEV2XServicesAuthorized( + in template (omit) VehicleUE p_vehicleUE := omit, + in template (omit) PedestrianUE p_pedestrianUE:= omit, + in template (omit) LTEV2XServicesAuthorized.iE_Extensions p_iE_Extensions := omit + ) := { + vehicleUE := p_vehicleUE, + pedestrianUE := p_pedestrianUE, + iE_Extensions := p_iE_Extensions + } // End of template m_lTEV2XServicesAuthorized + + template (omit) LTEUESidelinkAggregateMaximumBitrate m_lTEUESidelinkAggregateMaximumBitrate( + in template (value) BitRate p_uESidelinkAggregateMaximumBitRate := PX_UE_SIDELINK_AGGREGATE_MAXIMUM_BIT_RATE, + in template (omit) LTEUESidelinkAggregateMaximumBitrate.iE_Extensions p_iE_Extensions := omit + ) := { + uESidelinkAggregateMaximumBitRate := p_uESidelinkAggregateMaximumBitRate, + iE_Extensions := p_iE_Extensions + } // End of template m_lTEUESidelinkAggregateMaximumBitrate + + template (value) MaximumIntegrityProtectedDataRate m_maximumIntegrityProtectedDataRate(in MaximumIntegrityProtectedDataRate p_value := bitrate64kbs) := p_value; + + template (omit) MBS_DataForwardingResponseMRBItem m_mBS_DataForwardingResponseMRBItem( + in template (value) MRB_ID p_mRB_ID, + in template (value) UPTransportLayerInformation p_dL_Forwarding_UPTNLInformation, + in template (omit) MRB_ProgressInformation p_mRB_ProgressInformation := omit, + in template (omit) MBS_DataForwardingResponseMRBItem.iE_Extensions p_iE_Extensions := omit + ) := { + mRB_ID := p_mRB_ID, + dL_Forwarding_UPTNLInformation := p_dL_Forwarding_UPTNLInformation, + mRB_ProgressInformation := p_mRB_ProgressInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_DataForwardingResponseMRBItem + + template (omit) MBS_MappingandDataForwardingRequestItem m_mBS_MappingandDataForwardingRequestItem( + in template (value) MRB_ID p_mRB_ID, + in template (value) MBS_QoSFlowList p_mBS_QoSFlowList, + in template (omit) MRB_ProgressInformation p_mRB_ProgressInformation := omit, + in template (omit) MBS_MappingandDataForwardingRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + mRB_ID := p_mRB_ID, + mBS_QoSFlowList := p_mBS_QoSFlowList, + mRB_ProgressInformation := p_mRB_ProgressInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_MappingandDataForwardingRequestItem + + template (value) MRB_ProgressInformation m_mRB_ProgressInformation_pDCP_SN_Length12( + in template (value) MRB_ProgressInformation.pDCP_SN_Length12 p_pDCP_SN_Length12 + ) := { + pDCP_SN_Length12 := p_pDCP_SN_Length12 + } // End of template m_mRB_ProgressInformation_pDCP_SN_Length12 + + template (value) MRB_ProgressInformation m_mRB_ProgressInformation_pDCP_SN_Length18( + in template (value) MRB_ProgressInformation.pDCP_SN_Length18 p_pDCP_SN_Length18 + ) := { + pDCP_SN_Length18 := p_pDCP_SN_Length18 + } // End of template m_mRB_ProgressInformation_pDCP_SN_Length18 + + template (value) MRB_ProgressInformation m_mRB_ProgressInformation_choice_Extensions( + in template (value) MRB_ProgressInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_mRB_ProgressInformation_choice_Extensions + + template (omit) MBS_QoSFlowsToBeSetupItem m_mBS_QoSFlowsToBeSetupItem( + in template (value)QosFlowIdentifier p_mBSqosFlowIdentifier, + in template (value)QosFlowLevelQosParameters p_mBSqosFlowLevelQosParameters, + in template (omit) MBS_QoSFlowsToBeSetupItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBSqosFlowIdentifier := p_mBSqosFlowIdentifier, + mBSqosFlowLevelQosParameters := p_mBSqosFlowLevelQosParameters, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_QoSFlowsToBeSetupItem + + template (value) MBS_ServiceArea m_mBS_ServiceArea_locationindependent( + in template (value) MBS_ServiceAreaInformation p_locationindependent + ) := { + locationindependent := p_locationindependent + } // End of template m_mBS_ServiceArea_locationindependent + + template (value) MBS_ServiceArea m_mBS_ServiceArea_locationdependent( + in template (value) MBS_ServiceAreaInformationList p_locationdependent + ) := { + locationdependent := p_locationdependent + } // End of template m_mBS_ServiceArea_locationdependent + + template (value) MBS_ServiceArea m_mBS_ServiceArea_choice_Extensions( + in template (value) MBS_ServiceArea.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_mBS_ServiceArea_choice_Extensions + + template (omit) MBS_ServiceAreaInformationItem m_mBS_ServiceAreaInformationItem( + in template (value) MBS_AreaSessionID p_mBS_AreaSessionID, + in template (value) MBS_ServiceAreaInformation p_mBS_ServiceAreaInformation, + in template (omit) MBS_ServiceAreaInformationItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_AreaSessionID := p_mBS_AreaSessionID, + mBS_ServiceAreaInformation := p_mBS_ServiceAreaInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_ServiceAreaInformationItem + + template (omit) MBS_ServiceAreaInformation m_mBS_ServiceAreaInformation( + in template (omit) MBS_ServiceAreaCellList p_mBS_ServiceAreaCellList := omit, + in template (omit) MBS_ServiceAreaTAIList p_mBS_ServiceAreaTAIList := omit, + in template (omit) MBS_ServiceAreaInformation.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_ServiceAreaCellList := p_mBS_ServiceAreaCellList, + mBS_ServiceAreaTAIList := p_mBS_ServiceAreaTAIList, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_ServiceAreaInformation + + template (omit) MBS_SessionID m_mBS_SessionID( + in template (value) TMGI p_tMGI, + in template (omit) NID p_nID := omit, + in template (omit) MBS_SessionID.iE_Extensions p_iE_Extensions := omit + ) := { + tMGI := p_tMGI, + nID := p_nID, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_SessionID + + template (omit) MBSSessionFailedtoSetupItem m_mBSSessionFailedtoSetupItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (value) Cause p_cause, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) MBSSessionFailedtoSetupItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionFailedtoSetupItem + + template (omit) MBS_ActiveSessionInformation_SourcetoTargetItem m_mBS_ActiveSessionInformation_SourcetoTargetItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (value) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) MBS_ServiceArea p_mBS_ServiceArea := omit, + in template (omit) MBS_MappingandDataForwardingRequestList p_mBS_MappingandDataForwardingRequestList := omit, + in template (omit) MBS_ActiveSessionInformation_SourcetoTargetItem.iE_Extensions p_iE_Extensions := omit + ):= { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + mBS_ServiceArea := p_mBS_ServiceArea, + mBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList, + mBS_MappingandDataForwardingRequestList := p_mBS_MappingandDataForwardingRequestList, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_ActiveSessionInformation_SourcetoTargetItem + + template (omit) MBS_ActiveSessionInformation_TargettoSourceItem m_mBS_ActiveSessionInformation_TargettoSourceItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MBS_DataForwardingResponseMRBList p_mBS_DataForwardingResponseMRBList := omit, + in template (omit) MBS_ActiveSessionInformation_TargettoSourceItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_DataForwardingResponseMRBList := p_mBS_DataForwardingResponseMRBList, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_ActiveSessionInformation_TargettoSourceItem + + template (omit) MBSSessionSetupOrModFailureTransfer m_mBSSessionSetupOrModFailureTransfer( + in template (value) Cause p_cause, + in template (omit) CriticalityDiagnostics p_criticalityDiagnostics := omit, + in template (omit) MBSSessionSetupOrModFailureTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionSetupOrModFailureTransfer + + template (omit) MBSSessionSetupResponseItem m_mBSSessionSetupResponseItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) MBSSessionSetupResponseItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionSetupResponseItem + + template (value) MBSSessionSetupOrModRequestTransfer m_mBSSessionSetupOrModRequestTransfer( + in template (value) MBSSessionSetupOrModRequestTransfer.protocolIEs p_protocolIEs + ) := { + protocolIEs := p_protocolIEs + } // End of template m_mBSSessionSetupOrModRequestTransfer + + template (value) MBSSessionSetupOrModRequestTransfer m_mBSSessionSetupOrModRequestTransfer_options( + in template (value) MBS_SessionTNLInfo5GC p_mBS_SessionTNLInfo5GC, + in template (value) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList, + in template (value) MBS_SessionFSAIDList p_mBS_SessionFSAIDList + ) := { + protocolIEs := { + { + id := id_MBS_SessionTNLInfo5GC, + criticality := reject, + value_ := { MBS_SessionTNLInfo5GC := p_mBS_SessionTNLInfo5GC } + }, + { + id := id_MBS_QoSFlowsToBeSetupModList, + criticality := reject, + value_ := { MBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList } + }, + { + id := id_MBS_SessionFSAIDList, + criticality := ignore, + value_ := { MBS_SessionFSAIDList := p_mBS_SessionFSAIDList } + } + } + } // End of template m_mBSSessionSetupOrModRequestTransfer_options + + template (omit) MBSSessionReleaseResponseTransfer m_mBSSessionReleaseResponseTransfer( + in template (omit) MBS_SessionTNLInfoNGRAN p_mBS_SessionTNLInfoNGRAN := omit, + in template (omit) MBSSessionReleaseResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionTNLInfoNGRAN := p_mBS_SessionTNLInfoNGRAN, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionReleaseResponseTransfer + + template (omit) MBSSessionSetupOrModResponseTransfer m_mBSSessionSetupOrModResponseTransfer( + in template (omit) MBS_SessionTNLInfoNGRAN p_mBS_SessionTNLInfoNGRAN := omit, + in template (omit) MBSSessionSetupOrModResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionTNLInfoNGRAN := p_mBS_SessionTNLInfoNGRAN, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionSetupOrModResponseTransfer + + template (value) MBS_SupportIndicator m_mBS_SupportIndicator(in MBS_SupportIndicator p_value := true_) := p_value; + + template (value) MBS_SessionTNLInfo5GC m_mBS_SessionTNLInfo5GC_locationindependent( + in template (value) SharedNGU_MulticastTNLInformation p_locationindependent + ) := { + locationindependent := p_locationindependent + } // End of template m_mBS_SessionTNLInfo5GC_locationindependent + + template (value) MBS_SessionTNLInfo5GC m_mBS_SessionTNLInfo5GC_locationdependent( + in template (value) MBS_SessionTNLInfo5GCList p_locationdependent + ) := { + locationdependent := p_locationdependent + } // End of template m_mBS_SessionTNLInfo5GC_locationdependent + + template (value) MBS_SessionTNLInfo5GC m_mBS_SessionTNLInfo5GC_choice_Extensions( + in template (value) MBS_SessionTNLInfo5GC.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_mBS_SessionTNLInfo5GC_choice_Extensions + + template (omit) MBS_SessionTNLInfo5GCItem m_mBS_SessionTNLInfo5GCItem( + in template (value) MBS_AreaSessionID p_mBS_AreaSessionID, + in template (value) SharedNGU_MulticastTNLInformation p_sharedNGU_MulticastTNLInformation, + in template (omit) MBS_SessionTNLInfo5GCItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_MulticastTNLInformation := p_sharedNGU_MulticastTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_SessionTNLInfo5GCItem + + template (value) MBS_SessionTNLInfoNGRAN m_mBS_SessionTNLInfoNGRAN_locationindependent( + in template (value) UPTransportLayerInformation p_locationindependent + ) := { + locationindependent := p_locationindependent + } // End of template m_mBS_SessionTNLInfoNGRAN_locationindependent + + template (value) MBS_SessionTNLInfoNGRAN m_mBS_SessionTNLInfoNGRAN_locationdependent( + in template (value) MBS_SessionTNLInfoNGRANList p_locationdependent + ) := { + locationdependent := p_locationdependent + } // End of template m_mBS_SessionTNLInfoNGRAN_locationdependent + + template (value) MBS_SessionTNLInfoNGRAN m_mBS_SessionTNLInfoNGRAN_choice_Extensions( + in template (value) MBS_SessionTNLInfoNGRAN.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_mBS_SessionTNLInfoNGRAN_choice_Extensions + + template (omit) MBS_SessionTNLInfoNGRANItem m_mBS_SessionTNLInfoNGRANItem( + in template (value) MBS_AreaSessionID p_mBS_AreaSessionID, + in template (omit) UPTransportLayerInformation p_sharedNGU_UnicastTNLInformation := omit, + in template (omit) MBS_SessionTNLInfoNGRANItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_UnicastTNLInformation := p_sharedNGU_UnicastTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_SessionTNLInfoNGRANItem + + template (omit) MBS_DistributionReleaseRequestTransfer m_mBS_DistributionReleaseRequestTransfer( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (value) Cause p_cause, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) UPTransportLayerInformation p_sharedNGU_UnicastTNLInformation := omit, + in template (omit) MBS_DistributionReleaseRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_UnicastTNLInformation := p_sharedNGU_UnicastTNLInformation, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_DistributionReleaseRequestTransfer + + template (omit) MBS_DistributionSetupRequestTransfer m_mBS_DistributionSetupRequestTransfer( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) UPTransportLayerInformation p_sharedNGU_UnicastTNLInformation := omit, + in template (omit) MBS_DistributionSetupRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_UnicastTNLInformation := p_sharedNGU_UnicastTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_DistributionSetupRequestTransfer + + template (omit) MBS_DistributionSetupResponseTransfer m_mBS_DistributionSetupResponseTransfer( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (value) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList, + in template (value) MBSSessionStatus p_mBSSessionStatus, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) MBS_SessionTNLInfo5GCItem p_sharedNGU_MulticastTNLInformation := omit, + in template (omit) MBS_ServiceArea p_mBS_ServiceArea := omit, + in template (omit) MBS_DistributionSetupResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_MulticastTNLInformation := p_sharedNGU_MulticastTNLInformation, + mBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList, + mBSSessionStatus := p_mBSSessionStatus, + mBS_ServiceArea := p_mBS_ServiceArea, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_DistributionSetupResponseTransfer + + template (omit) MBS_DistributionSetupUnsuccessfulTransfer m_mBS_DistributionSetupUnsuccessfulTransfer( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (value) Cause p_cause, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) CriticalityDiagnostics p_criticalityDiagnostics := omit, + in template (omit) MBS_DistributionSetupUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template m_mBS_DistributionSetupUnsuccessfulTransfer + + template (omit) MBSSessionSetupRequestItem m_mBSSessionSetupRequestItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) AssociatedMBSQosFlowSetupRequestList p_associatedMBSQosFlowSetupRequestList := omit, + in template (omit) MBSSessionSetupRequestItem.iE_Extensions p_iE_Extensions := omit + ):= { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + associatedMBSQosFlowSetupRequestList := p_associatedMBSQosFlowSetupRequestList, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionSetupRequestItem + + template (omit) MBSSessionSetuporModifyRequestItem m_mBSSessionSetuporModifyRequestItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MBS_AreaSessionID p_mBS_AreaSessionID := omit, + in template (omit) AssociatedMBSQosFlowSetuporModifyRequestList p_associatedMBSQosFlowSetuporModifyRequestList := omit, + in template (omit) QosFlowListWithCause p_mBS_QosFlowToReleaseList := omit, + in template (omit) MBSSessionSetuporModifyRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + associatedMBSQosFlowSetuporModifyRequestList := p_associatedMBSQosFlowSetuporModifyRequestList, + mBS_QosFlowToReleaseList := p_mBS_QosFlowToReleaseList, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionSetuporModifyRequestItem + + template (omit) MBSSessionToReleaseItem m_mBSSessionToReleaseItem( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (value) Cause p_cause, + in template (omit) MBSSessionToReleaseItem.iE_Extensions p_iE_Extensions := omit + ):= { + mBS_SessionID := p_mBS_SessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_mBSSessionToReleaseItem + + template (value) MBSSessionStatus m_mBSSessionStatus(in MBSSessionStatus p_value := activated) := p_value; + + template (value) MicoAllPLMN m_micoAllPLMN(in MicoAllPLMN p_value := true_) := p_value; + + template (value) MICOModeIndication m_mICOModeIndication(in MICOModeIndication p_value := true_) := p_value; + + template (omit) MobilityRestrictionList m_mobilityRestrictionList( + in template (value) PLMNIdentity p_servingPLMN, + in template (omit) EquivalentPLMNs p_equivalentPLMNs := omit, + in template (omit) RATRestrictions p_rATRestrictions := omit, + in template (omit) ForbiddenAreaInformation p_forbiddenAreaInformation := omit, + in template (omit) ServiceAreaInformation p_serviceAreaInformation := omit, + in template (omit) MobilityRestrictionList.iE_Extensions p_iE_Extensions := omit + ) := { + servingPLMN := p_servingPLMN, + equivalentPLMNs := p_equivalentPLMNs, + rATRestrictions := p_rATRestrictions, + forbiddenAreaInformation := p_forbiddenAreaInformation, + serviceAreaInformation := p_serviceAreaInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_mobilityRestrictionList + + template (value) MobilityRestrictionList.iE_Extensions m_mobilityRestrictionList_id_LastEUTRAN_PLMNIdentity( + in template (value) PLMNIdentity p_pLMNIdentity + ) := { + { + id := id_LastEUTRAN_PLMNIdentity, + criticality := ignore, + extensionValue := { PLMNIdentity := p_pLMNIdentity } + } + } // End of template m_mobilityRestrictionList_id_LastEUTRAN_PLMNIdentity + + template (value) MobilityRestrictionList.iE_Extensions m_mobilityRestrictionList_id_CNTypeRestrictionsForServing( + in template (value) CNTypeRestrictionsForServing p_cNTypeRestrictionsForServing + ) := { + { + id := id_CNTypeRestrictionsForServing, + criticality := ignore, + extensionValue := { CNTypeRestrictionsForServing := p_cNTypeRestrictionsForServing } + } + } // End of template m_mobilityRestrictionList_id_CNTypeRestrictionsForServing + + template (value) MobilityRestrictionList.iE_Extensions m_mobilityRestrictionList_id_CNTypeRestrictionsForEquivalent( + in template (value) CNTypeRestrictionsForEquivalent p_cNTypeRestrictionsForEquivalent + ) := { + { + id := id_CNTypeRestrictionsForEquivalent, + criticality := ignore, + extensionValue := { CNTypeRestrictionsForEquivalent := p_cNTypeRestrictionsForEquivalent } + } + } // End of template m_mobilityRestrictionList_id_CNTypeRestrictionsForEquivalent + + template (value) MobilityRestrictionList.iE_Extensions m_mobilityRestrictionList_id_NPN_MobilityInformation( + in template (value) NPN_MobilityInformation p_nPN_MobilityInformation + ) := { + { + id := id_NPN_MobilityInformation, + criticality := reject, + extensionValue := { NPN_MobilityInformation := p_nPN_MobilityInformation } + } + } // End of template m_mobilityRestrictionList_id_NPN_MobilityInformation + + template (value) MDT_AlignmentInfo m_mDT_AlignmentInfo_s_basedMDT( + in template (value) NGRANTraceID p_s_basedMDT + ) := { + s_basedMDT := p_s_basedMDT + } // End of template m_mDT_AlignmentInfo_s_basedMDT + + template (value) MDT_AlignmentInfo m_mDT_AlignmentInfo_choice_Extensions( + in template (value) MDT_AlignmentInfo.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_mDT_AlignmentInfo_choice_Extensions + + template (omit) MDT_Configuration m_mDT_Configuration( + in template (omit) MDT_Configuration_NR p_mdt_Config_NR := omit, + in template (omit) MDT_Configuration_EUTRA p_mdt_Config_EUTRA := omit, + in template (omit) MDT_Configuration.iE_Extensions p_iE_Extensions := omit + ) := { + mdt_Config_NR := p_mdt_Config_NR, + mdt_Config_EUTRA := p_mdt_Config_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template m_mDT_Configuration + + template (omit) MDT_Configuration_NR m_mDT_Configuration_NR( + in template (value) MDT_Activation p_mdt_Activation, + in template (value) AreaScopeOfMDT_NR p_areaScopeOfMDT, + in template (value) MDTModeNr p_mDTModeNr, + in template (omit) MDTPLMNList p_signallingBasedMDTPLMNList := omit, + in template (omit) MDT_Configuration_NR.iE_Extensions p_iE_Extensions := omit + ) := { + mdt_Activation := p_mdt_Activation, + areaScopeOfMDT := p_areaScopeOfMDT, + mDTModeNr := p_mDTModeNr, + signallingBasedMDTPLMNList := p_signallingBasedMDTPLMNList, + iE_Extensions := p_iE_Extensions + } // End of template m_mDT_Configuration_NR + + template (omit) MDT_Configuration_EUTRA m_mDT_Configuration_EUTRA( + in template (value) MDT_Activation p_mdt_Activation, + in template (value) AreaScopeOfMDT_EUTRA p_areaScopeOfMDT, + in template (value) MDTModeEutra p_mDTMode, + in template (omit) MDTPLMNList p_signallingBasedMDTPLMNList := omit, + in template (omit) MDT_Configuration_EUTRA.iE_Extensions p_iE_Extensions := omit + ) := { + mdt_Activation := p_mdt_Activation, + areaScopeOfMDT := p_areaScopeOfMDT, + mDTMode := p_mDTMode, + signallingBasedMDTPLMNList := p_signallingBasedMDTPLMNList, + iE_Extensions := p_iE_Extensions + } // End of template m_mDT_Configuration_EUTRA + + template (value) MDT_Activation m_mDT_Activation(in MDT_Activation p_value := immediate_MDT_only) := p_value; + + template (value) MDTModeNr m_mDTModeNro_immediateMDTNr( + in template (value) ImmediateMDTNr p_immediateMDTNr + ) := { + immediateMDTNr := p_immediateMDTNr + } // End of template m_mDTModeNr_immediateMDTNr + + template (value) MDTModeNr m_mDTModeNro_loggedMDTNr( + in template (value) LoggedMDTNr p_loggedMDTNr + ) := { + loggedMDTNr := p_loggedMDTNr + } // End of template m_mDTModeNr_loggedMDTNr + + template (value) MDTModeNr m_mDTModeNr_choice_Extensions( + in template (value) MDTModeNr.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_mDTModeNr_choice_Extensions + + template (omit) MulticastSessionActivationRequestTransfer m_multicastSessionActivationRequestTransfer( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MulticastSessionActivationRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + iE_Extensions := p_iE_Extensions + } // End of template m_multicastSessionActivationRequestTransfer + + template (omit) MulticastSessionDeactivationRequestTransfer m_multicastSessionDeactivationRequestTransfer( + in template (value) MBS_SessionID p_mBS_SessionID, + in template (omit) MulticastSessionDeactivationRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_SessionID := p_mBS_SessionID, + iE_Extensions := p_iE_Extensions + } // End of template m_multicastSessionDeactivationRequestTransfer + + template (value) MulticastSessionUpdateRequestTransfer m_multicastSessionUpdateRequestTransfer( + in template (value) MulticastSessionUpdateRequestTransfer.protocolIEs p_protocolIEs + ) := { + protocolIEs := p_protocolIEs + } // End of template m_multicastSessionUpdateRequestTransfer + + template (value) MulticastSessionUpdateRequestTransfer.protocolIEs m_multicastSessionUpdateRequestTransfer_id_MBS_SessionID( + in template (value) MBS_SessionID p_mBS_SessionID + ) := { + { + id := id_MBS_SessionID, + criticality := reject, + value_ := { MBS_SessionID := p_mBS_SessionID } + } + } // End of template m_multicastSessionUpdateRequestTransfer_id_MBS_SessionID + + template (value) MulticastSessionUpdateRequestTransfer.protocolIEs m_multicastSessionUpdateRequestTransfer_id_MBS_ServiceArea( + in template (value) MBS_ServiceArea p_mBS_ServiceArea + ) := { + { + id := id_MBS_ServiceArea, + criticality := reject, + value_ := { MBS_ServiceArea := p_mBS_ServiceArea } + } + } // End of template m_multicastSessionUpdateRequestTransfer_id_MBS_ServiceArea + + template (value) MulticastSessionUpdateRequestTransfer.protocolIEs m_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowsToBeSetupModList( + in template (value) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList + ) := { + { + id := id_MBS_QoSFlowsToBeSetupModList, + criticality := reject, + value_ := { MBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList } + } + } // End of template m_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowsToBeSetupModList + + template (value) MulticastSessionUpdateRequestTransfer.protocolIEs m_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowToReleaseList( + in template (value) QosFlowListWithCause p_qosFlowListWithCause + ) := { + { + id := id_MBS_QoSFlowToReleaseList, + criticality := reject, + value_ := { QosFlowListWithCause := p_qosFlowListWithCause } + } + } // End of template m_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowToReleaseList + + template (value) MulticastSessionUpdateRequestTransfer.protocolIEs m_multicastSessionUpdateRequestTransfer_id_MBS_SessionTNLInfo5GC( + in template (value) MBS_SessionTNLInfo5GC p_mBS_SessionTNLInfo5GC + ) := { + { + id := id_MBS_SessionTNLInfo5GC, + criticality := reject, + value_ := { MBS_SessionTNLInfo5GC := p_mBS_SessionTNLInfo5GC } + } + } // End of template m_multicastSessionUpdateRequestTransfer_id_MBS_SessionTNLInfo5GC + + template (omit) MulticastGroupPagingAreaItem m_multicastGroupPagingAreaItem( + in template (value) MulticastGroupPagingArea p_multicastGroupPagingArea, + in template (omit) UE_PagingList p_uE_PagingList := omit, + in template (omit) MulticastGroupPagingAreaItem.iE_Extensions p_iE_Extensions := omit + ) := { + multicastGroupPagingArea := p_multicastGroupPagingArea, + uE_PagingList := p_uE_PagingList, + iE_Extensions := p_iE_Extensions + } // End of template m_multicastGroupPagingAreaItem + + template (omit) MulticastGroupPagingArea m_multicastGroupPagingArea( + in template (value) MBS_AreaTAIList p_mBS_AreaTAIList, + in template (omit) MulticastGroupPagingArea.iE_Extensions p_iE_Extensions := omit + ) := { + mBS_AreaTAIList := p_mBS_AreaTAIList, + iE_Extensions := p_iE_Extensions + } // End of template m_multicastGroupPagingArea + + template (omit) UE_PagingItem m_uE_PagingItem( + in template (value) UEIdentityIndexValue p_uEIdentityIndexValue, + in template (omit) PagingDRX p_pagingDRX := omit, + in template (omit) UE_PagingItem.iE_Extensions p_iE_Extensions := omit + ) := { + uEIdentityIndexValue := p_uEIdentityIndexValue, + pagingDRX := p_pagingDRX, + iE_Extensions := p_iE_Extensions + } // End of template m_uE_PagingItem + + template (omit) M1Configuration m_m1Configuration( + in template (value) M1ReportingTrigger p_m1reportingTrigger, + in template (omit) M1ThresholdEventA2 p_m1thresholdEventA2 := omit, + in template (omit) M1PeriodicReporting p_m1periodicReporting := omit, + in template (omit) M1Configuration.iE_Extensions p_iE_Extensions := omit + ) := { + m1reportingTrigger := p_m1reportingTrigger, + m1thresholdEventA2 := p_m1thresholdEventA2, + // The above IE shall be present if the M1 Reporting Trigger IE is set to “A2event_triggered” or “A2event_triggered periodic” + m1periodicReporting := p_m1periodicReporting, + // The above IE shall be present if the M1 Reporting Trigger IE is set to “periodic” or “A2event_triggered periodic” + iE_Extensions := p_iE_Extensions + } // End of template m_m1Configuration + + template (value) M1Configuration.iE_Extensions m_m1Configuration_id_IncludeBeamMeasurementsIndication( + in template (value) IncludeBeamMeasurementsIndication p_includeBeamMeasurementsIndication + ) := { + { + id := id_IncludeBeamMeasurementsIndication, + criticality := ignore, + extensionValue := { IncludeBeamMeasurementsIndication := p_includeBeamMeasurementsIndication } + } + } // End of template m_m1Configuration_id_IncludeBeamMeasurementsIndication + + template (value) M1Configuration.iE_Extensions m_m1Configuration_id_BeamMeasurementsReportConfiguration( + in template (value) BeamMeasurementsReportConfiguration p_beamMeasurementsReportConfiguration + ) := { + { + id := id_BeamMeasurementsReportConfiguration, + criticality := ignore, + extensionValue := { BeamMeasurementsReportConfiguration := p_beamMeasurementsReportConfiguration } + } + } // End of template m_m1Configuration_id_BeamMeasurementsReportConfiguration + + template (value) IncludeBeamMeasurementsIndication m_includeBeamMeasurementsIndication(in IncludeBeamMeasurementsIndication p_value := true_) := p_value; + + template (value) M1ReportingTrigger m_m1ReportingTrigger(in M1ReportingTrigger p_value := periodic) := p_value; + + template (omit) M1ThresholdEventA2 m_m1ThresholdEventA2( + in template (value) M1ThresholdType p_m1ThresholdType, + in template (omit) M1ThresholdEventA2.iE_Extensions p_iE_Extensions := omit + ) := { + m1ThresholdType := p_m1ThresholdType, + iE_Extensions := p_iE_Extensions + } // End of template m_m1ThresholdEventA2 + + template (value) M1ThresholdType m_m1ThresholdType_threshold_RSRP( + in template (value) Threshold_RSRP p_threshold_RSRP + ) := { + threshold_RSRP := p_threshold_RSRP + } // End of template m_m1ThresholdType_threshold_RSRP + + template (value) M1ThresholdType m_m1ThresholdType_threshold_RSRQ( + in template (value) Threshold_RSRQ p_threshold_RSRQ + ) := { + threshold_RSRQ := p_threshold_RSRQ + } // End of template m_m1ThresholdType_threshold_RSRQ + + template (value) M1ThresholdType m_m1ThresholdType_threshold_SINR( + in template (value) Threshold_SINR p_threshold_SINR + ) := { + threshold_SINR := p_threshold_SINR + } // End of template m_m1ThresholdType_threshold_SINR + + template (value) M1ThresholdType m_m1ThresholdType_choice_Extensions( + in template (value) M1ThresholdType.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_m1ThresholdType_choice_Extensions + + template (omit) M1PeriodicReporting m_m1PeriodicReporting( + in template (value) ReportIntervalMDT p_reportInterval, + in template (value) ReportAmountMDT p_reportAmount, + in template (omit) M1PeriodicReporting.iE_Extensions p_iE_Extensions := omit + ) := { + reportInterval := p_reportInterval, + reportAmount := p_reportAmount, + iE_Extensions := p_iE_Extensions + } // End of template m_m1PeriodicReporting + + template (value) M1PeriodicReporting.iE_Extensions m_m1PeriodicReporting_id_ExtendedReportIntervalMDT( + in template (value) ExtendedReportIntervalMDT p_extendedReportIntervalMDT + ) := { + { + id := id_ExtendedReportIntervalMDT, + criticality := ignore, + extensionValue := { ExtendedReportIntervalMDT := p_extendedReportIntervalMDT } + } + } // End of template m_m1PeriodicReporting_id_ExtendedReportIntervalMDT + + template (omit) M4Configuration m_m4Configuration( + in template (value) M4period p_m4period, + in template (value) Links_to_log p_m4_links_to_log, + in template (omit) M4Configuration.iE_Extensions p_iE_Extensions := omit + ) := { + m4period := p_m4period, + m4_links_to_log := p_m4_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template m_m4Configuration + + template (value) M4Configuration.iE_Extensions m_m4Configuration_id_M4ReportAmount( + in template (value) M4ReportAmountMDT p_m4ReportAmountMDT + ) := { + { + id := id_ExtendedReportIntervalMDT, + criticality := ignore, + extensionValue := { M4ReportAmountMDT := p_m4ReportAmountMDT } + } + } // End of template m_m4Configuration_id_M4ReportAmount + + template (value) M4ReportAmountMDT m_m4ReportAmountMDT(in M4ReportAmountMDT p_value := r1) := p_value; + + template (value) M4period m_m4period(in M4period p_value := ms1024) := p_value; + + template (omit) M5Configuration m_m5Configuration( + in template (value) M5period p_m5period, + in template (value) Links_to_log p_m5_links_to_log, + in template (omit) M5Configuration.iE_Extensions p_iE_Extensions := omit + ) := { + m5period := p_m5period, + m5_links_to_log := p_m5_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template m_m5Configuration + + template (value) M5Configuration.iE_Extensions m_m5Configuration_id_M5ReportAmount( + in template (value) M5ReportAmountMDT p_m5ReportAmountMDT + ) := { + { + id := id_M5ReportAmount, + criticality := ignore, + extensionValue := { M5ReportAmountMDT := p_m5ReportAmountMDT } + } + } // End of template m_m5Configuration_id_M5ReportAmount + + template (value) M5ReportAmountMDT m_m5ReportAmountMDT(in M5ReportAmountMDT p_value := r1) := p_value; + + template (value) M5period m_m5period(in M5period p_value := ms1024) := p_value; + + template (omit) M6Configuration m_m6Configuration( + in template (value) M6report_Interval p_m6report_Interval, + in template (value) Links_to_log p_m6_links_to_log, + in template (omit) M6Configuration.iE_Extensions p_iE_Extensions := omit + ) := { + m6report_Interval := p_m6report_Interval, + m6_links_to_log := p_m6_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template m_m6Configuration + + template (value) M6Configuration.iE_Extensions m_m6Configuration_id_M6ReportAmount( + in template (value) M6ReportAmountMDT p_m6ReportAmountMDT + ) := { + { + id := id_M6ReportAmount, + criticality := ignore, + extensionValue := { M6ReportAmountMDT := p_m6ReportAmountMDT } + } + } // End of template m_m6Configuration_id_M6ReportAmount + + template (value) M6Configuration.iE_Extensions m_m6Configuration_id_ExcessPacketDelayThresholdConfiguration( + in template (value) ExcessPacketDelayThresholdConfiguration p_excessPacketDelayThresholdConfiguration + ) := { + { + id := id_ExcessPacketDelayThresholdConfiguration, + criticality := ignore, + extensionValue := { ExcessPacketDelayThresholdConfiguration := p_excessPacketDelayThresholdConfiguration } + } + } // End of template m_m6Configuration_id_ExcessPacketDelayThresholdConfiguration + + template (value) M6ReportAmountMDT m_m6ReportAmountMDT(in M6ReportAmountMDT p_value := r1) := p_value; + + template (value) M6report_Interval m_m6report_Interval(in M6report_Interval p_value := ms120) := p_value; + + template (omit) M7Configuration m_m7Configuration( + in template (value) M7period p_m7period, + in template (value) Links_to_log p_m7_links_to_log, + in template (omit) M7Configuration.iE_Extensions p_iE_Extensions := omit + ) := { + m7period := p_m7period, + m7_links_to_log := p_m7_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template m_m7Configuration + + template (value) M7Configuration.iE_Extensions m_m7Configuration_id_M7ReportAmount( + in template (value) M7ReportAmountMDT p_m7ReportAmountMDT + ) := { + { + id := id_M7ReportAmount, + criticality := ignore, + extensionValue := { M7ReportAmountMDT := p_m7ReportAmountMDT } + } + } // End of template m_m7Configuration_id_M7ReportAmount + + template (value) M7ReportAmountMDT m_m7ReportAmountMDT(in M7ReportAmountMDT p_value := r1) := p_value; + + template (omit) MDT_Location_Info m_mDT_Location_Info( + in template (value) MDT_Location_Information p_mDT_Location_Information, + in template (omit) MDT_Location_Info.iE_Extensions p_iE_Extensions := omit + ) := { + mDT_Location_Information := p_mDT_Location_Information, + iE_Extensions := p_iE_Extensions + } // End of template m_mDT_Location_Info + + template (value) N3IWF_ID m_n3IWF_ID_n3IWF_ID( + in template (value) N3IWF_ID.n3IWF_ID p_n3IWF_ID + ) := { + n3IWF_ID := p_n3IWF_ID + } // End of template m_n3IWF_ID_n3IWF_ID + + template (value) N3IWF_ID m_n3IWF_ID_choice_Extensions( + in template (value) N3IWF_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_n3IWF_ID_choice_Extensions + + template (value) NB_IoT_DefaultPagingDRX m_nB_IoT_DefaultPagingDRX(in NB_IoT_DefaultPagingDRX p_value := rf128) := p_value; + + template (value) NB_IoT_PagingDRX m_nB_IoT_PagingDRX(in NB_IoT_PagingDRX p_value := rf32) := p_value; + + template (value) NB_IoT_Paging_eDRXCycle m_nB_IoT_Paging_eDRXCycle(in NB_IoT_Paging_eDRXCycle p_value := hf2) := p_value; + + template (value) NB_IoT_Paging_TimeWindow m_nB_IoT_Paging_TimeWindow(in NB_IoT_Paging_TimeWindow p_value := s1) := p_value; + + template (omit) NB_IoT_Paging_eDRXInfo m_nB_IoT_Paging_eDRXInfo( + in template (value) NB_IoT_Paging_eDRXCycle p_nB_IoT_Paging_eDRXCycle, + in template (omit) NB_IoT_Paging_TimeWindow p_nB_IoT_Paging_TimeWindow := omit, + in template (omit) NB_IoT_Paging_eDRXInfo.iE_Extensions p_iE_Extensions := omit + ) := { + nB_IoT_Paging_eDRXCycle := p_nB_IoT_Paging_eDRXCycle, + nB_IoT_Paging_TimeWindow := p_nB_IoT_Paging_TimeWindow, + iE_Extensions := p_iE_Extensions + } // End of template m_nB_IoT_Paging_eDRXInfo + + template (value) NewSecurityContextInd m_newSecurityContextInd(in NewSecurityContextInd p_value := true_) := p_value; + + template (value) NextPagingAreaScope m_nextPagingAreaScope(in NextPagingAreaScope p_value := same) := p_value; + + template (omit) NGAPIESupportInformationRequestItem m_nGAPIESupportInformationRequestItem( + in template (value) ProtocolIE_ID p_ngap_ProtocolIE_Id, + in template (omit) NGAPIESupportInformationRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + ngap_ProtocolIE_Id := p_ngap_ProtocolIE_Id, + iE_Extensions := p_iE_Extensions + } // End of template m_nGAPIESupportInformationRequestItem + + template (omit) NGAPIESupportInformationResponseItem m_nGAPIESupportInformationResponseItem( + in template (value) ProtocolIE_ID p_ngap_ProtocolIE_Id, + in template (value) NGAPIESupportInformationResponseItem.ngap_ProtocolIESupportInfo p_ngap_ProtocolIESupportInfo, + in template (value) NGAPIESupportInformationResponseItem.ngap_ProtocolIEPresenceInfo p_ngap_ProtocolIEPresenceInfo, + in template (omit) NGAPIESupportInformationResponseItem.iE_Extensions p_iE_Extensions := omit + ) := { + ngap_ProtocolIE_Id := p_ngap_ProtocolIE_Id, + ngap_ProtocolIESupportInfo := p_ngap_ProtocolIESupportInfo, + ngap_ProtocolIEPresenceInfo := p_ngap_ProtocolIEPresenceInfo, + iE_Extensions := p_iE_Extensions + } // End of template m_nGAPIESupportInformationResponseItem + + template (value) NgENB_ID m_ngENB_ID_macroNgENB_ID( + in template (value) NgENB_ID.macroNgENB_ID p_macroNgENB_ID := PX_MACRO_NGENB_ID + ) := { + macroNgENB_ID := p_macroNgENB_ID + } // End of template m_ngENB_ID_macroNgENB_ID + + template (value) NgENB_ID m_ngENB_ID_shortMacroNgENB_ID( + in template (value) NgENB_ID.shortMacroNgENB_ID p_shortMacroNgENB_ID := PX_SHORT_MACRO_NGENB_ID + ) := { + shortMacroNgENB_ID := p_shortMacroNgENB_ID + } // End of template m_ngENB_ID_shortMacroNgENB_ID + + template (value) NgENB_ID m_ngENB_ID_longMacroNgENB_ID( + in template (value) NgENB_ID.longMacroNgENB_ID p_longMacroNgENB_ID := PX_LONG_MACRO_NGENB_ID + ) := { + longMacroNgENB_ID := p_longMacroNgENB_ID + } // End of template m_ngENB_ID_longMacroNgENB_ID + + template (value) NgENB_ID m_ngENB_ID_choice_Extensions( + in template (value) NgENB_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_ngENB_ID_choice_Extensions + + template (value) NotifySourceNGRANNode m_notifySourceNGRANNode(in NotifySourceNGRANNode p_value := notifySource) := p_value; + + template (value) NGRAN_CGI m_ngENB_ID_nR_CGI( + in template (value) NR_CGI p_nR_CGI + ) := { + nR_CGI := p_nR_CGI + } // End of template m_ngENB_ID_nR_CGI + + template (value) NGRAN_CGI m_ngENB_ID_eUTRA_CGI( + in template (value) EUTRA_CGI p_eUTRA_CGI + ) := { + eUTRA_CGI := p_eUTRA_CGI + } // End of template m_ngENB_ID_eUTRA_CGI + + template (value) NGRAN_CGI m_nGRAN_CGI_choice_Extensions( + in template (value) NGRAN_CGI.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_nGRAN_CGI_choice_Extensions + + template (omit) NGRAN_TNLAssociationToRemoveItem m_nGRAN_TNLAssociationToRemoveItem( + in template (value) CPTransportLayerInformation p_tNLAssociationTransportLayerAddress, + in template (omit) CPTransportLayerInformation p_tNLAssociationTransportLayerAddressAMF := omit, + in template (omit) NGRAN_TNLAssociationToRemoveItem.iE_Extensions p_iE_Extensions := omit + ) := { + tNLAssociationTransportLayerAddress := p_tNLAssociationTransportLayerAddress, + tNLAssociationTransportLayerAddressAMF := p_tNLAssociationTransportLayerAddressAMF, + iE_Extensions := p_iE_Extensions + } // End of template m_nGRAN_TNLAssociationToRemoveItem + + template (omit) NonDynamic5QIDescriptor m_nonDynamic5QIDescriptor( + in template (value) FiveQI p_fiveQI, + in template (omit) PriorityLevelQos p_priorityLevelQos := omit, + in template (omit) AveragingWindow p_averagingWindow := omit, + in template (omit) MaximumDataBurstVolume p_maximumDataBurstVolume := omit, + in template (omit) NonDynamic5QIDescriptor.iE_Extensions p_iE_Extensions := omit + ) := { + fiveQI := p_fiveQI, + priorityLevelQos := p_priorityLevelQos, + averagingWindow := p_averagingWindow, + maximumDataBurstVolume := p_maximumDataBurstVolume, + iE_Extensions := p_iE_Extensions + } // End of template m_nonDynamic5QIDescriptor + + template (value) NonDynamic5QIDescriptor.iE_Extensions m_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetDL( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_CNPacketDelayBudgetDL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetDL + + template (value) NonDynamic5QIDescriptor.iE_Extensions m_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetUL( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_CNPacketDelayBudgetUL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetUL + + template (value) NotificationCause m_notificationCause(in NotificationCause p_value := fulfilled) := p_value; + + template (value) NotificationControl m_notificationControl(in NotificationControl p_value := notification_requested) := p_value; + + template (value) NPN_AccessInformation m_nPN_AccessInformation_pNI_NPN_Access_Information( + in template (value) CellCAGList p_pNI_NPN_Access_Information + ) := { + pNI_NPN_Access_Information := p_pNI_NPN_Access_Information + } // End of template m_nPN_AccessInformation_pNI_NPN_Access_Information + + template (value) NPN_AccessInformation m_nPN_AccessInformation_choice_Extensions( + in template (value) NPN_AccessInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_nPN_AccessInformation_choice_Extensions + + template (value) NPN_MobilityInformation m_nPN_MobilityInformation_sNPN_MobilityInformation( + in template (value) SNPN_MobilityInformation p_sNPN_MobilityInformation + ) := { + sNPN_MobilityInformation := p_sNPN_MobilityInformation + } // End of template m_nPN_MobilityInformation_sNPN_MobilityInformation + + template (value) NPN_MobilityInformation m_nPN_MobilityInformation_pNI_NPN_MobilityInformation( + in template (value) PNI_NPN_MobilityInformation p_pNI_NPN_MobilityInformation + ) := { + pNI_NPN_MobilityInformation := p_pNI_NPN_MobilityInformation + } // End of template m_nPN_MobilityInformation_pNI_NPN_MobilityInformation + + template (value) NPN_MobilityInformation m_nPN_MobilityInformation_choice_Extensions( + in template (value) NPN_MobilityInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_nPN_MobilityInformation_choice_Extensions + + template (value) NPN_PagingAssistanceInformation m_nPN_PagingAssistanceInformation_pNI_NPN_PagingAssistance( + in template (value) Allowed_PNI_NPN_List p_pNI_NPN_PagingAssistance + ) := { + pNI_NPN_PagingAssistance := p_pNI_NPN_PagingAssistance + } // End of template m_nPN_PagingAssistanceInformation_pNI_NPN_PagingAssistance + + template (value) NPN_PagingAssistanceInformation m_nPN_PagingAssistanceInformation_choice_Extensions( + in template (value) NPN_PagingAssistanceInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_nPN_PagingAssistanceInformation_choice_Extensions + + template (value) NPN_Support m_nPN_Support_sNPN( + in template (value) NID p_sNPN + ) := { + sNPN := p_sNPN + } // End of template m_nPN_Support_sNPN + + template (value) NPN_Support m_nPN_Support_choice_Extensions( + in template (value) NPN_Support.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_nPN_Support_choice_Extensions + + template (omit) NR_CGI m_nR_CGI( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) NRCellIdentity p_nRCellIdentity := PX_NR_CELL_IDENTITY, + in template (omit) NR_CGI.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + nRCellIdentity := p_nRCellIdentity, + iE_Extensions := p_iE_Extensions + } // End of template m_nR_CGI + + template (omit) NR_PagingeDRXInformation m_NR_PagingeDRXInformation( + in template (value) NR_Paging_eDRX_Cycle p_nR_paging_eDRX_Cycle, + in template (omit) NR_Paging_Time_Window p_nR_paging_Time_Window := omit, + in template (omit) NR_PagingeDRXInformation.iE_Extensions p_iE_Extensions := omit + ) := { + nR_paging_eDRX_Cycle := p_nR_paging_eDRX_Cycle, + nR_paging_Time_Window := p_nR_paging_Time_Window, + iE_Extensions := p_iE_Extensions + } // End of template m_NR_PagingeDRXInformation + + template (value) NR_Paging_eDRX_Cycle m_nR_Paging_eDRX_Cycle(in NR_Paging_eDRX_Cycle p_value := hfquarter) := p_value; + + template (value) NR_Paging_Time_Window m_nR_Paging_Time_Window(in NR_Paging_Time_Window p_value := s1) := p_value; + + template (omit) NRNTNTAIInformation m_nRNTNTAIInformation( + in template (value) PLMNIdentity p_servingPLMN, + in template (value) TACListInNRNTN p_tACListInNRNTN, + in template (omit) TAC p_uELocationDerivedTACInNRNTN := omit, + in template (omit) NRNTNTAIInformation.iE_Extensions p_iE_Extensions := omit + ) := { + servingPLMN := p_servingPLMN, + tACListInNRNTN := p_tACListInNRNTN, + uELocationDerivedTACInNRNTN := p_uELocationDerivedTACInNRNTN, + iE_Extensions := p_iE_Extensions + } // End of template m_nRNTNTAIInformation + + template (omit) NRFrequencyBandItem m_nRFrequencyBandItem( + in template (value) NRFrequencyBand p_nr_frequency_band, + in template (omit) NRFrequencyBandItem.iE_Extension p_iE_Extension := omit + ) := { + nr_frequency_band := p_nr_frequency_band, + iE_Extension := p_iE_Extension + } // End of template m_nRFrequencyBandItem + + template (omit) NRFrequencyInfo m_nRFrequencyInfo( + in template (value) NRARFCN p_nrARFCN, + in template (value) NRFrequencyBand_List p_frequencyBand_List, + in template (omit) NRFrequencyInfo.iE_Extension p_iE_Extension := omit + ) := { + nrARFCN := p_nrARFCN, + frequencyBand_List := p_frequencyBand_List, + iE_Extension := p_iE_Extension + } // End of template m_nRFrequencyInfo + + template (omit) NRV2XServicesAuthorized m_nRV2XServicesAuthorized( + in template (omit) VehicleUE p_vehicleUE := omit, + in template (omit) PedestrianUE p_pedestrianUE := omit, + in template (omit) NRV2XServicesAuthorized.iE_Extensions p_iE_Extensions := omit + + ) := { + vehicleUE := p_vehicleUE, + pedestrianUE := p_pedestrianUE, + iE_Extensions := p_iE_Extensions + } // End of template m_nRV2XServicesAuthorized + + template (value) VehicleUE m_vehicleUE(in VehicleUE p_value := authorized) := p_value; + + template (value) PedestrianUE m_pedestrianUE(in PedestrianUE p_value := authorized) := p_value; + + template (omit) NRUESidelinkAggregateMaximumBitrate m_nRUESidelinkAggregateMaximumBitrate( + in template (value) BitRate p_uESidelinkAggregateMaximumBitRate := PX_UE_SIDELINK_AGGREGATE_MAXIMUM_BIT_RATE, + in template (omit) NRUESidelinkAggregateMaximumBitrate.iE_Extensions p_iE_Extensions := omit + ) := { + uESidelinkAggregateMaximumBitRate := p_uESidelinkAggregateMaximumBitRate, + iE_Extensions := p_iE_Extensions + } // End of template m_nRUESidelinkAggregateMaximumBitrate + + template (value) OnboardingSupport m_onboardingSupport(in OnboardingSupport p_value := true_) := p_value; + + template (value) OverloadAction m_overloadAction(in OverloadAction p_value := reject_non_emergency_mo_dt) := p_value; + + template (value) OverloadResponse m_overloadResponse_overloadAction( + in template (value) OverloadAction p_overloadAction + ) := { + overloadAction := p_overloadAction + } // End of template m_overloadResponse_overloadAction + + template (value) OverloadResponse m_overloadResponse_choice_Extensions( + in template (value) OverloadResponse.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_overloadResponse_choice_Extensions + + template (omit) OverloadStartNSSAIItem m_overloadStartNSSAIItem( + in template (value) SliceOverloadList p_sliceOverloadList, + in template (omit) OverloadResponse p_sliceOverloadResponse := omit, + in template (omit) TrafficLoadReductionIndication p_sliceTrafficLoadReductionIndication := omit, + in template (omit) OverloadStartNSSAIItem.iE_Extensions p_iE_Extensions := omit + ) := { + sliceOverloadList := p_sliceOverloadList, + sliceOverloadResponse := p_sliceOverloadResponse, + sliceTrafficLoadReductionIndication := p_sliceTrafficLoadReductionIndication, + iE_Extensions := p_iE_Extensions + } // End of template m_overloadStartNSSAIItem + + template (omit) PacketErrorRate m_PacketErrorRate( + in template (value) PacketErrorRate.pERScalar p_pERScalar, + in template (value) PacketErrorRate.pERExponent p_pERExponent, + in template (omit) PacketErrorRate.iE_Extensions p_iE_Extensions := omit + ) := { + pERScalar := p_pERScalar, + pERExponent := p_pERExponent, + iE_Extensions := p_iE_Extensions + } // End of template m_PacketErrorRate + + template (omit) PagingAssisDataforCEcapabUE m_pagingAssisDataforCEcapabUE( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (value) CoverageEnhancementLevel p_coverageEnhancementLevel, + in template (omit) PagingAssisDataforCEcapabUE.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + coverageEnhancementLevel := p_coverageEnhancementLevel, + iE_Extensions := p_iE_Extensions + } // End of template m_pagingAssisDataforCEcapabUE + + template (omit) PagingAttemptInformation m_pagingAttemptInformation( + in template (value) PagingAttemptCount p_pagingAttemptCount, + in template (value) IntendedNumberOfPagingAttempts p_intendedNumberOfPagingAttempts, + in template (omit) NextPagingAreaScope p_nextPagingAreaScope := omit, + in template (omit) PagingAttemptInformation.iE_Extensions p_iE_Extensions := omit + ) := { + pagingAttemptCount := p_pagingAttemptCount, + intendedNumberOfPagingAttempts := p_intendedNumberOfPagingAttempts, + nextPagingAreaScope := p_nextPagingAreaScope, + iE_Extensions := p_iE_Extensions + } // End of template m_pagingAttemptInformation + + template (value) PagingCause m_pagingCause(in PagingCause p_value := voice) := p_value; + + template (value) PagingCauseIndicationForVoiceService m_pagingCauseIndicationForVoiceService(in PagingCauseIndicationForVoiceService p_value := supported) := p_value; + + template (value) PagingDRX m_pagingDRX(in PagingDRX p_value := v256) := p_value; + + template (value) PagingOrigin m_pagingOrigin(in PagingOrigin p_value := non_3gpp) := p_value; + + template (value) PagingPriority m_pagingPriority(in PagingPriority p_value := priolevel1) := p_value; + + template (value) PagingProbabilityInformation m_pagingProbabilityInformation(in PagingProbabilityInformation p_value := p00) := p_value; + + template (omit) PathSwitchRequestAcknowledgeTransfer m_PathSwitchRequestAcknowledgeTransfer( + in template (omit) UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := omit, + in template (omit) SecurityIndication p_securityIndication := omit, + in template (omit) PathSwitchRequestAcknowledgeTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + securityIndication := p_securityIndication, + iE_Extensions := p_iE_Extensions + } // End of template m_PathSwitchRequestAcknowledgeTransfer + + template (value) PathSwitchRequestAcknowledgeTransfer.iE_Extensions m_pathSwitchRequestAcknowledgeTransfer_id_AdditionalNGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList + ) := { + { + id := id_AdditionalNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template m_pathSwitchRequestAcknowledgeTransfer_id_AdditionalNGU_UP_TNLInformation + + template (value) PathSwitchRequestAcknowledgeTransfer.iE_Extensions m_pathSwitchRequestAcknowledgeTransfer_id_RedundantUL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pathSwitchRequestAcknowledgeTransfer_id_RedundantUL_NGU_UP_TNLInformation + + template (value) PathSwitchRequestAcknowledgeTransfer.iE_Extensions m_pathSwitchRequestAcknowledgeTransfer_id_AdditionalRedundantNGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList + ) := { + { + id := id_AdditionalRedundantNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template m_pathSwitchRequestAcknowledgeTransfer_id_AdditionalRedundantNGU_UP_TNLInformation + + template (value) PathSwitchRequestAcknowledgeTransfer.iE_Extensions m_pathSwitchRequestAcknowledgeTransfer_id_QosFlowParametersList( + in template (value) QosFlowParametersList p_qosFlowParametersList + ) := { + { + id := id_QosFlowParametersList, + criticality := ignore, + extensionValue := { QosFlowParametersList := p_qosFlowParametersList } + } + } // End of template m_pathSwitchRequestAcknowledgeTransfer_id_QosFlowParametersList + + template (omit) PathSwitchRequestSetupFailedTransfer m_pathSwitchRequestSetupFailedTransfer( + in template (value) Cause p_cause, + in template (omit) PathSwitchRequestSetupFailedTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pathSwitchRequestSetupFailedTransfer + + template (omit) PathSwitchRequestTransfer m_pathSwitchRequestTransfer( + in template (value) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation, + in template (value) QosFlowAcceptedList p_qosFlowAcceptedList, + in template (omit) DL_NGU_TNLInformationReused p_dL_NGU_TNLInformationReused := omit, + in template (omit) UserPlaneSecurityInformation p_userPlaneSecurityInformation := omit, + in template (omit) PathSwitchRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + dL_NGU_TNLInformationReused := p_dL_NGU_TNLInformationReused, + userPlaneSecurityInformation := p_userPlaneSecurityInformation, + qosFlowAcceptedList := p_qosFlowAcceptedList, + iE_Extensions := p_iE_Extensions + } // End of template m_pathSwitchRequestTransfer + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransferr_id_AdditionalDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList + ) := { + { + id := id_AdditionalDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template m_pathSwitchRequestTransferr_id_AdditionalDLQosFlowPerTNLInformation + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransferr_id_RedundantDL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pathSwitchRequestTransferr_id_RedundantDL_NGU_UP_TNLInformation + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransferr_id_RedundantDL_NGU_TNLInformationReused( + in template (value) DL_NGU_TNLInformationReused p_dL_NGU_TNLInformationReused + ) := { + { + id := id_RedundantDL_NGU_TNLInformationReused, + criticality := ignore, + extensionValue := { DL_NGU_TNLInformationReused := p_dL_NGU_TNLInformationReused } + } + } // End of template m_pathSwitchRequestTransferr_id_RedundantDL_NGU_TNLInformationReused + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransferr_id_AdditionalRedundantDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template m_pathSwitchRequestTransferr_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransferr_id_UsedRSNInformation( + in template (value) RedundantPDUSessionInformation p_redundantPDUSessionInformation + ) := { + { + id := id_UsedRSNInformation, + criticality := ignore, + extensionValue := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template m_pathSwitchRequestTransferr_id_UsedRSNInformation + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransferr_id_GlobalRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template m_pathSwitchRequestTransferr_id_GlobalRANNodeID + + template (value) PathSwitchRequestTransfer.iE_Extensions m_pathSwitchRequestTransfer_id_MBS_SupportIndicator( + in template (value) MBS_SupportIndicator p_mBS_SupportIndicator + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template m_pathSwitchRequestTransfer_id_MBS_SupportIndicator + + template (omit) PathSwitchRequestUnsuccessfulTransfer m_pathSwitchRequestUnsuccessfulTransfer( + in template (value) Cause p_cause, + in template (omit) PathSwitchRequestUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pathSwitchRequestUnsuccessfulTransfer + + template (omit) PC5QoSParameters m_pC5QoSParameters( + in template (value) PC5QoSFlowList p_pc5QoSFlowList, + in template (omit) BitRate p_pc5LinkAggregateBitRates := omit, + in template (omit) PC5QoSParameters.iE_Extensions p_iE_Extensions := omit + ) := { + pc5QoSFlowList := p_pc5QoSFlowList, + pc5LinkAggregateBitRates := p_pc5LinkAggregateBitRates, + iE_Extensions := p_iE_Extensions + } // End of template m_pC5QoSParameters + + template (omit) PC5QoSFlowItem m_pC5QoSFlowItem( + in template (value) FiveQI p_pQI := PX_FIVE_QI, + in template (omit) PC5FlowBitRates p_pc5FlowBitRates := omit, + in template (omit) Range p_range := omit, + in template (omit) PC5QoSFlowItem.iE_Extensions p_iE_Extensions := omit + ) := { + pQI := p_pQI, + pc5FlowBitRates := p_pc5FlowBitRates, + range := p_range, + iE_Extensions := p_iE_Extensions + } // End of template m_pC5QoSFlowItem + + template (omit) PC5FlowBitRates m_pC5FlowBitRates( + in template (value) BitRate p_guaranteedFlowBitRate, + in template (value) BitRate p_maximumFlowBitRate, + in template (omit) PC5FlowBitRates.iE_Extensions p_iE_Extensions := omit + ) := { + guaranteedFlowBitRate := p_guaranteedFlowBitRate, + maximumFlowBitRate := p_maximumFlowBitRate, + iE_Extensions := p_iE_Extensions + } // End of template m_pC5FlowBitRates + + template (value) PrivacyIndicator m_privacyIndicator(in PrivacyIndicator p_value := immediate_MDT) := p_value; + + template (omit) PDUSessionAggregateMaximumBitRate m_pDUSessionAggregateMaximumBitRate( + in template (value) BitRate p_pDUSessionAggregateMaximumBitRateDL, + in template (value) BitRate p_pDUSessionAggregateMaximumBitRateUL, + in template (omit) PDUSessionAggregateMaximumBitRate.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionAggregateMaximumBitRateDL := p_pDUSessionAggregateMaximumBitRateDL, + pDUSessionAggregateMaximumBitRateUL := p_pDUSessionAggregateMaximumBitRateUL, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionAggregateMaximumBitRate + + template (omit) PDUSessionResourceAdmittedItem m_pDUSessionResourceAdmittedItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceAdmittedItem.handoverRequestAcknowledgeTransfer p_handoverRequestAcknowledgeTransfer, + in template (omit) PDUSessionResourceAdmittedItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + handoverRequestAcknowledgeTransfer := p_handoverRequestAcknowledgeTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceAdmittedItem + + template (omit) PDUSessionResourceFailedToModifyItemModCfm m_pDUSessionResourceFailedToModifyItemModCfm( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToModifyItemModCfm.pDUSessionResourceModifyIndicationUnsuccessfulTransfer p_pDUSessionResourceModifyIndicationUnsuccessfulTransfer, + in template (omit) PDUSessionResourceFailedToModifyItemModCfm.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyIndicationUnsuccessfulTransfer := p_pDUSessionResourceModifyIndicationUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToModifyItemModCfm + + template (omit) PDUSessionResourceFailedToModifyItemModRes m_pDUSessionResourceFailedToModifyItemModRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToModifyItemModRes.pDUSessionResourceModifyUnsuccessfulTransfer p_pDUSessionResourceModifyUnsuccessfulTransfer, + in template (omit) PDUSessionResourceFailedToModifyItemModRes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyUnsuccessfulTransfer := p_pDUSessionResourceModifyUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToModifyItemModRes + + template (omit) PDUSessionResourceFailedToResumeItemRESReq m_pDUSessionResourceFailedToResumeItemRESReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) Cause p_cause, + in template (omit) PDUSessionResourceFailedToResumeItemRESReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToResumeItemRESReq + + template (omit) PDUSessionResourceFailedToResumeItemRESRes m_pDUSessionResourceFailedToResumeItemRESRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) Cause p_cause, + in template (omit) PDUSessionResourceFailedToResumeItemRESRes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToResumeItemRESRes + + template (omit) PDUSessionResourceFailedToSetupItemCxtFail m_pDUSessionResourceFailedToSetupItemCxtFail( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToSetupItemCxtFail.pDUSessionResourceSetupUnsuccessfulTransfer p_pDUSessionResourceSetupUnsuccessfulTransfer, + in template (omit) PDUSessionResourceFailedToSetupItemCxtFail.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer := p_pDUSessionResourceSetupUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToSetupItemCxtFail + + template (omit) PDUSessionResourceFailedToSetupItemCxtRes m_pDUSessionResourceFailedToSetupItemCxtRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToSetupItemCxtRes.pDUSessionResourceSetupUnsuccessfulTransfer p_pDUSessionResourceSetupUnsuccessfulTransfer, + in template (omit) PDUSessionResourceFailedToSetupItemCxtRes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer := p_pDUSessionResourceSetupUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToSetupItemCxtRes + + template (omit) PDUSessionResourceFailedToSetupItemHOAck m_pDUSessionResourceFailedToSetupItemHOAck( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToSetupItemHOAck.handoverResourceAllocationUnsuccessfulTransfer p_handoverResourceAllocationUnsuccessfulTransfer, + in template (omit) PDUSessionResourceFailedToSetupItemHOAck.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + handoverResourceAllocationUnsuccessfulTransfer := p_handoverResourceAllocationUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToSetupItemHOAck + + template (omit) PDUSessionResourceFailedToSetupItemPSReq m_pDUSessionResourceFailedToSetupItemPSReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToSetupItemPSReq.pathSwitchRequestSetupFailedTransfer p_pathSwitchRequestSetupFailedTransfer, + in template (omit) PDUSessionResourceFailedToSetupItemPSReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestSetupFailedTransfer := p_pathSwitchRequestSetupFailedTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToSetupItemPSReq + + template (omit) PDUSessionResourceFailedToSetupItemSURes m_pDUSessionResourceFailedToSetupItemSURes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceFailedToSetupItemSURes.pDUSessionResourceSetupUnsuccessfulTransfer p_pDUSessionResourceSetupUnsuccessfulTransfer, + in template (omit) PDUSessionResourceFailedToSetupItemSURes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer := p_pDUSessionResourceSetupUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceFailedToSetupItemSURes + + template (omit) PDUSessionResourceHandoverItem m_pDUSessionResourceHandoverItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceHandoverItem.handoverCommandTransfer p_handoverCommandTransfer, + in template (omit) PDUSessionResourceHandoverItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + handoverCommandTransfer := p_handoverCommandTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceHandoverItem + + template (omit) PDUSessionResourceInformationItem m_pDUSessionResourceInformationItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) QosFlowInformationList p_qosFlowInformationList, + in template (omit) DRBsToQosFlowsMappingList p_dRBsToQosFlowsMappingList := omit, + in template (omit) PDUSessionResourceInformationItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + qosFlowInformationList := p_qosFlowInformationList, + dRBsToQosFlowsMappingList := p_dRBsToQosFlowsMappingList, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceInformationItem + + template (omit) PDUSessionResourceItemCxtRelCpl m_pDUSessionResourceItemCxtRelCpl( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (omit) PDUSessionResourceItemCxtRelCpl.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceItemCxtRelCpl + + template (value) PDUSessionResourceItemCxtRelCpl.iE_Extensions m_pDUSessionResourceItemCxtRelCpl_id_PDUSessionResourceReleaseResponseTransfer( + in template (value) PDUSessionResourceReleaseResponseTransfer_OCTET_STRING p_pDUSessionResourceReleaseResponseTransfer_OCTET_STRING + ) := { + { + id := id_PDUSessionResourceReleaseResponseTransfer, + criticality := ignore, + extensionValue := { PDUSessionResourceReleaseResponseTransfer_OCTET_STRING := p_pDUSessionResourceReleaseResponseTransfer_OCTET_STRING } + } + } // End of template m_pDUSessionResourceItemCxtRelCpl_id_PDUSessionResourceReleaseResponseTransfer + + template (omit) PDUSessionResourceItemCxtRelReq m_pDUSessionResourceItemCxtRelReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (omit) PDUSessionResourceItemCxtRelReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceItemCxtRelReq + + template (omit) PDUSessionResourceItemHORqd m_pDUSessionResourceItemHORqd( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceItemHORqd.handoverRequiredTransfer p_handoverRequiredTransfer, + in template (omit) PDUSessionResourceItemHORqd.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + handoverRequiredTransfer := p_handoverRequiredTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceItemHORqd + + template (omit) PDUSessionResourceModifyConfirmTransfer m_pDUSessionResourceModifyConfirmTransfer( + in template (value) QosFlowModifyConfirmList p_qosFlowModifyConfirmList, + in template (value) UPTransportLayerInformation p_uLNGU_UP_TNLInformation, + in template (omit) UPTransportLayerInformationPairList p_additionalNG_UUPTNLInformation := omit, + in template (omit) QosFlowListWithCause p_qosFlowFailedToModifyList := omit, + in template (omit) PDUSessionResourceModifyConfirmTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowModifyConfirmList := p_qosFlowModifyConfirmList, + uLNGU_UP_TNLInformation := p_uLNGU_UP_TNLInformation, + additionalNG_UUPTNLInformation := p_additionalNG_UUPTNLInformation, + qosFlowFailedToModifyList := p_qosFlowFailedToModifyList, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyConfirmTransfer + + template (value) PDUSessionResourceModifyConfirmTransfer.iE_Extensions m_pDUSessionResourceModifyConfirmTransfer_id_RedundantUL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pDUSessionResourceModifyConfirmTransferr_id_RedundantUL_NGU_UP_TNLInformation + + template (value) PDUSessionResourceModifyConfirmTransfer.iE_Extensions m_pDUSessionResourceModifyConfirmTransfer_id_AdditionalRedundantNGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList + ) := { + { + id := id_AdditionalRedundantNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template m_pDUSessionResourceModifyConfirmTransferr_id_AdditionalRedundantNGU_UP_TNLInformation + + template (omit) PDUSessionResourceModifyIndicationUnsuccessfulTransfer m_pDUSessionResourceModifyIndicationUnsuccessfulTransfer( + in template (value) Cause p_cause, + in template (omit) PDUSessionResourceModifyIndicationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyIndicationUnsuccessfulTransfer + + template (value) PDUSessionResourceModifyRequestTransfer m_pDUSessionResourceModifyRequestTransfer( + in template (omit) PDUSessionResourceModifyRequestTransfer.protocolIEs p_protocolIEs + ) := { + protocolIEs := p_protocolIEs + } // End of template m_pDUSessionResourceModifyRequestTransfer + + template (value) PDUSessionResourceModifyRequestTransfer m_pDUSessionResourceModifyRequestTransfer_options( + in template (value) UL_NGU_UP_TNLModifyList p_uL_NGU_UP_TNLModifyList, + in template (value) QosFlowAddOrModifyRequestList p_qosFlowAddOrModifyRequestList + ) := { + protocolIEs := { + { + id := id_UL_NGU_UP_TNLModifyList, + criticality := reject, + value_ := { UL_NGU_UP_TNLModifyList := p_uL_NGU_UP_TNLModifyList } + }, + { + id := id_QosFlowAddOrModifyRequestList, + criticality := reject, + value_ := { QosFlowAddOrModifyRequestList := p_qosFlowAddOrModifyRequestList } + } + } + } // End of template m_pDUSessionResourceModifyRequestTransfer_options + + template (omit) PDUSessionResourceModifyResponseTransfer m_pDUSessionResourceModifyResponseTransfer( + in template (omit) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := omit, + in template (omit) UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := omit, + in template (omit) QosFlowAddOrModifyResponseList p_qosFlowAddOrModifyResponseList := omit, + in template (omit) QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := omit, + in template (omit) QosFlowListWithCause p_qosFlowFailedToAddOrModifyList := omit, + in template (omit) PDUSessionResourceModifyResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + qosFlowAddOrModifyResponseList := p_qosFlowAddOrModifyResponseList, + additionalDLQosFlowPerTNLInformation := p_additionalDLQosFlowPerTNLInformation, + qosFlowFailedToAddOrModifyList := p_qosFlowFailedToAddOrModifyList, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyResponseTransfer + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_AdditionalNGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList + ) := { + { + id := id_AdditionalNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_AdditionalNGU_UP_TNLInformation + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_RedundantDL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_RedundantDL_NGU_UP_TNLInformation + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_RedundantUL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_RedundantUL_NGU_UP_TNLInformation + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantNGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList + ) := { + { + id := id_AdditionalRedundantNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantNGU_UP_TNLInformation + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_SecondaryRATUsageInformation( + in template (value) SecondaryRATUsageInformation p_secondaryRATUsageInformation + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_SecondaryRATUsageInformation + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_MBS_SupportIndicator( + in template (value) MBS_SupportIndicator p_mBS_SupportIndicator + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_MBS_SupportIndicator + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_MBSSessionSetuporModifyResponseList( + in template (value) MBSSessionSetupResponseList p_mBSSessionSetupResponseList + ) := { + { + id := id_MBSSessionSetuporModifyResponseList, + criticality := ignore, + extensionValue := { MBSSessionSetupResponseList := p_mBSSessionSetupResponseList } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_MBSSessionSetuporModifyResponseList + + template (value) PDUSessionResourceModifyResponseTransfer.iE_Extensions m_pDUSessionResourceModifyResponseTransfer_id_MBSSessionFailedtoSetuporModifyList( + in template (value) MBSSessionFailedtoSetupList p_mBSSessionFailedtoSetupList + ) := { + { + id := id_MBSSessionFailedtoSetuporModifyList, + criticality := ignore, + extensionValue := { MBSSessionFailedtoSetupList := p_mBSSessionFailedtoSetupList } + } + } // End of template m_pDUSessionResourceModifyResponseTransfer_id_MBSSessionFailedtoSetuporModifyList + + template (omit) PDUSessionResourceModifyIndicationTransfer m_pDUSessionResourceModifyIndicationTransfer( + in template (value) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation, + in template (omit) QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := omit, + in template (omit) PDUSessionResourceModifyIndicationTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + dLQosFlowPerTNLInformation := p_dLQosFlowPerTNLInformation, + additionalDLQosFlowPerTNLInformation := p_additionalDLQosFlowPerTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyIndicationTransfer + + template (value) PDUSessionResourceModifyIndicationTransfer.iE_Extensions m_pDUSessionResourceModifyIndicationTransfer_id_SecondaryRATUsageInformation( + in template (value) SecondaryRATUsageInformation p_secondaryRATUsageInformation + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template m_pDUSessionResourceModifyIndicationTransfer_id_SecondaryRATUsageInformation + + template (value) PDUSessionResourceModifyIndicationTransfer.iE_Extensions m_pDUSessionResourceModifyIndicationTransfer_id_SecurityResult( + in template (value) SecurityResult p_securityResult + ) := { + { + id := id_SecurityResult, + criticality := ignore, + extensionValue := { SecurityResult := p_securityResult } + } + } // End of template m_pDUSessionResourceModifyIndicationTransfer_id_SecurityResult + + template (value) PDUSessionResourceModifyIndicationTransfer.iE_Extensions m_pDUSessionResourceModifyIndicationTransfer_id_RedundantDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformation p_qosFlowPerTNLInformation + ) := { + { + id := id_RedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformation := p_qosFlowPerTNLInformation } + } + } // End of template m_pDUSessionResourceModifyIndicationTransfer_id_RedundantDLQosFlowPerTNLInformation + + template (value) PDUSessionResourceModifyIndicationTransfer.iE_Extensions m_pDUSessionResourceModifyIndicationTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template m_pDUSessionResourceModifyIndicationTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (value) PDUSessionResourceModifyIndicationTransfer.iE_Extensions m_pDUSessionResourceModifyIndicationTransfer_id_GlobalRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template m_pDUSessionResourceModifyIndicationTransfer_id_GlobalRANNodeID + + template (omit) PDUSessionResourceModifyItemModCfm m_pDUSessionResourceModifyItemModCfm( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceModifyItemModCfm.pDUSessionResourceModifyConfirmTransfer p_pDUSessionResourceModifyConfirmTransfer, + in template (omit) PDUSessionResourceModifyItemModCfm.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyConfirmTransfer := p_pDUSessionResourceModifyConfirmTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyItemModCfm + + template (omit) PDUSessionResourceModifyItemModInd m_pDUSessionResourceModifyItemModInd( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceModifyItemModInd.pDUSessionResourceModifyIndicationTransfer p_pDUSessionResourceModifyIndicationTransfer, + in template (omit) PDUSessionResourceModifyItemModInd.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyIndicationTransfer := p_pDUSessionResourceModifyIndicationTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyItemModInd + + template (omit) PDUSessionResourceModifyItemModReq m_pDUSessionResourceModifyItemModReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceModifyItemModReq.pDUSessionResourceModifyRequestTransfer p_pDUSessionResourceModifyRequestTransfer, + in template (omit) NAS_PDU p_nAS_PDU := omit, + in template (omit) PDUSessionResourceModifyItemModReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + nAS_PDU := p_nAS_PDU, + pDUSessionResourceModifyRequestTransfer := p_pDUSessionResourceModifyRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyItemModReq + + template (value) PDUSessionResourceModifyItemModReq.iE_Extensions m_pDUSessionResourceModifyItemModReq_id_S_NSSAI( + in template (value) S_NSSAI p_s_nSSAI + ) := { + { + id := id_S_NSSAI, + criticality := reject, + extensionValue := { S_NSSAI := p_s_nSSAI } + } + } // End of template m_pDUSessionResourceModifyItemModReq_id_S_NSSAI + + template (value) PDUSessionResourceModifyItemModReq.iE_Extensions m_pDUSessionResourceModifyItemModReq_id_PduSessionExpectedUEActivityBehaviour( + in template (value) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template m_pDUSessionResourceModifyItemModReq_id_PduSessionExpectedUEActivityBehaviour + + template (value) PDUSessionResourceModifyItemModReq.iE_Extensions m_pDUSessionResourceModifyItemModReq_full( + in template (value) S_NSSAI p_s_nSSAI, + in template (value) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour + ) := { + { + id := id_S_NSSAI, + criticality := reject, + extensionValue := { S_NSSAI := p_s_nSSAI } + }, + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template m_pDUSessionResourceModifyItemModReq_full + + template (omit) PDUSessionResourceModifyItemModRes m_pDUSessionResourceModifyItemModRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceModifyItemModRes.pDUSessionResourceModifyResponseTransfer p_pDUSessionResourceModifyResponseTransfer, + in template (omit) PDUSessionResourceModifyItemModRes.iE_Extensions p_iE_Extensions := omit + ) := { + + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyResponseTransfer := p_pDUSessionResourceModifyResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyItemModRes + + template (omit) PDUSessionResourceModifyUnsuccessfulTransfer m_pDUSessionResourceModifyUnsuccessfulTransfer( + in template (value) Cause p_cause, + in template (omit) CriticalityDiagnostics p_criticalityDiagnostics := omit, + in template (omit) PDUSessionResourceModifyUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceModifyUnsuccessfulTransfer + + template (omit) PDUSessionResourceNotifyItem m_pDUSessionResourceNotifyItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceNotifyItem.pDUSessionResourceNotifyTransfer p_pDUSessionResourceNotifyTransfer, + in template (omit) PDUSessionResourceNotifyItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceNotifyTransfer := p_pDUSessionResourceNotifyTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceNotifyItem + + template (omit) PDUSessionResourceNotifyReleasedTransfer m_pDUSessionResourceNotifyReleasedTransfer( + in template (value) Cause p_cause, + in template (omit) PDUSessionResourceNotifyReleasedTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceNotifyReleasedTransfer + + template (value) PDUSessionResourceNotifyReleasedTransfer.iE_Extensions m_pDUSessionResourceNotifyReleasedTransfer_id_SecondaryRATUsageInformation( + in template (value) SecondaryRATUsageInformation p_secondaryRATUsageInformation + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template m_pDUSessionResourceNotifyReleasedTransfer_id_SecondaryRATUsageInformation + + template (omit) PDUSessionResourceNotifyTransfer m_pDUSessionResourceNotifyTransfer( + in template (omit) QosFlowNotifyList p_qosFlowNotifyList := omit, + in template (omit) QosFlowListWithCause p_qosFlowReleasedList := omit, + in template (omit) PDUSessionResourceNotifyTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowNotifyList := p_qosFlowNotifyList, + qosFlowReleasedList := p_qosFlowReleasedList, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceNotifyTransfer + + template (value) PDUSessionResourceNotifyTransfer.iE_Extensions m_pDUSessionResourceNotifyTransfer_id_SecondaryRATUsageInformation( + in template (value) SecondaryRATUsageInformation p_secondaryRATUsageInformation + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template m_pDUSessionResourceNotifyReleasedTransfer_id_SecondaryRATUsageInformation + + template (value) PDUSessionResourceNotifyTransfer.iE_Extensions m_pDUSessionResourceNotifyTransfer_id_QosFlowFeedbackList( + in template (value) QosFlowFeedbackList p_qosFlowFeedbackList + ) := { + { + id := id_QosFlowFeedbackList, + criticality := ignore, + extensionValue := { QosFlowFeedbackList := p_qosFlowFeedbackList } + } + } // End of template m_pDUSessionResourceNotifyReleasedTransfer_id_QosFlowFeedbackList + + template (omit) PDUSessionResourceReleaseCommandTransfer m_pDUSessionResourceReleaseCommandTransfer( + in template (value) Cause p_cause, + in template (omit) PDUSessionResourceReleaseCommandTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceReleaseCommandTransfer + + template (omit) PDUSessionResourceReleasedItemNot m_pDUSessionResourceReleasedItemNot( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceReleasedItemNot.pDUSessionResourceNotifyReleasedTransfer p_pDUSessionResourceNotifyReleasedTransfer, + in template (omit) PDUSessionResourceReleasedItemNot.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceNotifyReleasedTransfer := p_pDUSessionResourceNotifyReleasedTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceReleasedItemNot + + template (omit) PDUSessionResourceReleasedItemPSAck m_pDUSessionResourceReleasedItemPSAck( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceReleasedItemPSAck.pathSwitchRequestUnsuccessfulTransfer p_pathSwitchRequestUnsuccessfulTransfer, + in template (omit) PDUSessionResourceReleasedItemPSAck.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestUnsuccessfulTransfer := p_pathSwitchRequestUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceReleasedItemPSAck + + template (omit) PDUSessionResourceReleasedItemPSFail m_pDUSessionResourceReleasedItemPSFail( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceReleasedItemPSFail.pathSwitchRequestUnsuccessfulTransfer p_pathSwitchRequestUnsuccessfulTransfer, + in template (omit) PDUSessionResourceReleasedItemPSFail.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestUnsuccessfulTransfer := p_pathSwitchRequestUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceReleasedItemPSFail + + template (omit) PDUSessionResourceReleasedItemRelRes m_pDUSessionResourceReleasedItemRelRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceReleasedItemRelRes.pDUSessionResourceReleaseResponseTransfer p_pDUSessionResourceReleaseResponseTransfer, + in template (omit) PDUSessionResourceReleasedItemRelRes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceReleaseResponseTransfer := p_pDUSessionResourceReleaseResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceReleasedItemRelRes + + template (omit) PDUSessionResourceReleaseResponseTransfer m_pDUSessionResourceReleaseResponseTransfer( + in template (omit) PDUSessionResourceReleaseResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceReleaseResponseTransfer + + template (value) PDUSessionResourceNotifyTransfer.iE_Extensions m_pDUSessionResourceReleaseResponseTransfer_id_SecondaryRATUsageInformation( + in template (value) SecondaryRATUsageInformation p_secondaryRATUsageInformation + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template m_pDUSessionResourceReleaseResponseTransfer_id_SecondaryRATUsageInformation + + template (omit) PDUSessionResourceResumeItemRESReq m_pDUSessionResourceResumeItemRESReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceResumeItemRESReq.uEContextResumeRequestTransfer p_uEContextResumeRequestTransfer, + in template (omit) PDUSessionResourceResumeItemRESReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + uEContextResumeRequestTransfer := p_uEContextResumeRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceResumeItemRESReq + + template (omit) PDUSessionResourceResumeItemRESRes m_pDUSessionResourceResumeItemRESRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceResumeItemRESRes.uEContextResumeResponseTransfer p_uEContextResumeResponseTransfer, + in template (omit) PDUSessionResourceResumeItemRESRes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + uEContextResumeResponseTransfer := p_uEContextResumeResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceResumeItemRESRes + + template (omit) PDUSessionResourceSecondaryRATUsageItem m_pPDUSessionResourceSecondaryRATUsageItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceSecondaryRATUsageItem.secondaryRATDataUsageReportTransfer p_secondaryRATDataUsageReportTransfer, + in template (omit) PDUSessionResourceSecondaryRATUsageItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + secondaryRATDataUsageReportTransfer := p_secondaryRATDataUsageReportTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pPDUSessionResourceSecondaryRATUsageItem + + template (omit) PDUSessionResourceSetupItemCxtReq m_pDUSessionResourceSetupItemCxtReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) S_NSSAI p_s_NSSAI, + in template (value) PDUSessionResourceSetupItemCxtReq.pDUSessionResourceSetupRequestTransfer p_pDUSessionResourceSetupRequestTransfer, + in template (omit) NAS_PDU p_nAS_PDU := omit, + in template (omit) PDUSessionResourceSetupItemCxtReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + nAS_PDU := p_nAS_PDU, + s_NSSAI := p_s_NSSAI, + pDUSessionResourceSetupRequestTransfer := p_pDUSessionResourceSetupRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupItemCxtReq + + template (value) PDUSessionResourceSetupItemCxtReq.iE_Extensions m_pDUSessionResourceSetupItemCxtReq_id_PduSessionExpectedUEActivityBehaviour( + in template (value) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template m_pDUSessionResourceSetupItemCxtReq_id_PduSessionExpectedUEActivityBehaviour + + template (omit) PDUSessionResourceSetupItemCxtRes m_pDUSessionResourceSetupItemCxtRes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceSetupItemCxtRes.pDUSessionResourceSetupResponseTransfer p_pDUSessionResourceSetupResponseTransfer, + in template (omit) PDUSessionResourceSetupItemCxtRes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupResponseTransfer := p_pDUSessionResourceSetupResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupItemCxtRes + + template (omit) PDUSessionResourceSetupItemHOReq m_pDUSessionResourceSetupItemHOReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) S_NSSAI p_s_NSSAI, + in template (value) PDUSessionResourceSetupItemHOReq.handoverRequestTransfer p_handoverRequestTransfer, + in template (omit) PDUSessionResourceSetupItemHOReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + s_NSSAI := p_s_NSSAI, + handoverRequestTransfer := p_handoverRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupItemHOReq + + template (value) PDUSessionResourceSetupItemHOReq.iE_Extensions m_pDUSessionResourceSetupItemHOReq_id_PduSessionExpectedUEActivityBehaviour( + in template (value) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template m_pDUSessionResourceSetupItemCxtReq_id_PduSessionExpectedUEActivityBehaviour + + template (omit) PDUSessionResourceSetupItemSUReq m_pDUSessionResourceSetupItemSUReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) S_NSSAI p_s_NSSAI, + in template (value) PDUSessionResourceSetupItemSUReq.pDUSessionResourceSetupRequestTransfer p_pDUSessionResourceSetupRequestTransfer, + in template (omit) NAS_PDU p_pDUSessionNAS_PDU := omit, + in template (omit) PDUSessionResourceSetupItemSUReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionNAS_PDU := p_pDUSessionNAS_PDU, + s_NSSAI := p_s_NSSAI, + pDUSessionResourceSetupRequestTransfer := p_pDUSessionResourceSetupRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupItemSUReq + + template (value) PDUSessionResourceSetupItemSUReq.iE_Extensions m_pDUSessionResourceSetupItemSUReq_id_PduSessionExpectedUEActivityBehaviour( + in template (value) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template m_pDUSessionResourceSetupItemSUReq_id_PduSessionExpectedUEActivityBehaviour + + template (omit) PDUSessionResourceSetupItemSURes m_pDUSessionResourceSetupItemSURes( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceSetupItemSURes.pDUSessionResourceSetupResponseTransfer p_pDUSessionResourceSetupResponseTransfer, + in template (omit) PDUSessionResourceSetupItemSURes.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupResponseTransfer := p_pDUSessionResourceSetupResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupItemSURes + + template (value) PDUSessionResourceSetupRequestTransfer m_pDUSessionResourceSetupRequestTransfer( + in template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs p_protocolIEs + ) := { + protocolIEs := p_protocolIEs + } // End of template m_pDUSessionResourceSetupRequestTransfer + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_mandatories( + in template (value) PDUSessionType p_pDUSessionType, + in template (value) QosFlowSetupRequestList p_qosFlowSetupRequestList, + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + }, + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + }, + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_mandatories + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_handover( + in template (value) PDUSessionType p_pDUSessionType, + in template (value) QosFlowSetupRequestList p_qosFlowSetupRequestList, + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation, + in template (value) DataForwardingNotPossible p_dataForwardingNotPossible, + in template (value) SecurityIndication p_securityIndication + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + }, + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + }, + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + }, + { + id := id_DataForwardingNotPossible, + criticality := reject, + value_ := { DataForwardingNotPossible := p_dataForwardingNotPossible } + }, + { + id := id_SecurityIndication, + criticality := reject, + value_ := { SecurityIndication := p_securityIndication } + } + + } // End of template m_pDUSessionResourceSetupRequestTransfer_handover + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_handover_1( + in template (value) PDUSessionType p_pDUSessionType, + in template (value) QosFlowSetupRequestList p_qosFlowSetupRequestList, + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation, + in template (value) DirectForwardingPathAvailability p_directForwardingPathAvailability + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + }, + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + }, + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + }, + { + id := id_DirectForwardingPathAvailability, + criticality := ignore, + value_ := { DirectForwardingPathAvailability := p_directForwardingPathAvailability } + } + + } // End of template m_pDUSessionResourceSetupRequestTransfer_handover_1 + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_PDUSessionAggregateMaximumBitRate( + in template (value) PDUSessionAggregateMaximumBitRate p_pDUSessionAggregateMaximumBitRate + ) := { + { + id := id_PDUSessionAggregateMaximumBitRate, + criticality := reject, + value_ := { PDUSessionAggregateMaximumBitRate := p_pDUSessionAggregateMaximumBitRate } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_PDUSessionAggregateMaximumBitRate + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_UL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationList p_uPTransportLayerInformationList + ) := { + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_UL_NGU_UP_TNLInformation + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_DataForwardingNotPossible( + in template (value) DataForwardingNotPossible p_dataForwardingNotPossible + ) := { + { + id := id_DataForwardingNotPossible, + criticality := reject, + value_ := { DataForwardingNotPossible := p_dataForwardingNotPossible } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_DataForwardingNotPossible + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_PDUSessionType( + in template (value) PDUSessionType p_pDUSessionType + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_PDUSessionType + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_SecurityIndication( + in template (value) SecurityIndication p_securityIndication + ) := { + { + id := id_SecurityIndication, + criticality := reject, + value_ := { SecurityIndication := p_securityIndication } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_SecurityIndication + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_NetworkInstance( + in template (value) NetworkInstance p_networkInstance + ) := { + { + id := id_NetworkInstance, + criticality := reject, + value_ := { NetworkInstance := p_networkInstance } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_NetworkInstance + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_QosFlowSetupRequestList( + in template (value) QosFlowSetupRequestList p_qosFlowSetupRequestList + ) := { + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_QosFlowSetupRequestList + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_CommonNetworkInstance( + in template (value) CommonNetworkInstance p_commonNetworkInstance + ) := { + { + id := id_CommonNetworkInstance, + criticality := ignore, + value_ := { CommonNetworkInstance := p_commonNetworkInstance } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_CommonNetworkInstance + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_DirectForwardingPathAvailability( + in template (value) DirectForwardingPathAvailability p_directForwardingPathAvailability + ) := { + { + id := id_DirectForwardingPathAvailability, + criticality := ignore, + value_ := { DirectForwardingPathAvailability := p_directForwardingPathAvailability } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_DirectForwardingPathAvailability + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_RedundantUL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_RedundantUL_NGU_UP_TNLInformation + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_AdditionalRedundantUL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformationList p_uPTransportLayerInformationList + ) := { + { + id := id_AdditionalRedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + value_ := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_AdditionalRedundantUL_NGU_UP_TNLInformation + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_RedundantCommonNetworkInstancen( + in template (value) CommonNetworkInstance p_commonNetworkInstance + ) := { + { + id := id_RedundantCommonNetworkInstance, + criticality := ignore, + value_ := { CommonNetworkInstance := p_commonNetworkInstance } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_RedundantCommonNetworkInstance + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_RedundantPDUSessionInformation( + in template (value) RedundantPDUSessionInformation p_redundantPDUSessionInformation + ) := { + { + id := id_RedundantPDUSessionInformation, + criticality := ignore, + value_ := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_RedundantPDUSessionInformation + + template (value) PDUSessionResourceSetupRequestTransfer.protocolIEs m_pDUSessionResourceSetupRequestTransfer_id_MBSSessionSetupRequestList( + in template (value) MBSSessionSetupRequestList p_mBSSessionSetupRequestList + ) := { + { + id := id_MBSSessionSetupRequestList, + criticality := ignore, + value_ := { MBSSessionSetupRequestList := p_mBSSessionSetupRequestList } + } + } // End of template m_pDUSessionResourceSetupRequestTransfer_id_MBSSessionSetupRequestList + + template (omit) PDUSessionResourceSetupResponseTransfer m_pDUSessionResourceSetupResponseTransfer( + in template (value) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation, + in template (omit) QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := omit, + in template (omit) SecurityResult p_securityResult := omit, + in template (omit) QosFlowListWithCause p_qosFlowFailedToSetupList := omit, + in template (omit) PDUSessionResourceSetupResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + dLQosFlowPerTNLInformation := p_dLQosFlowPerTNLInformation, + additionalDLQosFlowPerTNLInformation := p_additionalDLQosFlowPerTNLInformation, + securityResult := p_securityResult, + qosFlowFailedToSetupList := p_qosFlowFailedToSetupList, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupResponseTransfer + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_RedundantDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformation p_qosFlowPerTNLInformation + ) := { + { + id := id_RedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformation := p_qosFlowPerTNLInformation } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_RedundantDLQosFlowPerTNLInformation + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation( + in template (value) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_UsedRSNInformation( + in template (value) RedundantPDUSessionInformation p_redundantPDUSessionInformation + ) := { + { + id := id_UsedRSNInformation, + criticality := ignore, + extensionValue := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_UsedRSNInformation + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_GlobalRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_GlobalRANNodeID + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_MBS_SupportIndicator( + in template (value) MBS_SupportIndicator p_mBS_SupportIndicator + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_MBS_SupportIndicator + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_MBSSessionSetupResponseList( + in template (value) MBSSessionSetupResponseList p_mBSSessionSetupResponseList + ) := { + { + id := id_MBSSessionSetupResponseList, + criticality := ignore, + extensionValue := { MBSSessionSetupResponseList := p_mBSSessionSetupResponseList } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_MBSSessionSetupResponseList + + template (value) PDUSessionResourceSetupResponseTransfer.iE_Extensions m_pDUSessionResourceSetupResponseTransfer_id_MBSSessionFailedtoSetupList( + in template (value) MBSSessionFailedtoSetupList p_mBSSessionFailedtoSetupList + ) := { + { + id := id_MBSSessionFailedtoSetupList, + criticality := ignore, + extensionValue := { MBSSessionFailedtoSetupList := p_mBSSessionFailedtoSetupList } + } + } // End of template m_pDUSessionResourceSetupResponseTransfer_id_MBSSessionFailedtoSetupList + + template (omit) PDUSessionResourceSetupUnsuccessfulTransfer m_pDUSessionResourceSetupUnsuccessfulTransfer( + in template (value) Cause p_cause, + in template (omit) CriticalityDiagnostics p_criticalityDiagnostics := omit, + in template (omit) PDUSessionResourceSetupUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSetupUnsuccessfulTransfer + + template (omit) PDUSessionResourceSuspendItemSUSReq m_pDUSessionResourceSuspendItemSUSReq( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceSuspendItemSUSReq.uEContextSuspendRequestTransfer p_uEContextSuspendRequestTransfer, + in template (omit) PDUSessionResourceSuspendItemSUSReq.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + uEContextSuspendRequestTransfer := p_uEContextSuspendRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSuspendItemSUSReq + + template (omit) PDUSessionResourceSwitchedItem m_pDUSessionResourceSwitchedItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceSwitchedItem.pathSwitchRequestAcknowledgeTransfer p_pathSwitchRequestAcknowledgeTransfer, + in template (omit) PDUSessionResourceSwitchedItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestAcknowledgeTransfer := p_pathSwitchRequestAcknowledgeTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceSwitchedItem + + template (value) PDUSessionResourceSwitchedItem.iE_Extensions m_pDUSessionResourceSwitchedItem_id_PduSessionExpectedUEActivityBehaviour( + in template (value) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template m_pDUSessionResourceSwitchedItem_id_PduSessionExpectedUEActivityBehaviour + + template (omit) PDUSessionResourceToBeSwitchedDLItem m_pDUSessionResourceToBeSwitchedDLItem( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceToBeSwitchedDLItem.pathSwitchRequestTransfer p_pathSwitchRequestTransfer, + in template (omit) PDUSessionResourceToBeSwitchedDLItem.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestTransfer := p_pathSwitchRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceToBeSwitchedDLItem + + template (omit) PDUSessionResourceToReleaseItemHOCmd m_pDUSessionResourceToReleaseItemHOCmd( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceToReleaseItemHOCmd.handoverPreparationUnsuccessfulTransfer p_handoverPreparationUnsuccessfulTransfer, + in template (omit) PDUSessionResourceToReleaseItemHOCmd.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + handoverPreparationUnsuccessfulTransfer := p_handoverPreparationUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceToReleaseItemHOCmd + + template (omit) PDUSessionResourceToReleaseItemRelCmd m_pDUSessionResourceToReleaseItemRelCmd( + in template (value) PDUSessionID p_pDUSessionID := PX_PDU_SESSION_ID, + in template (value) PDUSessionResourceToReleaseItemRelCmd.pDUSessionResourceReleaseCommandTransfer p_pDUSessionResourceReleaseCommandTransfer, + in template (omit) PDUSessionResourceToReleaseItemRelCmd.iE_Extensions p_iE_Extensions := omit + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceReleaseCommandTransfer := p_pDUSessionResourceReleaseCommandTransfer, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionResourceToReleaseItemRelCmd + + template (value) PDUSessionType m_pDUSessionType(in PDUSessionType p_value := ipv4) := p_value; + + template (omit) PDUSessionUsageReport m_pDUSessionUsageReport( + in template (value) PDUSessionUsageReport.rATType p_rATType := nr, + in template (value) VolumeTimedReportList p_pDUSessionTimedReportList, + in template (omit) PDUSessionUsageReport.iE_Extensions p_iE_Extensions := omit + ) := { + rATType := p_rATType, + pDUSessionTimedReportList := p_pDUSessionTimedReportList, + iE_Extensions := p_iE_Extensions + } // End of template m_pDUSessionUsageReport + + template (omit) PEIPSassistanceInformation m_pEIPSassistanceInformation( + in template (value)CNsubgroupID p_cNsubgroupID, + in template (omit) PEIPSassistanceInformation.iE_Extensions p_iE_Extensions := omit + ) := { + cNsubgroupID := p_cNsubgroupID, + iE_Extensions := p_iE_Extensions + } // End of template m_pEIPSassistanceInformation + + template (omit) PLMNAreaBasedQMC m_pLMNAreaBasedQMC( + in template (value) PLMNListforQMC p_plmnListforQMC, + in template (omit) PLMNAreaBasedQMC.iE_Extensions p_iE_Extensions := omit + ) := { + plmnListforQMC := p_plmnListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template m_pLMNAreaBasedQMC + + template (omit) PLMNSupportItem m_pLMNSupportItem( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) SliceSupportList p_sliceSupportList, + in template (omit) PLMNSupportItem.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + sliceSupportList := p_sliceSupportList, + iE_Extensions := p_iE_Extensions + } // End of template m_pLMNSupportItem + + template (value) PLMNSupportItem.iE_Extensions m_pLMNSupportItem_id_NPN_Support( + in template (value) NPN_Support p_nPN_Support + ) := { + { + id := id_NPN_Support, + criticality := reject, + extensionValue := { NPN_Support := p_nPN_Support } + } + } // End of template m_pLMNSupportItem_id_NPN_Support + + template (value) PLMNSupportItem.iE_Extensions m_pLMNSupportItem_id_ExtendedSliceSupportList( + in template (value) ExtendedSliceSupportList p_extendedSliceSupportList + ) := { + { + id := id_ExtendedSliceSupportList, + criticality := reject, + extensionValue := { ExtendedSliceSupportList := p_extendedSliceSupportList } + } + } // End of template m_pLMNSupportItem_id_ExtendedSliceSupportList + + template (value) PLMNSupportItem.iE_Extensions m_pLMNSupportItem_id_OnboardingSupport( + in template (value) OnboardingSupport p_onboardingSupport + ) := { + { + id := id_OnboardingSupport, + criticality := ignore, + extensionValue := { OnboardingSupport := p_onboardingSupport } + } + } // End of template m_pLMNSupportItem_id_OnboardingSupport + + template (omit) PNI_NPN_MobilityInformation m_pNI_NPN_MobilityInformation( + in template (value) Allowed_PNI_NPN_List p_allowed_PNI_NPI_List, + in template (omit) PNI_NPN_MobilityInformation.iE_Extensions p_iE_Extensions := omit + ) := { + allowed_PNI_NPI_List := p_allowed_PNI_NPI_List, + iE_Extensions := p_iE_Extensions + } // End of template m_pNI_NPN_MobilityInformation + + template (value) Pre_emptionCapability m_pre_emptionCapability(in Pre_emptionCapability p_value := shall_not_trigger_pre_emption) := p_value; + + template (value) Pre_emptionVulnerability m_pre_emptionVulnerability(in Pre_emptionVulnerability p_value := not_pre_emptable) := p_value; + + template (value) PWSFailedCellIDList m_pWSFailedCellIDList_nR_CGI_PWSFailedList( + in template (value) NR_CGIList p_nR_CGI_PWSFailedList + ) := { + nR_CGI_PWSFailedList := p_nR_CGI_PWSFailedList + } // End of template m_pWSFailedCellIDList_nR_CGI_PWSFailedList + + template (value) PWSFailedCellIDList m_pWSFailedCellIDList_eUTRA_CGI_PWSFailedList( + in template (value) EUTRA_CGIList p_eUTRA_CGI_PWSFailedList + ) := { + eUTRA_CGI_PWSFailedList := p_eUTRA_CGI_PWSFailedList + } // End of template m_pWSFailedCellIDList_eUTRA_CGI_PWSFailedList + + template (value) PWSFailedCellIDList m_pWSFailedCellIDList_choice_Extensions( + in template (value) PWSFailedCellIDList.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_pWSFailedCellIDList_choice_Extensions + + template (omit) QMCConfigInfo m_qMCConfigInfo( + in template (value) UEAppLayerMeasInfoList p_uEAppLayerMeasInfoList, + in template (omit) QMCConfigInfo.iE_Extensions p_iE_Extensions := omit + ) := { + uEAppLayerMeasInfoList := p_uEAppLayerMeasInfoList, + iE_Extensions := p_iE_Extensions + } // End of template m_qMCConfigInfo + + template (omit) QMCDeactivation m_qMCDeactivation( + in template (value) QoEReferenceList p_qoEReferenceList, + in template (omit) QMCDeactivation.iE_Extensions p_iE_Extensions := omit + ) := { + qoEReferenceList := p_qoEReferenceList, + iE_Extensions := p_iE_Extensions + } // End of template m_qMCDeactivation + + template (value) QosCharacteristics m_qosCharacteristics_nonDynamic5QI( + in template (value) NonDynamic5QIDescriptor p_nonDynamic5QI + ) := { + nonDynamic5QI := p_nonDynamic5QI + } // End of template m_qosCharacteristics_nonDynamic5QI + + template (value) QosCharacteristics m_qosCharacteristics_dynamic5QI( + in template (value) Dynamic5QIDescriptor p_dynamic5QI + ) := { + dynamic5QI := p_dynamic5QI + } // End of template m_qosCharacteristics_dynamic5QI + + template (value) QosCharacteristics m_qosCharacteristics_choice_Extensions( + in template (value) QosCharacteristics.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_qosCharacteristics_choice_Extensions + + template (omit) QosFlowAcceptedItem m_qosFlowAcceptedItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) QosFlowAcceptedItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template + + template (value) QosFlowAcceptedItem.iE_Extensions m_pLMNSupportItem_id_CurrentQoSParaSetIndex( + in template (value) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template m_pLMNSupportItem_id_ExtendedSliceSupportList + + template (omit) QosFlowAddOrModifyRequestItem m_qosFlowAddOrModifyRequestItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) QosFlowLevelQosParameters p_qosFlowLevelQosParameters := omit, + in template (omit) E_RAB_ID p_e_RAB_ID := omit, + in template (omit) QosFlowAddOrModifyRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + qosFlowLevelQosParameters := p_qosFlowLevelQosParameters, + e_RAB_ID := p_e_RAB_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowAddOrModifyRequestItem + + template (value) QosFlowAddOrModifyRequestItem.iE_Extensions m_qosFlowAddOrModifyRequestItem_id_TSCTrafficCharacteristics( + in template (value) TSCTrafficCharacteristics p_tSCTrafficCharacteristics + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + } + } // End of template m_qosFlowAddOrModifyRequestItem_id_TSCTrafficCharacteristics + + template (value) QosFlowAddOrModifyRequestItem.iE_Extensions m_qosFlowAddOrModifyRequestItem_id_RedundantQosFlowIndicator( + in template (value) RedundantQosFlowIndicator p_redundantQosFlowIndicator + ) := { + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template m_qosFlowAddOrModifyRequestItem_id_RedundantQosFlowIndicator + + template (value) QosFlowAddOrModifyRequestItem.iE_Extensions m_qosFlowAddOrModifyRequestItem_full( + in template (value) TSCTrafficCharacteristics p_tSCTrafficCharacteristics, + in template (value) RedundantQosFlowIndicator p_redundantQosFlowIndicator + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + }, + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template m_qosFlowAddOrModifyRequestItem_full + + template (omit) QosFlowAddOrModifyResponseItem m_qosFlowAddOrModifyResponseItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) QosFlowAddOrModifyResponseItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowAddOrModifyResponseItem + + template (value) QosFlowAddOrModifyResponseItem.iE_Extensions m_qosFlowAddOrModifyResponseItem_id_CurrentQoSParaSetIndex( + in template (value) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template m_qosFlowAddOrModifyResponseItem_id_CurrentQoSParaSetIndex + + template (omit) QosFlowFeedbackItem m_qosFlowFeedbackItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) UpdateFeedback p_updateFeedback := omit, + in template (omit) ExtendedPacketDelayBudget p_cNpacketDelayBudgetDL := omit, + in template (omit) ExtendedPacketDelayBudget p_cNpacketDelayBudgetUL := omit, + in template (omit) QosFlowFeedbackItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + updateFeedback := p_updateFeedback, + cNpacketDelayBudgetDL := p_cNpacketDelayBudgetDL, + cNpacketDelayBudgetUL := p_cNpacketDelayBudgetUL, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowFeedbackItem + + template (omit) QosFlowInformationItem m_qosFlowInformationItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) DLForwarding p_dLForwarding := omit, + in template (omit) QosFlowInformationItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + dLForwarding := p_dLForwarding, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowInformationItem + + template (value) QosFlowInformationItem.iE_Extensions m_qosFlowInformationItem_id_ULForwarding( + in template (value) ULForwarding p_uLForwarding + ) := { + { + id := id_ULForwarding, + criticality := ignore, + extensionValue := { ULForwarding := p_uLForwarding } + } + } // End of template m_qosFlowInformationItem_id_ULForwarding + + template (value) QosFlowInformationItem.iE_Extensions m_qosFlowInformationItem_id_SourceTNLAddrInfo( + in template (value) TransportLayerAddress p_transportLayerAddress := PX_SOURCE_TRANSPORT_LAYER_ADDRESS + ) := { + { + id := id_SourceTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template m_qosFlowInformationItem_id_SourceTNLAddrInfo + + template (value) QosFlowInformationItem.iE_Extensions m_qosFlowInformationItem_id_SourceNodeTNLAddrInfo( + in template (value) TransportLayerAddress p_transportLayerAddress := PX_SOURCE_TRANSPORT_LAYER_ADDRESS + ) := { + { + id := id_SourceNodeTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template m_qosFlowInformationItem_id_SourceNodeTNLAddrInfo + + template (omit) QosFlowLevelQosParameters m_qosFlowLevelQosParameters( + in template (value) QosCharacteristics p_qosCharacteristics, + in template (value) AllocationAndRetentionPriority p_allocationAndRetentionPriority, + in template (omit) GBR_QosInformation p_gBR_QosInformation := omit, + in template (omit) ReflectiveQosAttribute p_reflectiveQosAttribute := omit, + in template (omit) AdditionalQosFlowInformation p_additionalQosFlowInformation := omit, + in template (omit) QosFlowLevelQosParameters.iE_Extensions p_iE_Extensions := omit + ) := { + qosCharacteristics := p_qosCharacteristics, + allocationAndRetentionPriority := p_allocationAndRetentionPriority, + gBR_QosInformation := p_gBR_QosInformation, + reflectiveQosAttribute := p_reflectiveQosAttribute, + additionalQosFlowInformation := p_additionalQosFlowInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowLevelQosParameters + + template (value) QosFlowLevelQosParameters.iE_Extensions m_qosFlowLevelQosParameters_id_QosMonitoringRequest( + in template (value) QosMonitoringRequest p_qosMonitoringRequest + ) := { + { + id := id_QosMonitoringRequest, + criticality := ignore, + extensionValue := { QosMonitoringRequest := p_qosMonitoringRequest } + } + } // End of template m_qosFlowLevelQosParameters_id_QosMonitoringRequest + + template (value) QosFlowLevelQosParameters.iE_Extensions m_qosFlowLevelQosParameters_id_QosMonitoringReportingFrequency( + in template (value) QosMonitoringReportingFrequency p_qosMonitoringReportingFrequency + ) := { + { + id := id_QosMonitoringReportingFrequency, + criticality := ignore, + extensionValue := { QosMonitoringReportingFrequency := p_qosMonitoringReportingFrequency } + } + } // End of template m_qosFlowLevelQosParameters_id_QosMonitoringReportingFrequency + + template (value) QosFlowLevelQosParameters.iE_Extensions m_qosFlowLevelQosParameters_full( + in template (value) QosMonitoringRequest p_qosMonitoringRequest, + in template (value) QosMonitoringReportingFrequency p_qosMonitoringReportingFrequency + ) := { + { + id := id_QosMonitoringRequest, + criticality := ignore, + extensionValue := { QosMonitoringRequest := p_qosMonitoringRequest } + }, + { + id := id_QosMonitoringReportingFrequency, + criticality := ignore, + extensionValue := { QosMonitoringReportingFrequency := p_qosMonitoringReportingFrequency } + } + } // End of template m_qosFlowLevelQosParameters_full + + template (value) QosMonitoringRequest m_qosMonitoringRequest(in QosMonitoringRequest p_value := ul) := p_value; + + template (omit) QosFlowWithCauseItem m_qosFlowWithCauseItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (value) Cause p_cause, + in template (omit) QosFlowWithCauseItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowWithCauseItem + + template (omit) QosFlowModifyConfirmItem m_qosFlowModifyConfirmItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) QosFlowModifyConfirmItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowModifyConfirmItem + + template (omit) QosFlowNotifyItem m_qosFlowNotifyItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (value) NotificationCause p_notificationCause, + in template (omit) QosFlowNotifyItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + notificationCause := p_notificationCause, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowNotifyItem + + template (value) QosFlowNotifyItem.iE_Extensions m_qosFlowNotifyItem_id_CurrentQoSParaSetIndex( + in template (value) AlternativeQoSParaSetNotifyIndex p_alternativeQoSParaSetNotifyIndex + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetNotifyIndex := p_alternativeQoSParaSetNotifyIndex } + } + } // End of template m_qosFlowNotifyItem_id_CurrentQoSParaSetIndex + + template (omit) QosFlowParametersItem m_qosFlowParametersItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) AlternativeQoSParaSetList p_alternativeQoSParaSetList := omit, + in template (omit) QosFlowParametersItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + alternativeQoSParaSetList := p_alternativeQoSParaSetList, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowParametersItem + + template (value) QosFlowParametersItem.iE_Extensions m_qosFlowParametersItem_id_CNPacketDelayBudgetDL( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_CNPacketDelayBudgetDL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_qosFlowParametersItem_id_CNPacketDelayBudgetDL + + template (value) QosFlowParametersItem.iE_Extensions m_qosFlowParametersItem_id_CNPacketDelayBudgetUL( + in template (value) ExtendedPacketDelayBudget p_extendedPacketDelayBudget + ) := { + { + id := id_CNPacketDelayBudgetUL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template m_qosFlowParametersItem_id_CNPacketDelayBudgetUL + + template (value) QosFlowParametersItem.iE_Extensions m_qosFlowParametersItem_id_BurstArrivalTimeDownlink( + in template (value) BurstArrivalTime p_burstArrivalTime + ) := { + { + id := id_BurstArrivalTimeDownlink, + criticality := ignore, + extensionValue := { BurstArrivalTime := p_burstArrivalTime } + } + } // End of template m_qosFlowParametersItem_id_BurstArrivalTimeDownlink + + template (omit) QosFlowPerTNLInformation m_qosFlowPerTNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation, + in template (value) AssociatedQosFlowList p_associatedQosFlowList, + in template (omit) QosFlowPerTNLInformation.iE_Extensions p_iE_Extensions := omit + ) := { + uPTransportLayerInformation := p_uPTransportLayerInformation, + associatedQosFlowList := p_associatedQosFlowList, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowPerTNLInformation + + template (omit) QosFlowPerTNLInformationItem m_qosFlowPerTNLInformationItem( + in template (value) QosFlowPerTNLInformation p_qosFlowPerTNLInformation, + in template (omit) QosFlowPerTNLInformationItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowPerTNLInformation := p_qosFlowPerTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowPerTNLInformationItem + + template (omit) QosFlowSetupRequestItem m_qosFlowSetupRequestItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (value) QosFlowLevelQosParameters p_qosFlowLevelQosParameters, + in template (omit) E_RAB_ID p_e_RAB_ID := omit, + in template (omit) QosFlowSetupRequestItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + qosFlowLevelQosParameters := p_qosFlowLevelQosParameters, + e_RAB_ID := p_e_RAB_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowSetupRequestItem + + template (value) QosFlowSetupRequestItem.iE_Extensions m_qosFlowSetupRequestItem_id_TSCTrafficCharacteristics( + in template (value) TSCTrafficCharacteristics p_tSCTrafficCharacteristics + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + } + } // End of template m_qosFlowSetupRequestItem_id_TSCTrafficCharacteristics + + template (value) QosFlowSetupRequestItem.iE_Extensions m_qosFlowSetupRequestItem_id_RedundantQosFlowIndicator( + in template (value) RedundantQosFlowIndicator p_redundantQosFlowIndicator + ) := { + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template m_qosFlowSetupRequestItem_id_RedundantQosFlowIndicator + + template (value) QosFlowSetupRequestItem.iE_Extensions m_qosFlowSetupRequestItem_full( + in template (value) TSCTrafficCharacteristics p_tSCTrafficCharacteristics, + in template (value) RedundantQosFlowIndicator p_redundantQosFlowIndicator + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + }, + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template m_qosFlowSetupRequestItem_full + + template (omit) QosFlowItemWithDataForwarding m_qosFlowItemWithDataForwarding( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) DataForwardingAccepted p_dataForwardingAccepted := omit, + in template (omit) QosFlowItemWithDataForwarding.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + dataForwardingAccepted := p_dataForwardingAccepted, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowItemWithDataForwarding + + template (value) QosFlowItemWithDataForwarding.iE_Extensions m_qosFlowItemWithDataForwarding_id_CurrentQoSParaSetIndex( + in template (value) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template m_qosFlowItemWithDataForwarding_id_CurrentQoSParaSetIndex + + template (omit) QosFlowToBeForwardedItem m_qosFlowToBeForwardedItem( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (omit) QosFlowToBeForwardedItem.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template m_qosFlowToBeForwardedItem + + template (omit) QoSFlowsUsageReport_Item m_qoSFlowsUsageReport_Item( + in template (value) QosFlowIdentifier p_qosFlowIdentifier := PX_QOS_FLOW_IDENTIFIER, + in template (value) QoSFlowsUsageReport_Item.rATType p_rATType := nr, + in template (value) VolumeTimedReportList p_qoSFlowsTimedReportList, + in template (omit) QoSFlowsUsageReport_Item.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + rATType := p_rATType, + qoSFlowsTimedReportList := p_qoSFlowsTimedReportList, + iE_Extensions := p_iE_Extensions + } // End of template m_qoSFlowsUsageReport_Item + + template (value) Range m_range(in Range p_value := m50) := p_value; + + template (omit) RANStatusTransfer_TransparentContainer m_rANStatusTransfer_TransparentContainer( + in template (value) DRBsSubjectToStatusTransferList p_dRBsSubjectToStatusTransferList, + in template (omit) RANStatusTransfer_TransparentContainer.iE_Extensions p_iE_Extensions := omit + ) := { + dRBsSubjectToStatusTransferList := p_dRBsSubjectToStatusTransferList, + iE_Extensions := p_iE_Extensions + } // End of template m_rANStatusTransfer_TransparentContainer + + template (value) RAT_Information m_rAT_Information(in RAT_Information p_value := unlicensed) := p_value; + + template (omit) RATRestrictions_Item m_rATRestrictions_Item( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) RATRestrictionInformation p_rATRestrictionInformation, + in template (omit) RATRestrictions_Item.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + rATRestrictionInformation := p_rATRestrictionInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_rATRestrictions_Item + + template (value) RATRestrictions_Item.iE_Extensions m_rATRestrictions_Item_id_ExtendedRATRestrictionInformation( + in template (value) ExtendedRATRestrictionInformation p_extendedRATRestrictionInformation + ) := { + { + id := id_ExtendedRATRestrictionInformation, + criticality := ignore, + extensionValue := { ExtendedRATRestrictionInformation := p_extendedRATRestrictionInformation } + } + } // End of template m_rATRestrictions_Item_id_ExtendedRATRestrictionInformation + + template (omit) RecommendedCellsForPaging m_recommendedCellsForPaging( + in template (value) RecommendedCellList p_recommendedCellList, + in template (omit) RecommendedCellsForPaging.iE_Extensions p_iE_Extensions := omit + ) := { + recommendedCellList := p_recommendedCellList, + iE_Extensions := p_iE_Extensions + } // End of template m_recommendedCellsForPaging + + template (omit) RecommendedCellItem m_recommendedCellItem( + in template (value) NGRAN_CGI p_nGRAN_CGI, + in template (omit) RecommendedCellItem.timeStayedInCell p_timeStayedInCell := omit, + in template (omit) RecommendedCellItem.iE_Extensions p_iE_Extensions := omit + ) := { + nGRAN_CGI := p_nGRAN_CGI, + timeStayedInCell := p_timeStayedInCell, + iE_Extensions := p_iE_Extensions + } // End of template m_recommendedCellItem + + template (omit) RecommendedRANNodesForPaging m_recommendedRANNodesForPaging( + in template (value) RecommendedRANNodeList p_recommendedRANNodeList, + in template (omit) RecommendedRANNodesForPaging.iE_Extensions p_iE_Extensions := omit + ) := { + recommendedRANNodeList := p_recommendedRANNodeList, + iE_Extensions := p_iE_Extensions + } // End of template m_recommendedRANNodesForPaging + + template (omit) RecommendedRANNodeItem m_recommendedRANNodeItem( + in template (value) AMFPagingTarget p_aMFPagingTarget, + in template (omit) RecommendedRANNodeItem.iE_Extensions p_iE_Extensions := omit + ) := { + aMFPagingTarget := p_aMFPagingTarget, + iE_Extensions := p_iE_Extensions + } // End of template m_recommendedRANNodeItem + + template (value) RedCapIndication m_redCapIndication(in RedCapIndication p_value := redcap) := p_value; + + template (value) RedirectionVoiceFallback m_redirectionVoiceFallback(in RedirectionVoiceFallback p_value := possible) := p_value; + + template (omit) RedundantPDUSessionInformation m_redundantPDUSessionInformation( + in template (value) RSN p_rSN, + in template (omit) RedundantPDUSessionInformation.iE_Extensions p_iE_Extensions := omit + ) := { + rSN := p_rSN, + iE_Extensions := p_iE_Extensions + } // End of template m_redundantPDUSessionInformation + + template (value) RedundantPDUSessionInformation.iE_Extensions m_redundantPDUSessionInformation_id_PDUSessionPairID( + in template (value) PDUSessionPairID p_pDUSessionPairID + ) := { + { + id := id_PDUSessionPairID, + criticality := ignore, + extensionValue := { PDUSessionPairID := p_pDUSessionPairID } + } + } // End of template m_redundantPDUSessionInformation_id_PDUSessionPairID + + template (value) RedundantQosFlowIndicator m_RedundantQosFlowIndicator(in RedundantQosFlowIndicator p_value := true_) := p_value; + + template (value) ReflectiveQosAttribute m_reflectiveQosAttribute(in ReflectiveQosAttribute p_value := subject_to) := p_value; + + template (value) ReportArea m_reportArea(in ReportArea p_value := cell) := p_value; + + template (value) ResetAll m_resetAll(in ResetAll p_value := reset_all) := p_value; + + template (value) ReportAmountMDT m_reportAmountMDT(in ReportAmountMDT p_value := r1) := p_value; + + template (value) ReportIntervalMDT m_reportIntervalMDT(in ReportIntervalMDT p_value := ms120) := p_value; + + template (value) ExtendedReportIntervalMDT m_extendedReportIntervalMDT(in ExtendedReportIntervalMDT p_value := ms20480) := p_value; + + template (value) ResetType m_resetType_nG_Interface( + in template (value) ResetAll p_nG_Interface + ) := { + nG_Interface := p_nG_Interface + } // End of template m_resetType_nG_Interface + + template (value) ResetType m_resetType_partOfNG_Interface( + in template (value) UE_associatedLogicalNG_connectionList p_partOfNG_Interface + ) := { + partOfNG_Interface := p_partOfNG_Interface + } // End of template m_resetType_partOfNG_Interface + + template (value) ResetType m_resetType_choice_Extensions( + in template (value) ResetType.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_resetType_choice_Extensions + + template (value) RRCEstablishmentCause m_rRCEstablishmentCause(in RRCEstablishmentCause p_value := emergency) := p_value; + + template (value) RRCInactiveTransitionReportRequest m_rRCInactiveTransitionReportRequest(in RRCInactiveTransitionReportRequest p_value := subsequent_state_transition_report) := p_value; + + template (value) RRCState m_rRCState(in RRCState p_value := inactive) := p_value; + + template (value) RSN m_rSN(in RSN p_value := v1) := p_value; + + template (omit) RIMInformationTransfer m_rIMInformationTransfer( + in template (value) TargetRANNodeID_RIM p_targetRANNodeID_RIM, + in template (value) SourceRANNodeID p_sourceRANNodeID, + in template (value) RIMInformation p_rIMInformation, + in template (omit) RIMInformationTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + targetRANNodeID_RIM := p_targetRANNodeID_RIM, + sourceRANNodeID := p_sourceRANNodeID, + rIMInformation := p_rIMInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_rIMInformationTransfer + + template (omit) RIMInformation m_rIMInformation( + in template (value) GNBSetID p_targetgNBSetID, + in template (value) RIMInformation.rIM_RSDetection p_rIM_RSDetection := rs_detected, + in template (omit) RIMInformation.iE_Extensions p_iE_Extensions := omit + ) := { + targetgNBSetID := p_targetgNBSetID, + rIM_RSDetection := p_rIM_RSDetection, + iE_Extensions := p_iE_Extensions + } // End of template m_rIMInformation + + template (omit) ScheduledCommunicationTime m_scheduledCommunicationTime( + in template (omit) ScheduledCommunicationTime.dayofWeek p_dayofWeek := omit, + in template (omit) ScheduledCommunicationTime.timeofDayStart p_timeofDayStart := omit, + in template (omit) ScheduledCommunicationTime.timeofDayEnd p_timeofDayEnd := omit, + in template (omit) ScheduledCommunicationTime.iE_Extensions p_iE_Extensions := omit + ) := { + dayofWeek := p_dayofWeek, + timeofDayStart := p_timeofDayStart, + timeofDayEnd := p_timeofDayEnd, + iE_Extensions := p_iE_Extensions + } // End of template m_scheduledCommunicationTime + + template (omit) SecondaryRATUsageInformation m_secondaryRATUsageInformation( + in template (omit) PDUSessionUsageReport p_pDUSessionUsageReport := omit, + in template (omit) QoSFlowsUsageReportList p_qosFlowsUsageReportList := omit, + in template (omit) SecondaryRATUsageInformation.iE_Extension p_iE_Extensions := omit + ) := { + pDUSessionUsageReport := p_pDUSessionUsageReport, + qosFlowsUsageReportList := p_qosFlowsUsageReportList, + iE_Extension := p_iE_Extensions + } // End of template m_secondaryRATUsageInformation + + template (omit) SecondaryRATDataUsageReportTransfer m_secondaryRATDataUsageReportTransfer( + in template (omit) SecondaryRATUsageInformation p_secondaryRATUsageInformation := omit, + in template (omit) SecondaryRATDataUsageReportTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + secondaryRATUsageInformation := p_secondaryRATUsageInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_secondaryRATDataUsageReportTransfer + + template (omit) SecurityContext m_securityContext( + in template (value) NextHopChainingCount p_nextHopChainingCount := PX_NEXT_HOP_CHAINING_COUNT, + in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH, + in template (omit) SecurityContext.iE_Extensions p_iE_Extensions := omit + ) := { + nextHopChainingCount := p_nextHopChainingCount, + nextHopNH := p_nextHopNH, + iE_Extensions := p_iE_Extensions + } // End of template m_securityContext + + template (omit) SecurityIndication m_securityIndication( + in template (value) IntegrityProtectionIndication p_integrityProtectionIndication, + in template (value) ConfidentialityProtectionIndication p_confidentialityProtectionIndication, + in template (omit) MaximumIntegrityProtectedDataRate p_maximumIntegrityProtectedDataRate_UL := omit, + in template (omit) SecurityIndication.iE_Extensions p_iE_Extensions := omit + ) := { + integrityProtectionIndication := p_integrityProtectionIndication, + confidentialityProtectionIndication := p_confidentialityProtectionIndication, + maximumIntegrityProtectedDataRate_UL := p_maximumIntegrityProtectedDataRate_UL, + // The above IE shall be present if integrity protection is required or preferred + iE_Extensions := p_iE_Extensions + } // End of template m_securityIndication + + template (value) SecurityIndication.iE_Extensions m_securityIndication_id_MaximumIntegrityProtectedDataRate_DL( + in template (value) MaximumIntegrityProtectedDataRate p_maximumIntegrityProtectedDataRate + ) := { + { + id := id_MaximumIntegrityProtectedDataRate_DL, + criticality := ignore, + extensionValue := { MaximumIntegrityProtectedDataRate := p_maximumIntegrityProtectedDataRate } + } + } // End of template m_securityIndication_id_MaximumIntegrityProtectedDataRate_DL + + template (omit) SecurityResult m_securityResult( + in template (value) IntegrityProtectionResult p_integrityProtectionResult, + in template (value) ConfidentialityProtectionResult p_confidentialityProtectionResult, + in template (omit) SecurityResult.iE_Extensions p_iE_Extensions := omit + ) := { + integrityProtectionResult := p_integrityProtectionResult, + confidentialityProtectionResult := p_confidentialityProtectionResult, + iE_Extensions := p_iE_Extensions + } // End of template m_securityResult + + template (omit) SensorMeasurementConfiguration m_sensorMeasurementConfiguration( + in template (value) SensorMeasConfig p_sensorMeasConfig, + in template (omit) SensorMeasConfigNameList p_sensorMeasConfigNameList := omit, + in template (omit) SensorMeasurementConfiguration.iE_Extensions p_iE_Extensions := omit + ) := { + sensorMeasConfig := p_sensorMeasConfig, + sensorMeasConfigNameList := p_sensorMeasConfigNameList, + iE_Extensions := p_iE_Extensions + } // End of template m_sensorMeasurementConfiguration + + template (omit) SensorMeasConfigNameItem m_sensorMeasConfigNameItem( + in template (value) SensorNameConfig p_sensorNameConfig, + in template (omit) SensorMeasConfigNameItem.iE_Extensions p_iE_Extensions := omit + ) := { + sensorNameConfig := p_sensorNameConfig, + iE_Extensions := p_iE_Extensions + } // End of template m_sensorMeasConfigNameItem + + template (value) SensorMeasConfig m_sensorMeasConfig(in SensorMeasConfig p_value := setup) := p_value; + + template (value) SensorNameConfig m_sensorNameConfig_uncompensatedBarometricConfig( + in template (value) SensorNameConfig.uncompensatedBarometricConfig p_uncompensatedBarometricConfig := true_ + ) := { + uncompensatedBarometricConfig := p_uncompensatedBarometricConfig + } // End of template m_sensorNameConfig_uncompensatedBarometricConfig + + template (value) SensorNameConfig m_sensorNameConfig_ueSpeedConfig( + in template (value) SensorNameConfig.ueSpeedConfig p_ueSpeedConfig := true_ + ) := { + ueSpeedConfig := p_ueSpeedConfig + } // End of template m_sensorNameConfig_ueSpeedConfig + + template (value) SensorNameConfig m_sensorNameConfig_ueOrientationConfig( + in template (value) SensorNameConfig.ueOrientationConfig p_ueOrientationConfig := true_ + ) := { + ueOrientationConfig := p_ueOrientationConfig + } // End of template m_sensorNameConfig_ueOrientationConfig + + template (value) SensorNameConfig m_sensorNameConfig_choice_Extensions( + in template (value) SensorNameConfig.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_sensorNameConfig_choice_Extensions + + template (omit) ServedGUAMIItem m_servedGUAMIItem( + in template (value) GUAMI p_gUAMI, + in template (omit) AMFName p_backupAMFName := omit, + in template (omit) ServedGUAMIItem.iE_Extensions p_iE_Extensions := omit + ) := { + gUAMI := p_gUAMI, + backupAMFName := p_backupAMFName, + iE_Extensions := p_iE_Extensions + } // End of template m_servedGUAMIItem + + template (value) ServedGUAMIItem.iE_Extensions m_servedGUAMIItem_id_GUAMIType( + in template (value) GUAMIType p_gUAMIType + ) := { + { + id := id_GUAMIType, + criticality := ignore, + extensionValue := { GUAMIType := p_gUAMIType } + } + } // End of template m_servedGUAMIItem_id_GUAMIType + + template (omit) ServiceAreaInformation_Item m_serviceAreaInformation_Item( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (omit) AllowedTACs p_allowedTACs := omit, + in template (omit) NotAllowedTACs p_notAllowedTACs := omit, + in template (omit) ServiceAreaInformation_Item.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + allowedTACs := p_allowedTACs, + notAllowedTACs := p_notAllowedTACs, + iE_Extensions := p_iE_Extensions + } // End of template m_serviceAreaInformation_Item + + template (value) ServiceType m_serviceType(in ServiceType p_value := streaming) := p_value; + + template (omit) SharedNGU_MulticastTNLInformation m_sharedNGU_MulticastTNLInformation( + in template (value) TransportLayerAddress p_iP_MulticastAddress := PX_MC_TRANSPORT_LAYER_ADDRESS, + in template (value) TransportLayerAddress p_iP_SourceAddress := PX_SOURCE_TRANSPORT_LAYER_ADDRESS, + in template (value) GTP_TEID p_gTP_TEID := PX_GTP_TEID, + in template (omit) SharedNGU_MulticastTNLInformation.iE_Extensions p_iE_Extensions := omit + ) := { + iP_MulticastAddress := p_iP_MulticastAddress, + iP_SourceAddress := p_iP_SourceAddress, + gTP_TEID := p_gTP_TEID, + iE_Extensions := p_iE_Extensions + } // End of template m_sharedNGU_MulticastTNLInformation + + template (omit) SliceOverloadItem m_sliceOverloadItem( + in template (value) S_NSSAI p_s_NSSAI, + in template (omit) SliceOverloadItem.iE_Extensions p_iE_Extensions := omit + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template m_sliceOverloadItem + + template (omit) SliceSupportItem m_sliceSupportItem( + in template (value) S_NSSAI p_s_NSSAI, + in template (omit) SliceSupportItem.iE_Extensions p_iE_Extensions := omit + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template m_sliceSupportItem + + template (omit) SliceSupportQMC_Item m_sliceSupportQMC_Item( + in template (value) S_NSSAI p_s_NSSAI, + in template (omit) SliceSupportQMC_Item.iE_Extensions p_iE_Extensions := omit + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template m_sliceSupportQMC_Item + + template (omit) SNPN_MobilityInformation m_sNPN_MobilityInformation( + in template (value) NID p_serving_NID, + in template (omit) SNPN_MobilityInformation.iE_Extensions p_iE_Extensions := omit + ) := { + serving_NID := p_serving_NID, + iE_Extensions := p_iE_Extensions + } // End of template m_sNPN_MobilityInformation + + template (omit) S_NSSAI m_s_NSSAI( + in template (value) SST p_sST := PX_SST, + in template (omit) SD p_sD := omit, + in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit + ) := { + sST := p_sST, + sD := p_sD, + iE_Extensions := p_iE_Extensions + } // End of template m_s_NSSAI + + template (omit) SONConfigurationTransfer m_sONConfigurationTransfer( + in template (value) TargetRANNodeID_SON p_targetRANNodeID_SON, + in template (value) SourceRANNodeID p_sourceRANNodeID, + in template (value) SONInformation p_sONInformation, + in template (omit) XnTNLConfigurationInfo p_xnTNLConfigurationInfo := omit, + in template (omit) SONConfigurationTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + targetRANNodeID_SON := p_targetRANNodeID_SON, + sourceRANNodeID := p_sourceRANNodeID, + sONInformation := p_sONInformation, + xnTNLConfigurationInfo := p_xnTNLConfigurationInfo, + // The above IE shall be present if the SON Information IE contains the SON Information Request IE set to “Xn TNL Configuration Info” + iE_Extensions := p_iE_Extensions + } // End of template m_sONConfigurationTransfer + + template (value) SONInformation m_sONInformation_sONInformationRequest( + in template (value) SONInformationRequest p_sONInformationRequest + ) := { + sONInformationRequest := p_sONInformationRequest + } // End of template m_sONInformation_sONInformationRequest + + template (value) SONInformation m_sONInformation_sONInformationReply( + in template (value) SONInformationReply p_sONInformationReply + ) := { + sONInformationReply := p_sONInformationReply + } // End of template m_sONInformation_sONInformationReply + + template (value) SONInformation m_sONInformation_choice_Extensions( + in template (value) SONInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_sONInformation_choice_Extensions + + template (value) SONInformation.choice_Extensions m_sONInformatio_id_SONInformationReport( + in template (value) SONInformationReport p_sONInformationReport + ) := { + id := id_SONInformationReport, + criticality := ignore, + value_ := { SONInformationReport := p_sONInformationReport } + } // End of template m_sONInformatio_id_SONInformationReport + + template (omit) SONInformationReply m_sONInformationReply( + in template (omit) XnTNLConfigurationInfo p_xnTNLConfigurationInfo := omit, + in template (omit) SONInformationReply.iE_Extensions p_iE_Extensions := omit + ) := { + xnTNLConfigurationInfo := p_xnTNLConfigurationInfo, + iE_Extensions := p_iE_Extensions + } // End of template m_sONInformationReply + + template (value) SONInformationReport m_sONInformationReport_failureIndicationInformation( + in template (value) FailureIndication p_failureIndicationInformation + ) := { + failureIndicationInformation := p_failureIndicationInformation + } // End of template m_sONInformationReport_failureIndicationInformation + + template (value) SONInformationReport m_sONInformationReport_hOReportInformation( + in template (value) HOReport p_hOReportInformation + ) := { + hOReportInformation := p_hOReportInformation + } // End of template m_sONInformationReport_hOReportInformation + + template (value) SONInformationReport m_sONInformationReport_choice_Extensions( + in template (value) SONInformationReport.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_sONInformationReport_choice_Extensions + + template (value) SONInformationReport.choice_Extensions m_sONInformationReport_id_SONInformationReport( + in template (value) SuccessfulHandoverReportList p_successfulHandoverReportList + ) := { + id := id_SONInformationReport, + criticality := ignore, + value_ := { SuccessfulHandoverReportList := p_successfulHandoverReportList } + } // End of template m_sONInformationReport_id_SONInformationReport + + template (omit) SuccessfulHandoverReport_Item m_successfulHandoverReport_Item( + in template (value) octetstring p_successfulHOReportContainer, + in template (omit) SuccessfulHandoverReport_Item.iE_Extensions p_iE_Extensions := omit + ) := { + successfulHOReportContainer := p_successfulHOReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template m_successfulHandoverReport_Item + + template (value) SONInformationRequest m_sONInformationRequest(in SONInformationRequest p_value := xn_TNL_configuration_info) := p_value; + + template (omit) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer( + in template (value) NGRAN_CGI p_targetCell_ID, + in template (value) RRCContainer p_rRCContainer, + in template (value) UEHistoryInformation p_uEHistoryInformation, + in template (omit) PDUSessionResourceInformationList p_pDUSessionResourceInformationList := omit, + in template (omit) E_RABInformationList p_e_RABInformationList := omit, + in template (omit) IndexToRFSP p_indexToRFSP := omit, + in template (omit) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions p_iE_Extensions := omit + ):= { + rRCContainer := p_rRCContainer, + pDUSessionResourceInformationList := p_pDUSessionResourceInformationList, + e_RABInformationList := p_e_RABInformationList, + targetCell_ID := p_targetCell_ID, + indexToRFSP := p_indexToRFSP, + uEHistoryInformation := p_uEHistoryInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SgNB_UE_X2AP_ID( + in template (value) SgNB_UE_X2AP_ID p_sgNB_UE_X2AP_ID + ) := { + { + id := id_SgNB_UE_X2AP_ID, + criticality := ignore, + extensionValue := { SgNB_UE_X2AP_ID := p_sgNB_UE_X2AP_ID } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SgNB_UE_X2AP_ID + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEHistoryInformationFromTheUE( + in template (value) UEHistoryInformationFromTheUE p_uEHistoryInformationFromTheUE + ) := { + { + id := id_UEHistoryInformationFromTheUE, + criticality := ignore, + extensionValue := { UEHistoryInformationFromTheUE := p_uEHistoryInformationFromTheUE } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEHistoryInformationFromTheUE + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SourceNodeID( + in template (value) SourceNodeID p_sourceNodeID + ) := { + { + id := id_SourceNodeID, + criticality := ignore, + extensionValue := { SourceNodeID := p_sourceNodeID } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SourceNodeID + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEContextReferenceAtSource( + in template (value) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := PX_RAN_UE_NGAP_ID + ) := { + { + id := id_UEContextReferenceAtSource, + criticality := ignore, + extensionValue := { RAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEContextReferenceAtSource + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_SourcetoTargetList( + in template (value) MBS_ActiveSessionInformation_SourcetoTargetList p_mBS_ActiveSessionInformation_SourcetoTargetListD + ) := { + { + id := id_MBS_ActiveSessionInformation_SourcetoTargetList, + criticality := ignore, + extensionValue := { MBS_ActiveSessionInformation_SourcetoTargetList := p_mBS_ActiveSessionInformation_SourcetoTargetListD } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_SourcetoTargetList + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_QMCConfigInfo( + in template (value) QMCConfigInfo p_qMCConfigInfo + ) := { + { + id := id_QMCConfigInfo, + criticality := ignore, + extensionValue := { QMCConfigInfo := p_qMCConfigInfo } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_QMCConfigInfo + + template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_NGAPIESupportInformationRequestList( + in template (value) NGAPIESupportInformationRequestList p_nGAPIESupportInformationRequestList + ) := { + { + id := id_NGAPIESupportInformationRequestList, + criticality := ignore, + extensionValue := { NGAPIESupportInformationRequestList := p_nGAPIESupportInformationRequestList } + } + } // End of template m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_NGAPIESupportInformationRequestList + + template (value) SourceNodeID m_sourceNodeID_sourceengNB_ID( + in template (value) GlobalGNB_ID p_sourceengNB_ID + ) := { + sourceengNB_ID := p_sourceengNB_ID + } // End of template m_sourceNodeID_sourceengNB_ID + + template (value) SourceNodeID m_sourceNodeID_choice_Extensions( + in template (value) SourceNodeID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_sourceNodeID_choice_Extensions + + template (value) SourceOfUEActivityBehaviourInformation m_sourceOfUEActivityBehaviourInformation(in SourceOfUEActivityBehaviourInformation p_value := subscription_information) := p_value; + + template (omit) SourceRANNodeID m_sourceRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) TAI p_selectedTAI, + in template (omit) SourceRANNodeID.iE_Extensions p_iE_Extensions := omit + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template m_sourceRANNodeID + + // This IE includes a transparent container from the source RAN node to the target RAN node. + // The octets of the OCTET STRING are encoded according to the specifications of the target system. + + template (omit) SourceToTarget_AMFInformationReroute m_sourceToTarget_AMFInformationReroute( + in template (omit) ConfiguredNSSAI p_configuredNSSAI := omit, + in template (omit) RejectedNSSAIinPLMN p_rejectedNSSAIinPLMN := omit, + in template (omit) RejectedNSSAIinTA p_rejectedNSSAIinTA := omit, + in template (omit) SourceToTarget_AMFInformationReroute.iE_Extensions p_iE_Extensions := omit + ) := { + configuredNSSAI := p_configuredNSSAI, + rejectedNSSAIinPLMN := p_rejectedNSSAIinPLMN, + rejectedNSSAIinTA := p_rejectedNSSAIinTA, + iE_Extensions := p_iE_Extensions + } // End of template m_sourceToTarget_AMFInformationReroute + + // This IE includes information from the source Core node to the target Core node for reroute information provide by NSSF. + // The octets of the OCTET STRING are encoded according to the specifications of the Core network. + + template (value) SRVCCOperationPossible m_sRVCCOperationPossible(in SRVCCOperationPossible p_value := possible) := p_value; + + template (omit) SupportedTAItem m_supportedTAItem( + in template (value) TAC p_tAC := PX_TACode, + in template (value) BroadcastPLMNList p_broadcastPLMNList, + in template (omit) SupportedTAItem.iE_Extensions p_iE_Extensions := omit + ) := { + tAC := p_tAC, + broadcastPLMNList := p_broadcastPLMNList, + iE_Extensions := p_iE_Extensions + } // End of template m_supportedTAItem + + template (value) SupportedTAItem.iE_Extensions m_supportedTAItem_id_ConfiguredTACIndication( + in template (value) ConfiguredTACIndication p_configuredTACIndication + ) := { + { + id := id_ConfiguredTACIndication, + criticality := ignore, + extensionValue := { ConfiguredTACIndication := p_configuredTACIndication } + } + } // End of template m_supportedTAItem_id_ConfiguredTACIndication + + template (value) SupportedTAItem.iE_Extensions m_supportedTAItem_id_RAT_Information( + in template (value) RAT_Information p_rAT_Information + ) := { + { + id := id_RAT_Information, + criticality := reject, + extensionValue := { RAT_Information := p_rAT_Information } + } + } // End of template m_supportedTAItem_id_RAT_Information + + template (value) SupportedTAItem.iE_Extensions m_supportedTAItem_full( + in template (value) ConfiguredTACIndication p_configuredTACIndication, + in template (value) RAT_Information p_rAT_Information + ) := { + { + id := id_ConfiguredTACIndication, + criticality := ignore, + extensionValue := { ConfiguredTACIndication := p_configuredTACIndication } + }, + { + id := id_RAT_Information, + criticality := reject, + extensionValue := { RAT_Information := p_rAT_Information } + } + } // End of template m_supportedTAItem_full + + template (value) SuspendIndicator m_suspendIndicator(in SuspendIndicator p_value := true_) := p_value; + + template (value) Suspend_Request_Indication m_suspend_Request_Indication(in Suspend_Request_Indication p_value := suspend_requested) := p_value; + + template (value) Suspend_Response_Indication m_suspend_Response_Indication(in Suspend_Response_Indication p_value := suspend_indicated) := p_value; + + template (omit) TAI m_tAI( + in template (value) PLMNIdentity p_pLMNIdentity := PX_PLMN_IDENTITY, + in template (value) TAC p_tAC := PX_TACode, + in template (omit) TAI.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNIdentity := p_pLMNIdentity, + tAC := p_tAC, + iE_Extensions := p_iE_Extensions + } // End of template m_tAI + + template (omit) TAIBroadcastEUTRA_Item m_tAIBroadcastEUTRA_Item( + in template (value) TAI p_tAI, + in template (value) CompletedCellsInTAI_EUTRA p_completedCellsInTAI_EUTRA, + in template (omit) TAIBroadcastEUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + completedCellsInTAI_EUTRA := p_completedCellsInTAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template m_tAIBroadcastEUTRA_Item + + template (omit) TAIBroadcastNR_Item m_tAIBroadcastNR_Item( + in template (value) TAI p_tAI, + in template (value) CompletedCellsInTAI_NR p_completedCellsInTAI_NR, + in template (omit) TAIBroadcastNR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + completedCellsInTAI_NR := p_completedCellsInTAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template m_tAIBroadcastNR_Item + + template (omit) TAICancelledEUTRA_Item m_tAICancelledEUTRA_Item( + in template (value) TAI p_tAI, + in template (value) CancelledCellsInTAI_EUTRA p_cancelledCellsInTAI_EUTRA, + in template (omit) TAICancelledEUTRA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + cancelledCellsInTAI_EUTRA := p_cancelledCellsInTAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template m_tAICancelledEUTRA_Item + + template (omit) TAICancelledNR_Item m_tAICancelledNR_Item( + in template (value) TAI p_tAI, + in template (value) CancelledCellsInTAI_NR p_cancelledCellsInTAI_NR, + in template (omit) TAICancelledNR_Item.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + cancelledCellsInTAI_NR := p_cancelledCellsInTAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template m_tAICancelledNR_Item + + template (omit) TAIListForInactiveItem m_tAIListForInactiveItem( + in template (value) TAI p_tAI, + in template (omit) TAIListForInactiveItem.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template m_tAIListForInactiveItem + + template (omit) TAIListForPagingItem m_tAIListForPagingItem( + in template (value) TAI p_tAI, + in template (omit) TAIListForPagingItem.iE_Extensions p_iE_Extensions := omit + ) := { + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template m_tAIListForPagingItem + + template (omit) TAINSAGSupportItem m_tAINSAGSupportItem( + in template (value) NSAG_ID p_nSAG_ID, + in template (value) ExtendedSliceSupportList p_nSAGSliceSupportList, + in template (omit) TAINSAGSupportItem.iE_Extensions p_iE_Extensions := omit + ) := { + nSAG_ID := p_nSAG_ID, + nSAGSliceSupportList := p_nSAGSliceSupportList, + iE_Extensions := p_iE_Extensions + } // End of template m_tAINSAGSupportItem + + template (omit) TargeteNB_ID m_targeteNB_ID( + in template (value) GlobalNgENB_ID p_globalENB_ID, + in template (value) EPS_TAI p_selected_EPS_TAI, + in template (omit) TargeteNB_ID.iE_Extensions p_iE_Extensions := omit + ) := { + globalENB_ID := p_globalENB_ID, + selected_EPS_TAI := p_selected_EPS_TAI, + iE_Extensions := p_iE_Extensions + } // End of template m_targeteNB_ID + + template (omit) TargetHomeENB_ID m_targetHomeENB_ID( + in template (value) PLMNIdentity p_pLMNidentity, + in template (value) TargetHomeENB_ID.homeENB_ID p_homeENB_ID, + in template (value) EPS_TAI p_selected_EPS_TAI, + in template (omit) TargetHomeENB_ID.iE_Extensions p_iE_Extensions := omit + ) := { + pLMNidentity := p_pLMNidentity, + homeENB_ID := p_homeENB_ID, + selected_EPS_TAI := p_selected_EPS_TAI, + iE_Extensions := p_iE_Extensions + } // End of template m_targetHomeENB_ID + + template (value) TargetID m_targetID_targetRANNodeID( + in template (value) TargetRANNodeID p_targetRANNodeID + ) := { + targetRANNodeID := p_targetRANNodeID + } // End of template m_targetID_targetRANNodeID + + template (value) TargetID m_targetID_targeteNB_ID( + in template (value) TargeteNB_ID p_targeteNB_ID + ) := { + targeteNB_ID := p_targeteNB_ID + } // End of template m_targetID_targeteNB_ID + + template (value) TargetID m_targetID_choice_Extensions( + in template (value) TargetID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_targetID_choice_Extensions + + template (value) TargetID.choice_Extensions m_targetID_id_TargetRNC_ID( + in template (value) TargetRNC_ID p_targetRNC_ID + ) := { + id := id_TargetRNC_ID, + criticality := reject, + value_ := { TargetRNC_ID := p_targetRNC_ID } + } // End of template m_sONInformationReport_id_SONInformationReport + + template (value) TargetID.choice_Extensions m_targetID_id_TargetHomeENB_ID( + in template (value) TargetHomeENB_ID p_targetHomeENB_ID + ) := { + id := id_TargetHomeENB_ID, + criticality := reject, + value_ := { TargetHomeENB_ID := p_targetHomeENB_ID } + } // End of template m_sONInformationReport_id_TargetHomeENB_ID + + template (omit) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer( + in template (value) RRCContainer p_rRCContainer, + in template (omit) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions p_iE_Extensions := omit + ) := { + rRCContainer := p_rRCContainer, + iE_Extensions := p_iE_Extensions + } // End of template m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer + + template (value) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DAPSResponseInfoList( + in template (value) DAPSResponseInfoList p_dAPSResponseInfoList + ) := { + { + id := id_ConfiguredTACIndication, + criticality := ignore, + extensionValue := { DAPSResponseInfoList := p_dAPSResponseInfoList } + } + } // End of template m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DAPSResponseInfoList + + template (value) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DirectForwardingPathAvailability( + in template (value) DirectForwardingPathAvailability p_directForwardingPathAvailability + ) := { + { + id := id_DirectForwardingPathAvailability, + criticality := ignore, + extensionValue := { DirectForwardingPathAvailability := p_directForwardingPathAvailability } + } + } // End of template m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DirectForwardingPathAvailability + + template (value) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_TargettoSourceList( + in template (value) MBS_ActiveSessionInformation_TargettoSourceList p_mBS_ActiveSessionInformation_TargettoSourceList + ) := { + { + id := id_MBS_ActiveSessionInformation_TargettoSourceList, + criticality := ignore, + extensionValue := { MBS_ActiveSessionInformation_TargettoSourceList := p_mBS_ActiveSessionInformation_TargettoSourceList } + } + } // End of template m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_TargettoSourceList + + template (value) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_NGAPIESupportInformationResponseList( + in template (value) NGAPIESupportInformationResponseList p_nGAPIESupportInformationResponseList + ) := { + { + id := id_NGAPIESupportInformationResponseList, + criticality := ignore, + extensionValue := { NGAPIESupportInformationResponseList := p_nGAPIESupportInformationResponseList } + } + } // End of template m_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_NGAPIESupportInformationResponseList + + template (omit) TargetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer m_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer( + in template (omit) Cell_CAGInformation p_cell_CAGInformation := omit, + in template (omit) TargetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer.iE_Extensions p_iE_Extensions := omit + ) := { + cell_CAGInformation := p_cell_CAGInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer + + template (value) TargetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer.iE_Extensions m_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer_id_NGAPIESupportInformationResponseList( + in template (value) NGAPIESupportInformationResponseList p_nGAPIESupportInformationResponseList + ) := { + { + id := id_NGAPIESupportInformationResponseList, + criticality := ignore, + extensionValue := { NGAPIESupportInformationResponseList := p_nGAPIESupportInformationResponseList } + } + } // End of template m_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer_id_NGAPIESupportInformationResponseList + + template (omit) TargetNSSAI_Item m_targetNSSAI_Item( + in template (value) S_NSSAI p_s_NSSAI, + in template (omit) TargetNSSAI_Item.iE_Extensions p_iE_Extensions := omit + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template m_targetNSSAI_Item + + template (omit) TargetNSSAIInformation m_targetNSSAIInformation( + in template (value) TargetNSSAI p_targetNSSAI, + in template (value) IndexToRFSP p_indexToRFSP, + in template (omit) TargetNSSAIInformation.iE_Extensions p_iE_Extensions := omit + ) := { + targetNSSAI := p_targetNSSAI, + indexToRFSP := p_indexToRFSP, + iE_Extensions := p_iE_Extensions + } // End of template m_targetNSSAIInformation + + template (omit) TargetRANNodeID m_targetRANNodeID( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) TAI p_selectedTAI, + in template (omit) TargetRANNodeID.iE_Extensions p_iE_Extensions := omit + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template m_targetRANNodeID + + template (omit) TargetRANNodeID_RIM m_targetRANNodeID_RIM( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) TAI p_selectedTAI, + in template (omit) TargetRANNodeID_RIM.iE_Extensions p_iE_Extensions := omit + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template m_targetRANNodeID_RIM + + template (omit) TargetRANNodeID_SON m_targetRANNodeID_SON( + in template (value) GlobalRANNodeID p_globalRANNodeID, + in template (value) TAI p_selectedTAI, + in template (omit) TargetRANNodeID_SON.iE_Extensions p_iE_Extensions := omit + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template m_targetRANNodeID_SON + + template (value) TargetRANNodeID_SON.iE_Extensions m_targetRANNodeID_SON_id_NR_CGI( + in template (value) NR_CGI p_nR_CGI + ) := { + { + id := id_NR_CGI, + criticality := ignore, + extensionValue := { NR_CGI := p_nR_CGI } + } + } // End of template m_targetRANNodeID_SON_id_NR_CGI + + template (omit) TargetRNC_ID m_targetRNC_ID( + in template (value) LAI p_lAI, + in template (value) RNC_ID p_rNC_ID, + in template (omit) ExtendedRNC_ID p_extendedRNC_ID := omit, + in template (omit) TargetRNC_ID.iE_Extensions p_iE_Extensions := omit + ) := { + lAI := p_lAI, + rNC_ID := p_rNC_ID, + extendedRNC_ID := p_extendedRNC_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_targetRNC_ID + + template (value) TimerApproachForGUAMIRemoval m_timerApproachForGUAMIRemoval(in TimerApproachForGUAMIRemoval p_value := apply_timer) := p_value; + + template (omit) TimeSyncAssistanceInfo m_timeSyncAssistanceInfo( + in template (value) TimeSyncAssistanceInfo.timeDistributionIndication p_timeDistributionIndication := enabled, + in template (omit) TimeSyncAssistanceInfo.uUTimeSyncErrorBudget p_uUTimeSyncErrorBudget := omit, + in template (omit) TimeSyncAssistanceInfo.iE_Extensions p_iE_Extensions := omit + ) := { + timeDistributionIndication := p_timeDistributionIndication, + uUTimeSyncErrorBudget := p_uUTimeSyncErrorBudget, + // The above IE shall be present if the Time Distribution Indication IE is set to the value “enabled” + iE_Extensions := p_iE_Extensions + } // End of template m_timeSyncAssistanceInfo + + template (value) TimeToWait m_timeToWait(in TimeToWait p_value := v1s) := p_value; + + template (value) TNGF_ID m_tNGF_ID_tNGF_ID( + in template (value) TNGF_ID.tNGF_ID p_tNGF_ID + ) := { + tNGF_ID := p_tNGF_ID + } // End of template m_tNGF_ID_tNGF_ID + + template (value) TNGF_ID m_tNGF_ID_choice_Extensions( + in template (value) TNGF_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_tNGF_ID_choice_Extensions + + template (omit) TNLAssociationItem m_tNLAssociationItem( + in template (value) CPTransportLayerInformation p_tNLAssociationAddress, + in template (value) Cause p_cause, + in template (omit) TNLAssociationItem.iE_Extensions p_iE_Extensions := omit + ) := { + tNLAssociationAddress := p_tNLAssociationAddress, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template m_tNLAssociationItem + + template (value) TNLAssociationUsage m_TNLAssociationUsage(in TNLAssociationUsage p_value := ue) := p_value; + + template (omit) TooearlyIntersystemHO m_tooearlyIntersystemHO( + in template (value) EUTRA_CGI p_sourcecellID, + in template (value) NGRAN_CGI p_failurecellID, + in template (omit) UERLFReportContainer p_uERLFReportContainer := omit, + in template (omit) TooearlyIntersystemHO.iE_Extensions p_iE_Extensions := omit + ) := { + sourcecellID := p_sourcecellID, + failurecellID := p_failurecellID, + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template m_tooearlyIntersystemHO + + template (omit) TraceActivation m_traceActivation( + in template (value) NGRANTraceID p_nGRANTraceID := PX_NGRAN_TRACE_ID, + in template (value) InterfacesToTrace p_interfacesToTrace := PX_INTERFACES_TO_TRACE, + in template (value) TraceDepth p_traceDepth, + in template (value) TransportLayerAddress p_traceCollectionEntityIPAddress := PX_TRANSPORT_LAYER_ADDRESS, + in template (omit) TraceActivation.iE_Extensions p_iE_Extensions := omit + ) := { + nGRANTraceID := p_nGRANTraceID, + interfacesToTrace := p_interfacesToTrace, + traceDepth := p_traceDepth, + traceCollectionEntityIPAddress := p_traceCollectionEntityIPAddress, + iE_Extensions := p_iE_Extensions + } // End of template m_traceActivation + + template (value) TraceActivation.iE_Extensions m_traceActivation_id_MDTConfiguration( + in template (value) MDT_Configuration p_mDT_Configuration + ) := { + { + id := id_MDTConfiguration, + criticality := ignore, + extensionValue := { MDT_Configuration := p_mDT_Configuration } + } + } // End of template m_traceActivation_id_MDTConfiguration + + template (value) TraceActivation.iE_Extensions m_traceActivation_id_TraceCollectionEntityURI( + in template (value) URI_address p_uRI_address + ) := { + { + id := id_TraceCollectionEntityURI, + criticality := ignore, + extensionValue := { URI_address := p_uRI_address } + } + } // End of template m_traceActivation_id_TraceCollectionEntityURI + + template (value) TraceActivation.iE_Extensions m_traceActivation_full( + in template (value) MDT_Configuration p_mDT_Configuration, + in template (value) URI_address p_uRI_address + ) := { + { + id := id_MDTConfiguration, + criticality := ignore, + extensionValue := { MDT_Configuration := p_mDT_Configuration } + }, + { + id := id_TraceCollectionEntityURI, + criticality := ignore, + extensionValue := { URI_address := p_uRI_address } + } + } // End of template m_traceActivation_full + + template (value) TraceDepth m_traceDepth(in TraceDepth p_value := minimum) := p_value; + + template (value) TypeOfError m_typeOfError(in TypeOfError p_value := not_understood) := p_value; + + template (omit) TAIBasedMDT m_tAIBasedMDT( + in template (value) TAIListforMDT p_tAIListforMDT, + in template (omit) TAIBasedMDT.iE_Extensions p_iE_Extensions := omit + ) := { + tAIListforMDT := p_tAIListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template m_tAIBasedMDT + + template (omit) TAIBasedQMC m_tAIBasedQMC( + in template (value) TAIListforQMC p_tAIListforQMC, + in template (omit) TAIBasedQMC.iE_Extensions p_iE_Extensions := omit + ) := { + tAIListforQMC := p_tAIListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template m_tAIBasedQMC + + template (omit) TABasedQMC m_tABasedQMC( + in template (value) TAListforQMC p_tAListforQMC, + in template (omit) TABasedQMC.iE_Extensions p_iE_Extensions := omit + ) := { + tAListforQMC := p_tAListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template m_tABasedQMC + + template (omit) TABasedMDT m_tABasedMDT( + in template (value) TAListforMDT p_tAListforMDT, + in template (omit) TABasedMDT.iE_Extensions p_iE_Extensions := omit + ) := { + tAListforMDT := p_tAListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template m_tABasedMDT + + template (value) TimeToTrigger m_timeToTrigger(in TimeToTrigger p_value := ms0) := p_value; + + template (value) TWIF_ID m_tWIF_ID_tWIF_ID( + in template (value) TWIF_ID.tWIF_ID p_tWIF_ID + ) := { + tWIF_ID := p_tWIF_ID + } // End of template m_tWIF_ID_tWIF_ID + + template (value) TWIF_ID m_tWIF_ID_choice_Extensions( + in template (value) TWIF_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_tWIF_ID_choice_Extensions + + template (omit) TSCAssistanceInformation m_tSCAssistanceInformation( + in template (value) Periodicity p_periodicity, + in template (omit) BurstArrivalTime p_burstArrivalTime := omit, + in template (omit) TSCAssistanceInformation.iE_Extensions p_iE_Extensions := omit + ) := { + periodicity := p_periodicity, + burstArrivalTime := p_burstArrivalTime, + iE_Extensions := p_iE_Extensions + } // End of template m_tSCAssistanceInformation + + template (value) TSCAssistanceInformation.iE_Extensions m_tSCAssistanceInformation_id_SurvivalTime( + in template (value) SurvivalTime p_survivalTime + ) := { + { + id := id_SurvivalTime, + criticality := ignore, + extensionValue := { SurvivalTime := p_survivalTime } + } + } // End of template m_tSCAssistanceInformation_id_SurvivalTime + + template (omit) TSCTrafficCharacteristics m_tSCTrafficCharacteristics( + in template (omit) TSCAssistanceInformation p_tSCAssistanceInformationDL := omit, + in template (omit) TSCAssistanceInformation p_tSCAssistanceInformationUL := omit, + in template (omit) TSCTrafficCharacteristics.iE_Extensions p_iE_Extensions := omit + ) := { + tSCAssistanceInformationDL := p_tSCAssistanceInformationDL, + tSCAssistanceInformationUL := p_tSCAssistanceInformationUL, + iE_Extensions := p_iE_Extensions + } // End of template m_tSCTrafficCharacteristics + + template (omit) UEAggregateMaximumBitRate m_uEAggregateMaximumBitRate( + in template (value) BitRate p_uEAggregateMaximumBitRateDL := PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_DL, + in template (value) BitRate p_uEAggregateMaximumBitRateUL := PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_UL, + in template (omit) UEAggregateMaximumBitRate.iE_Extensions p_iE_Extensions := omit + ) := { + uEAggregateMaximumBitRateDL := p_uEAggregateMaximumBitRateDL, + uEAggregateMaximumBitRateUL := p_uEAggregateMaximumBitRateUL, + iE_Extensions := p_iE_Extensions + } // End of template m_uEAggregateMaximumBitRate + + template (omit) UEAppLayerMeasInfoItem m_uEAppLayerMeasInfoItem( + in template (value) UEAppLayerMeasConfigInfo p_uEAppLayerMeasConfigInfo, + in template (omit) UEAppLayerMeasInfoItem.iE_Extensions p_iE_Extensions := omit + ) := { + uEAppLayerMeasConfigInfo := p_uEAppLayerMeasConfigInfo, + iE_Extensions := p_iE_Extensions + } // End of template m_uEAppLayerMeasInfoItem + + template (omit) UEAppLayerMeasConfigInfo m_uEAppLayerMeasConfigInfo( + in template (value) QoEReference p_qoEReference, + in template (value) TransportLayerAddress p_measCollEntityIPAddress, + in template (omit) ServiceType p_serviceType, + in template (omit) AreaScopeOfQMC p_areaScopeOfQMC := omit, + in template (omit) UEAppLayerMeasConfigInfo.qoEMeasurementStatus p_qoEMeasurementStatus := omit, + in template (omit) UEAppLayerMeasConfigInfo.containerForAppLayerMeasConfig p_containerForAppLayerMeasConfig := omit, + in template (omit) UEAppLayerMeasConfigInfo.measConfigAppLayerID p_measConfigAppLayerID := omit, + in template (omit) SliceSupportListQMC p_sliceSupportListQMC := omit, + in template (omit) MDT_AlignmentInfo p_mDT_AlignmentInfo := omit, + in template (omit) AvailableRANVisibleQoEMetrics p_availableRANVisibleQoEMetrics := omit, + in template (omit) UEAppLayerMeasConfigInfo.iE_Extensions p_iE_Extensions := omit + ) := { + qoEReference := p_qoEReference, + serviceType := p_serviceType, + areaScopeOfQMC := p_areaScopeOfQMC, + measCollEntityIPAddress := p_measCollEntityIPAddress, + qoEMeasurementStatus := p_qoEMeasurementStatus, + containerForAppLayerMeasConfig := p_containerForAppLayerMeasConfig, + measConfigAppLayerID := p_measConfigAppLayerID, + sliceSupportListQMC := p_sliceSupportListQMC, + mDT_AlignmentInfo := p_mDT_AlignmentInfo, + availableRANVisibleQoEMetrics := p_availableRANVisibleQoEMetrics, + iE_Extensions := p_iE_Extensions + } // End of template m_uEAppLayerMeasConfigInfo + + template (omit) UE_associatedLogicalNG_connectionItem m_uE_associatedLogicalNG_connectionItem( + in template (omit) AMF_UE_NGAP_ID p_aMF_UE_NGAP_ID := omit, + in template (omit) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := omit, + in template (omit) UE_associatedLogicalNG_connectionItem.iE_Extensions p_iE_Extensions := omit + ) := { + aMF_UE_NGAP_ID := p_aMF_UE_NGAP_ID, + rAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_uE_associatedLogicalNG_connectionItem + + template (value) UECapabilityInfoRequest m_uECapabilityInfoRequest(in UECapabilityInfoRequest p_value := requested) := p_value; + + template (value) UEContextRequest m_uEContextRequest(in UEContextRequest p_value := requested) := p_value; + + template (omit) UEContextResumeRequestTransfer m_uEContextResumeRequestTransfer( + in template (omit) QosFlowListWithCause p_qosFlowFailedToResumeList := omit, + in template (omit) UEContextResumeRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowFailedToResumeList := p_qosFlowFailedToResumeList, + iE_Extensions := p_iE_Extensions + } // End of template m_uEContextResumeRequestTransfer + + template (omit) UEContextResumeResponseTransfer m_uEContextResumeResponseTransfer( + in template (omit) QosFlowListWithCause p_qosFlowFailedToResumeList := omit, + in template (omit) UEContextResumeResponseTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + qosFlowFailedToResumeList := p_qosFlowFailedToResumeList, + iE_Extensions := p_iE_Extensions + } // End of template m_uEContextResumeResponseTransfer + + template (omit) UEContextSuspendRequestTransfer m_uEContextSuspendRequestTransfer( + in template (omit) SuspendIndicator p_suspendIndicator := omit, + in template (omit) UEContextSuspendRequestTransfer.iE_Extensions p_iE_Extensions := omit + ) := { + suspendIndicator := p_suspendIndicator, + iE_Extensions := p_iE_Extensions + } // End of template m_uEContextSuspendRequestTransfer + + template (omit) UE_DifferentiationInfo m_uE_DifferentiationInfo( + in template (omit) UE_DifferentiationInfo.periodicCommunicationIndicator p_periodicCommunicationIndicator := omit, + in template (omit) UE_DifferentiationInfo.periodicTime p_periodicTime := omit, + in template (omit) UE_DifferentiationInfo.scheduledCommunicationTime p_scheduledCommunicationTime := omit, + in template (omit) UE_DifferentiationInfo.stationaryIndication p_stationaryIndication := omit, + in template (omit) UE_DifferentiationInfo.trafficProfile p_trafficProfile := omit, + in template (omit) UE_DifferentiationInfo.batteryIndication p_batteryIndication := omit, + in template (omit) UE_DifferentiationInfo.iE_Extensions p_iE_Extensions := omit + ) := { + periodicCommunicationIndicator := p_periodicCommunicationIndicator, + periodicTime := p_periodicTime, + scheduledCommunicationTime := p_scheduledCommunicationTime, + stationaryIndication := p_stationaryIndication, + trafficProfile := p_trafficProfile, + batteryIndication := p_batteryIndication, + iE_Extensions := p_iE_Extensions + } // End of template m_uE_DifferentiationInfo + + template (value) UEHistoryInformationFromTheUE m_uEHistoryInformationFromTheUE_nR( + in template (value) NRMobilityHistoryReport p_nR + ) := { + nR := p_nR + } // End of template m_uEHistoryInformationFromTheUE_nR + + template (value) UEHistoryInformationFromTheUE m_uEHistoryInformationFromTheUE_choice_Extensions( + in template (value) UEHistoryInformationFromTheUE.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_uEHistoryInformationFromTheUE_choice_Extensions + + template (value) UEIdentityIndexValue m_uEIdentityIndexValue_indexLength10( + in template (value) UEIdentityIndexValue.indexLength10 p_indexLength10 + ) := { + indexLength10 := p_indexLength10 + } // End of template m_uEIdentityIndexValue_indexLength10 + + template (value) UEIdentityIndexValue m_uEIdentityIndexValue_choice_Extensions( + in template (value) UEIdentityIndexValue.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_uEIdentityIndexValue_choice_Extensions + + template (value) UE_NGAP_IDs m_uE_NGAP_IDs_uE_NGAP_ID_pair( + in template (value) UE_NGAP_ID_pair p_uE_NGAP_ID_pair + ) := { + uE_NGAP_ID_pair := p_uE_NGAP_ID_pair + } // End of template m_uE_NGAP_IDs_uE_NGAP_ID_pair + + template (value) UE_NGAP_IDs m_uE_NGAP_IDs_aMF_UE_NGAP_ID( + in template (value) AMF_UE_NGAP_ID p_aMF_UE_NGAP_ID := PX_AMF_UE_NGAP_ID + ) := { + aMF_UE_NGAP_ID := p_aMF_UE_NGAP_ID + } // End of template m_uE_NGAP_IDs_aMF_UE_NGAP_ID + + template (value) UE_NGAP_IDs m_uE_NGAP_IDs_choice_Extensions( + in template (value) UE_NGAP_IDs.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_uE_NGAP_IDs_choice_Extensions + + template (omit) UE_NGAP_ID_pair m_uE_NGAP_ID_pair( + in template (value) AMF_UE_NGAP_ID p_aMF_UE_NGAP_ID := PX_AMF_UE_NGAP_ID, + in template (value) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := PX_RAN_UE_NGAP_ID, + in template (omit) UE_NGAP_ID_pair.iE_Extensions p_iE_Extensions := omit + ) := { + aMF_UE_NGAP_ID := p_aMF_UE_NGAP_ID, + rAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID, + iE_Extensions := p_iE_Extensions + } // End of template m_uE_NGAP_ID_pair + + template (value) UEPagingIdentity m_uEPagingIdentity_fiveG_S_TMSI( + in template (value) FiveG_S_TMSI p_fiveG_S_TMSI + ) := { + fiveG_S_TMSI := p_fiveG_S_TMSI + } // End of template m_uEPagingIdentity_fiveG_S_TMSI + + template (value) UEPagingIdentity m_uEPagingIdentity_choice_Extensions( + in template (value) UEPagingIdentity.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_uEPagingIdentity_choice_Extensions + + template (value) UEPresence m_uEPresence(in UEPresence p_value := in_) := p_value; + + template (omit) UEPresenceInAreaOfInterestItem m_uEPresenceInAreaOfInterestItem( + in template (value) LocationReportingReferenceID p_locationReportingReferenceID, + in template (value) UEPresence p_uEPresence, + in template (omit) UEPresenceInAreaOfInterestItem.iE_Extensions p_iE_Extensions := omit + ) := { + locationReportingReferenceID := p_locationReportingReferenceID, + uEPresence := p_uEPresence, + iE_Extensions := p_iE_Extensions + } // End of template m_uEPresenceInAreaOfInterestItem + + template (omit) UERadioCapabilityForPaging m_uERadioCapabilityForPaging( + in template (omit) UERadioCapabilityForPagingOfNR p_uERadioCapabilityForPagingOfNR := omit, + in template (omit) UERadioCapabilityForPagingOfEUTRA p_uERadioCapabilityForPagingOfEUTRA := omit, + in template (omit) UERadioCapabilityForPaging.iE_Extensions p_iE_Extensions := omit + ) := { + uERadioCapabilityForPagingOfNR := p_uERadioCapabilityForPagingOfNR, + uERadioCapabilityForPagingOfEUTRA := p_uERadioCapabilityForPagingOfEUTRA, + iE_Extensions := p_iE_Extensions + } // End of template m_uERadioCapabilityForPaging + + template (value) UERadioCapabilityForPaging.iE_Extensions m_uERadioCapabilityForPaging_id_UERadioCapabilityForPagingOfNB_IoT( + in template (value) UERadioCapabilityForPagingOfNB_IoT p_uERadioCapabilityForPagingOfNB_IoT + ) := { + { + id := id_UERadioCapabilityForPagingOfNB_IoT, + criticality := ignore, + extensionValue := { UERadioCapabilityForPagingOfNB_IoT := p_uERadioCapabilityForPagingOfNB_IoT } + } + } // End of template m_uERadioCapabilityForPaging_id_UERadioCapabilityForPagingOfNB_IoT + + template (value) UERetentionInformation m_uERetentionInformation(in UERetentionInformation p_value := ues_retained):= p_value; + + template (value) UERLFReportContainer m_uERLFReportContainer_nR( + in template (value) NRUERLFReportContainer p_nR + ) := { + nR := p_nR + } // End of template m_uERLFReportContainer_nR + + template (value) UERLFReportContainer m_uERLFReportContainer_lTE( + in template (value) LTEUERLFReportContainer p_lTE + ) := { + lTE := p_lTE + } // End of template m_uERLFReportContainer_lTE + + template (value) UERLFReportContainer m_uERLFReportContainer_choice_Extensions( + in template (value) UERLFReportContainer.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_uERLFReportContainer_choice_Extensions + + template (omit) UESecurityCapabilities m_uESecurityCapabilities( + in template (value) NRencryptionAlgorithms p_nRencryptionAlgorithms := PX_NR_ENCRYPTION_ALGORITHMS, + in template (value) NRintegrityProtectionAlgorithms p_nRintegrityProtectionAlgorithms := PX_NR_INTEGRITY_PROTECTION_ALGORITHMS, + in template (value) EUTRAencryptionAlgorithms p_eUTRAencryptionAlgorithms := PX_EUTRA_ENCRYPTION_ALGORITHMS, + in template (value) EUTRAintegrityProtectionAlgorithms p_eUTRAintegrityProtectionAlgorithms := PX_EUTRA_INTEGRITY_PROTECTION_ALGORITHMS, + in template (omit) UESecurityCapabilities.iE_Extensions p_iE_Extensions := omit + ) := { + nRencryptionAlgorithms := p_nRencryptionAlgorithms, + nRintegrityProtectionAlgorithms := p_nRintegrityProtectionAlgorithms, + eUTRAencryptionAlgorithms := p_eUTRAencryptionAlgorithms, + eUTRAintegrityProtectionAlgorithms := p_eUTRAintegrityProtectionAlgorithms, + iE_Extensions := p_iE_Extensions + } // End of template m_uESecurityCapabilities + + template (omit) UESliceMaximumBitRateItem m_uESliceMaximumBitRateItem( + in template (value) S_NSSAI p_s_NSSAI, + in template (value) BitRate p_uESliceMaximumBitRateDL, + in template (value) BitRate p_uESliceMaximumBitRateUL, + in template (omit) UESliceMaximumBitRateItem.iE_Extensions p_iE_Extensions := omit + ) := { + s_NSSAI := p_s_NSSAI, + uESliceMaximumBitRateDL := p_uESliceMaximumBitRateDL, + uESliceMaximumBitRateUL := p_uESliceMaximumBitRateUL, + iE_Extensions := p_iE_Extensions + } // End of template m_uESliceMaximumBitRateItem + + template (value) UE_UP_CIoT_Support m_uE_UP_CIoT_Support(in UE_UP_CIoT_Support p_value := supported) := p_value; + + template (omit) UL_CP_SecurityInformation m_UL_CP_SecurityInformation( + in template (value) UL_NAS_MAC p_ul_NAS_MAC := PX_UL_NAS_MAC, + in template (value) UL_NAS_Count p_ul_NAS_Count := PX_UL_NAS_COUNT, + in template (omit) UL_CP_SecurityInformation.iE_Extensions p_iE_Extensions := omit + ) := { + ul_NAS_MAC := p_ul_NAS_MAC, + ul_NAS_Count := p_ul_NAS_Count, + iE_Extensions := p_iE_Extensions + } // End of template + + template (omit) UL_NGU_UP_TNLModifyItem m_uL_NGU_UP_TNLModifyItem( + in template (value) UPTransportLayerInformation p_uL_NGU_UP_TNLInformation, + in template (value) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation, + in template (omit) UL_NGU_UP_TNLModifyItem.iE_Extensions p_iE_Extensions := omit + ) := { + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_uL_NGU_UP_TNLModifyItem + + template (value) UL_NGU_UP_TNLModifyItem.iE_Extensions m_uL_NGU_UP_TNLModifyItem_id_RedundantUL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_uL_NGU_UP_TNLModifyItem_id_RedundantUL_NGU_UP_TNLInformation + + template (value) UL_NGU_UP_TNLModifyItem.iE_Extensions m_uL_NGU_UP_TNLModifyItem_id_RedundantDL_NGU_UP_TNLInformation( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template m_uL_NGU_UP_TNLModifyItem_id_RedundantDL_NGU_UP_TNLInformation + + template (value) UL_NGU_UP_TNLModifyItem.iE_Extensions m_uL_NGU_UP_TNLModifyItem_full( + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation_id_RedundantUL_NGU_UP_TNLInformation, + in template (value) UPTransportLayerInformation p_uPTransportLayerInformation_id_RedundantDL_NGU_UP_TNLInformation + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation_id_RedundantUL_NGU_UP_TNLInformation } + }, + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation_id_RedundantDL_NGU_UP_TNLInformation } + } + } // End of template m_uL_NGU_UP_TNLModifyItem_full + + template (omit) UnavailableGUAMIItem m_unavailableGUAMIItem( + in template (value) GUAMI p_gUAMI, + in template (omit) TimerApproachForGUAMIRemoval p_timerApproachForGUAMIRemoval := omit, + in template (omit) AMFName p_backupAMFName := omit, + in template (omit) UnavailableGUAMIItem.iE_Extensions p_iE_Extensions := omit + ) := { + gUAMI := p_gUAMI, + timerApproachForGUAMIRemoval := p_timerApproachForGUAMIRemoval, + backupAMFName := p_backupAMFName, + iE_Extensions := p_iE_Extensions + } // End of template m_unavailableGUAMIItem + + template (value) ULForwarding m_uLForwarding(in ULForwarding p_value := ul_forwarding_proposed) := p_value; + + template (value) UPTransportLayerInformation m_uPTransportLayerInformation_gTPTunnel( + in template (value) GTPTunnel p_gTPTunnel + ) := { + gTPTunnel := p_gTPTunnel + } // End of template m_uPTransportLayerInformation_gTPTunnel + + template (value) UPTransportLayerInformation m_uPTransportLayerInformation_choice_Extensions( + in template (value) UPTransportLayerInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_uPTransportLayerInformation_choice_Extensions + + template (omit) UPTransportLayerInformationItem m_uPTransportLayerInformationItem( + in template (value) UPTransportLayerInformation p_nGU_UP_TNLInformation, + in template (omit) UPTransportLayerInformationItem.iE_Extensions p_iE_Extensions := omit + ) := { + nGU_UP_TNLInformation := p_nGU_UP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_uPTransportLayerInformationItem + + template (value) UPTransportLayerInformationItem.iE_Extensions m_uPTransportLayerInformationItem_id_CommonNetworkInstance( + in template (value) CommonNetworkInstance p_commonNetworkInstance + ) := { + { + id := id_CommonNetworkInstance, + criticality := ignore, + extensionValue := { CommonNetworkInstance := p_commonNetworkInstance } + } + } // End of template m_uPTransportLayerInformationItem_id_CommonNetworkInstance + + template (omit) UPTransportLayerInformationPairItem m_uPTransportLayerInformationPairItem( + in template (value) UPTransportLayerInformation p_uL_NGU_UP_TNLInformation, + in template (value) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation, + in template (omit) UPTransportLayerInformationPairItem.iE_Extensions p_iE_Extensions := omit + ) := { + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_uPTransportLayerInformationPairItem + + template (value) UserLocationInformation m_uPTransportLayerInformation_userLocationInformationEUTRA( + in template (value) UserLocationInformationEUTRA p_userLocationInformationEUTRA + ) := { + userLocationInformationEUTRA := p_userLocationInformationEUTRA + } // End of template m_uPTransportLayerInformation_userLocationInformationEUTRA + + template (value) UserLocationInformation m_uPTransportLayerInformation_userLocationInformationNR( + in template (value) UserLocationInformationNR p_userLocationInformationNR + ) := { + userLocationInformationNR := p_userLocationInformationNR + } // End of template m_uPTransportLayerInformation_userLocationInformationNR + + template (value) UserLocationInformation m_uPTransportLayerInformation_userLocationInformationN3IWF( + in template (value) UserLocationInformationN3IWF p_userLocationInformationN3IWF + ) := { + userLocationInformationN3IWF := p_userLocationInformationN3IWF + } // End of template m_uPTransportLayerInformation_userLocationInformationN3IWF + + template (value) UserLocationInformation m_userLocationInformation_choice_Extensions( + in template (value) UserLocationInformation.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_userLocationInformation_choice_Extensions + + template (value) UserLocationInformation.choice_Extensions m_userLocationInformation_id_UserLocationInformationTNGF( + in template (value) UserLocationInformationTNGF p_userLocationInformationTNGF + ) := { + id := id_UserLocationInformationTNGF, + criticality := ignore, + value_ := { UserLocationInformationTNGF := p_userLocationInformationTNGF } + } // End of template m_userLocationInformation_id_UserLocationInformationTNGF + + template (value) UserLocationInformation.choice_Extensions m_userLocationInformation_id_UserLocationInformationTWIF( + in template (value) UserLocationInformationTWIF p_userLocationInformationTWIF + ) := { + id := id_UserLocationInformationTWIF, + criticality := ignore, + value_ := { UserLocationInformationTWIF := p_userLocationInformationTWIF } + } // End of template m_userLocationInformation_id_UserLocationInformationTWIF + + template (value) UserLocationInformation.choice_Extensions m_userLocationInformation_id_UserLocationInformationW_AGF( + in template (value) UserLocationInformationW_AGF p_userLocationInformationW_AGF + ) := { + id := id_UserLocationInformationW_AGF, + criticality := ignore, + value_ := { UserLocationInformationW_AGF := p_userLocationInformationW_AGF } + } // End of template m_userLocationInformation_id_UserLocationInformationW_AGF + + template (omit) UserLocationInformationEUTRA m_userLocationInformationEUTRA( + in template (value) EUTRA_CGI p_eUTRA_CGI, + in template (value) TAI p_tAI, + in template (omit) TimeStamp p_timeStamp := omit, + in template (omit) UserLocationInformationEUTRA.iE_Extensions p_iE_Extensions := omit + ) := { + eUTRA_CGI := p_eUTRA_CGI, + tAI := p_tAI, + timeStamp := p_timeStamp, + iE_Extensions := p_iE_Extensions + } // End of template m_userLocationInformationEUTRA + + template (value) UserLocationInformationEUTRA.iE_Extensions m_userLocationInformationEUTRA_id_PSCellInformation( + in template (value) NGRAN_CGI p_nGRAN_CGI + ) := { + { + id := id_PSCellInformation, + criticality := ignore, + extensionValue := { NGRAN_CGI := p_nGRAN_CGI } + } + } // End of template m_userLocationInformationEUTRA_id_PSCellInformation + + template (omit) UserLocationInformationN3IWF m_userLocationInformationN3IWF( + in template (value) TransportLayerAddress p_iPAddress := PX_TRANSPORT_LAYER_ADDRESS, + in template (value) PortNumber p_portNumber, + in template (omit) UserLocationInformationN3IWF.iE_Extensions p_iE_Extensions := omit + ) := { + iPAddress := p_iPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template m_userLocationInformationN3IWF + + template (value) UserLocationInformationN3IWF.iE_Extensions m_userLocationInformationN3IWF_id_TAI( + in template (value) TAI p_tAI + ) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template m_userLocationInformationN3IWF_id_TAI + + template (omit) UserLocationInformationTNGF m_userLocationInformationTNGF( + in template (value) TNAP_ID p_tNAP_ID, + in template (value) TransportLayerAddress p_iPAddress := PX_TRANSPORT_LAYER_ADDRESS, + in template (value) PortNumber p_portNumber, + in template (omit) UserLocationInformationTNGF.iE_Extensions p_iE_Extensions := omit + ) := { + tNAP_ID := p_tNAP_ID, + iPAddress := p_iPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template m_userLocationInformationTNGF + + template (value) UserLocationInformationTNGF.iE_Extensions m_userLocationInformationTNGF_id_TAI( + in template (value) TAI p_tAI + ) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template m_userLocationInformationTNGF_id_TAI + + template (omit) UserLocationInformationTWIF m_userLocationInformationTWIF( + in template (value) TWAP_ID p_tWAP_ID, + in template (value) TransportLayerAddress p_iPAddress := PX_TRANSPORT_LAYER_ADDRESS, + in template (value) PortNumber p_portNumber, + in template (omit) UserLocationInformationTWIF.iE_Extensions p_iE_Extensions := omit + ) := { + tWAP_ID := p_tWAP_ID, + iPAddress := p_iPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template m_userLocationInformationTWIF + + template (value) UserLocationInformationTWIF.iE_Extensions m_userLocationInformationTWIF_id_TAI( + in template (value) TAI p_tAI + ) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template m_userLocationInformationTWIF_id_TAI + + template (value) UserLocationInformationW_AGF m_userLocationInformationW_AGF_globalLine_ID( + in template (value) GlobalLine_ID p_globalLine_ID + ) := { + globalLine_ID := p_globalLine_ID + } // End of template m_userLocationInformationW_AGF_globalLine_ID + + template (value) UserLocationInformationW_AGF m_userLocationInformationW_AGF_hFCNode_ID( + in template (value) HFCNode_ID p_hFCNode_ID + ) := { + hFCNode_ID := p_hFCNode_ID + } // End of template m_userLocationInformationW_AGF_hFCNode_ID + + template (value) UserLocationInformationW_AGF m_userLocationInformationW_AGF_choice_Extensions( + in template (value) UserLocationInformationW_AGF.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_userLocationInformationW_AGF_choice_Extensions + + template (value) UserLocationInformationW_AGF.choice_Extensions m_userLocationInformationW_AGF_id_GlobalCable_ID( + in template (value) GlobalCable_ID p_globalCable_ID + ) := { + id := id_GlobalCable_ID, + criticality := ignore, + value_ := { GlobalCable_ID := p_globalCable_ID } + } // End of template m_userLocationInformationW_AGF_id_GlobalCable_ID + + template (value) UserLocationInformationW_AGF.choice_Extensions m_userLocationInformationW_AGF_id_HFCNode_ID_new( + in template (value) HFCNode_ID_new p_hFCNode_ID_new + ) := { + id := id_HFCNode_ID_new, + criticality := ignore, + value_ := { HFCNode_ID_new := p_hFCNode_ID_new } + } // End of template m_userLocationInformationW_AGF_id_HFCNode_ID_new + + template (value) UserLocationInformationW_AGF.choice_Extensions m_userLocationInformationW_AGF_id_GlobalCable_ID_new( + in template (value) GlobalCable_ID_new p_globalCable_ID_new + ) := { + id := id_GlobalCable_ID_new, + criticality := ignore, + value_ := { GlobalCable_ID_new := p_globalCable_ID_new } + } // End of template m_userLocationInformationW_AGF_id_GlobalCable_ID_new + + + + template (omit) UserLocationInformationNR m_userLocationInformationNR( + in template (value) NR_CGI p_nR_CGI, + in template (value) TAI p_tAI, + in template (omit) TimeStamp p_timeStamp := omit, + in template (omit) UserLocationInformationNR.iE_Extensions p_iE_Extensions := omit + ) := { + nR_CGI := p_nR_CGI, + tAI := p_tAI, + timeStamp := p_timeStamp, + iE_Extensions := p_iE_Extensions + } // End of template m_userLocationInformationNR + + template (value) UserLocationInformationNR.iE_Extensions m_userLocationInformationNR_id_PSCellInformation( + in template (value) NGRAN_CGI p_nGRAN_CGI + ) := { + { + id := id_PSCellInformation, + criticality := ignore, + extensionValue := { NGRAN_CGI := p_nGRAN_CGI } + } + } // End of template m_userLocationInformationNR_id_PSCellInformation + + template (value) UserLocationInformationNR.iE_Extensions m_userLocationInformationNR_id_NID( + in template (value) NID p_nID + ) := { + { + id := id_NID, + criticality := reject, + extensionValue := { NID := p_nID } + } + } // End of template m_userLocationInformationNR_id_NID + + template (value) UserLocationInformationNR.iE_Extensions m_userLocationInformationNR_id_NRNTNTAIInformation( + in template (value) NRNTNTAIInformation p_nRNTNTAIInformation + ) := { + { + id := id_NRNTNTAIInformation, + criticality := ignore, + extensionValue := { NRNTNTAIInformation := p_nRNTNTAIInformation } + } + } // End of template m_userLocationInformationNR_id_NRNTNTAIInformation + + template (omit) UserPlaneSecurityInformation m_userPlaneSecurityInformation( + in template (value) SecurityResult p_securityResult, + in template (value) SecurityIndication p_securityIndication, + in template (omit) UserPlaneSecurityInformation.iE_Extensions p_iE_Extensions := omit + ) := { + securityResult := p_securityResult, + securityIndication := p_securityIndication, + iE_Extensions := p_iE_Extensions + } // End of template m_userPlaneSecurityInformation + + template (omit) VolumeTimedReport_Item m_volumeTimedReport_Item( + in template (value) VolumeTimedReport_Item.startTimeStamp p_startTimeStamp, + in template (value) VolumeTimedReport_Item.endTimeStamp p_endTimeStamp, + in template (value) VolumeTimedReport_Item.usageCountUL p_usageCountUL, + in template (value) VolumeTimedReport_Item.usageCountDL p_usageCountDL, + in template (omit) VolumeTimedReport_Item.iE_Extensions p_iE_Extensions := omit + ) := { + startTimeStamp := p_startTimeStamp, + endTimeStamp := p_endTimeStamp, + usageCountUL := p_usageCountUL, + usageCountDL := p_usageCountDL, + iE_Extensions := p_iE_Extensions + } // End of template m_volumeTimedReport_Item + + template (value) W_AGF_ID m_w_AGF_ID_w_AGF_ID( + in template (value) W_AGF_ID.w_AGF_ID p_w_AGF_ID + ) := { + w_AGF_ID := p_w_AGF_ID + } // End of template m_w_AGF_ID_w_AGF_ID + + template (value) W_AGF_ID m_w_AGF_ID_choice_Extensions( + in template (value) W_AGF_ID.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_w_AGF_ID_choice_Extensions + + template (value) WarningAreaList m_warningAreaList_eUTRA_CGIListForWarning( + in template (value) EUTRA_CGIListForWarning p_eUTRA_CGIListForWarning + ) := { + eUTRA_CGIListForWarning := p_eUTRA_CGIListForWarning + } // End of template m_warningAreaList_eUTRA_CGIListForWarning + + template (value) WarningAreaList m_warningAreaList_nR_CGIListForWarning( + in template (value) NR_CGIListForWarning p_nR_CGIListForWarning + ) := { + nR_CGIListForWarning := p_nR_CGIListForWarning + } // End of template m_warningAreaList_nR_CGIListForWarning + + template (value) WarningAreaList m_warningAreaList_tAIListForWarning( + in template (value) TAIListForWarning p_tAIListForWarning + ) := { + tAIListForWarning := p_tAIListForWarning + } // End of template m_warningAreaList_tAIListForWarning + + template (value) WarningAreaList m_warningAreaList_emergencyAreaIDList( + in template (value) EmergencyAreaIDList p_emergencyAreaIDList + ) := { + emergencyAreaIDList := p_emergencyAreaIDList + } // End of template m_warningAreaList_emergencyAreaIDList + + template (value) WarningAreaList m_warningAreaList_choice_Extensions( + in template (value) WarningAreaList.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template m_warningAreaList_choice_Extensions + + template (omit) WLANMeasurementConfiguration m_wLANMeasurementConfiguration( + in template (value) WLANMeasConfig p_wlanMeasConfig, + in template (omit) WLANMeasConfigNameList p_wlanMeasConfigNameList := omit, + in template (omit) WLANMeasurementConfiguration.wlan_rssi p_wlan_rssi := omit, + in template (omit) WLANMeasurementConfiguration.wlan_rtt p_wlan_rtt := omit, + in template (omit) WLANMeasurementConfiguration.iE_Extensions p_iE_Extensions := omit + ) := { + wlanMeasConfig := p_wlanMeasConfig, + wlanMeasConfigNameList := p_wlanMeasConfigNameList, + wlan_rssi := p_wlan_rssi, + wlan_rtt := p_wlan_rtt, + iE_Extensions := p_iE_Extensions + } // End of template m_wLANMeasurementConfiguration + + template (omit) WLANMeasConfigNameItem m_wLANMeasConfigNameItem( + in template (value) WLANName p_wLANName, + in template (omit) WLANMeasConfigNameItem.iE_Extensions p_iE_Extensions := omit + ) := { + wLANName := p_wLANName, + iE_Extensions := p_iE_Extensions + } // End of template m_wLANMeasConfigNameItem + + template (value) WLANMeasConfig m_wLANMeasConfig(in WLANMeasConfig p_value := setup) := p_value; + + template (omit) WUS_Assistance_Information m_wUS_Assistance_Information( + in template (value) PagingProbabilityInformation p_pagingProbabilityInformation, + in template (omit) WUS_Assistance_Information.iE_Extensions p_iE_Extensions := omit + ) := { + pagingProbabilityInformation := p_pagingProbabilityInformation, + iE_Extensions := p_iE_Extensions + } // End of template m_wUS_Assistance_Information + + template (omit) XnExtTLA_Item m_xnExtTLA_Item( + in template (omit) TransportLayerAddress p_iPsecTLA := omit, + in template (omit) XnGTP_TLAs p_gTP_TLAs := omit, + in template (omit) XnExtTLA_Item.iE_Extensions p_iE_Extensions := omit + ) := { + iPsecTLA := p_iPsecTLA, + gTP_TLAs := p_gTP_TLAs, + iE_Extensions := p_iE_Extensions + } // End of template m_xnExtTLA_Item + + template (value) XnExtTLA_Item.iE_Extensions m_xnExtTLA_Item_id_SCTP_TLAs( + in template (value) SCTP_TLAs p_sCTP_TLAs + ) := { + { + id := id_SCTP_TLAs, + criticality := ignore, + extensionValue := { SCTP_TLAs := p_sCTP_TLAs } + } + } // End of template m_xnExtTLA_Item_id_SCTP_TLAs + + template (omit) XnTNLConfigurationInfo m_xnTNLConfigurationInfo( + in template (value) XnTLAs p_xnTransportLayerAddresses, + in template (omit) XnExtTLAs p_xnExtendedTransportLayerAddresses := omit, + in template (omit) XnTNLConfigurationInfo.iE_Extensions p_iE_Extensions := omit + ) := { + xnTransportLayerAddresses := p_xnTransportLayerAddresses, + xnExtendedTransportLayerAddresses := p_xnExtendedTransportLayerAddresses, + iE_Extensions := p_iE_Extensions + } // End of template m_xnTNLConfigurationInfo + + } // End of group send + + group Receive { + + template (present) AdditionalDLUPTNLInformationForHOItem mw_additionalDLUPTNLInformationForHOItem( + template (present) UPTransportLayerInformation p_additionalDL_NGU_UP_TNLInformation := ?, + template (present) QosFlowListWithDataForwarding p_additionalQosFlowSetupResponseList := ?, + template UPTransportLayerInformation p_additionalDLForwardingUPTNLInformation := *, + template AdditionalDLUPTNLInformationForHOItem.iE_Extensions p_iE_Extensions := * + ) := { + additionalDL_NGU_UP_TNLInformation := p_additionalDL_NGU_UP_TNLInformation, + additionalQosFlowSetupResponseList := p_additionalQosFlowSetupResponseList, + additionalDLForwardingUPTNLInformation := p_additionalDLForwardingUPTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_additionalDLUPTNLInformationForHOItem + + template (present) AdditionalDLUPTNLInformationForHOItem.iE_Extensions mw_additionalDLUPTNLInformationForHOItem_uPTransportLayerInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_AdditionalRedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_additionalDLUPTNLInformationForHOItem_iE_Extensions + + template (present) AdditionalQosFlowInformation mw_additionalQosFlowInformation(template (present) AdditionalQosFlowInformation p_value := ?) := p_value; + + template (present) AllocationAndRetentionPriority mw_allocationAndRetentionPriority( + template (present) PriorityLevelARP p_priorityLevelARP := ?, + template (present) Pre_emptionCapability p_pre_emptionCapability := ?, + template (present) Pre_emptionVulnerability p_pre_emptionVulnerability := ?, + template AllocationAndRetentionPriority.iE_Extensions p_iE_Extensions := * + ) := { + priorityLevelARP := p_priorityLevelARP, + pre_emptionCapability := p_pre_emptionCapability, + pre_emptionVulnerability := p_pre_emptionVulnerability, + iE_Extensions := p_iE_Extensions + } // End of template mw_allocationAndRetentionPriority + + template (present) AllowedNSSAI_Item mw_allowedNSSAI_Item( + template (present) S_NSSAI p_s_NSSAI := ?, + template AllowedNSSAI_Item.iE_Extensions p_iE_Extensions := * + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_allowedNSSAI_Item + + template (present) Allowed_PNI_NPN_Item mw_allowed_PNI_NPN_Item( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) Allowed_PNI_NPN_Item.pNI_NPN_restricted p_pNI_NPN_restricted := ?, + template (present) Allowed_CAG_List_per_PLMN p_allowed_CAG_List_per_PLMN := ?, + template Allowed_PNI_NPN_Item.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + pNI_NPN_restricted := p_pNI_NPN_restricted, + allowed_CAG_List_per_PLMN := p_allowed_CAG_List_per_PLMN, + iE_Extensions := p_iE_Extensions + } // End of template mw_allowed_PNI_NPN_Item + + template (present) AlternativeQoSParaSetIndex mw_alternativeQoSParaSetIndex(template (present) integer p_value := ?) := p_value; + + template (present) AlternativeQoSParaSetNotifyIndex mw_alternativeQoSParaSetNotifyIndex(template (present) integer p_value := ?) := p_value; + + template (present) AlternativeQoSParaSetItem mw_alternativeQoSParaSetItem( + template (present) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex := ?, + template BitRate p_guaranteedFlowBitRateDL := *, + template BitRate p_guaranteedFlowBitRateUL := *, + template PacketDelayBudget p_packetDelayBudget := *, + template PacketErrorRate p_packetErrorRate := *, + template AlternativeQoSParaSetItem.iE_Extensions p_iE_Extensions := * + ) := { + alternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex, + guaranteedFlowBitRateDL := p_guaranteedFlowBitRateDL, + guaranteedFlowBitRateUL := p_guaranteedFlowBitRateUL, + packetDelayBudget := p_packetDelayBudget, + packetErrorRate := p_packetErrorRate, + iE_Extensions := p_iE_Extensions + } // End of template mw_alternativeQoSParaSetItem + + template (present) AMFName mw_aMFName(template (present) AMFName p_value := ?) := p_value; + + template (present) AMFNameVisibleString mw_aMFNameVisibleString(template (present) AMFNameVisibleString p_value := ?) := p_value; + + template (present) AMFNameUTF8String mw_aMFNameUTF8String(template (present) AMFNameUTF8String p_value := ?) := p_value; + + template (present) AMFPagingTarget mw_aMFPagingTarget_globalRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ? + ) := { + globalRANNodeID := p_globalRANNodeID + } // End of template mw_aMFPagingTarget_globalRANNodeID + + template (present) AMFPagingTarget mw_aMFPagingTarget_tAI( + template (present) TAI p_tAI := ? + ) := { + tAI := p_tAI + } // End of template mw_aMFPagingTarget_tAI + + template (present) AMFPagingTarget mw_aMFPagingTarget_ext( + template (present) AMFPagingTarget.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_aMFPagingTarget_ext + + template (present) AMF_TNLAssociationSetupItem mw_aMF_TNLAssociationSetupItem( + template (present) CPTransportLayerInformation p_aMF_TNLAssociationAddress := ?, + template AMF_TNLAssociationSetupItem.iE_Extensions p_iE_Extensions := * + ) := { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + iE_Extensions := p_iE_Extensions + } // End of template mw_aMF_TNLAssociationSetupItem + + template (present) AMF_TNLAssociationToAddItem mw_aMF_TNLAssociationToAddItem( + template (present) CPTransportLayerInformation p_aMF_TNLAssociationAddress := ?, + template (present) TNLAddressWeightFactor p_tNLAddressWeightFactor := ?, + template TNLAssociationUsage p_tNLAssociationUsage := *, + template AMF_TNLAssociationToAddItem.iE_Extensions p_iE_Extensions := * + ):= { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + tNLAssociationUsage := p_tNLAssociationUsage, + tNLAddressWeightFactor := p_tNLAddressWeightFactor, + iE_Extensions := p_iE_Extensions + } // End of template mw_aMF_TNLAssociationToAddItem + + template (present) AMF_TNLAssociationToRemoveItem mw_aMF_TNLAssociationToRemoveItem( + template (present) CPTransportLayerInformation p_aMF_TNLAssociationAddress := ?, + template AMF_TNLAssociationToRemoveItem.iE_Extensions p_iE_Extensions := * + ) := { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + iE_Extensions := p_iE_Extensions + } // End of template mw_aMF_TNLAssociationToRemoveItem + + template (present) AMF_TNLAssociationToUpdateItem mw_aMF_TNLAssociationToUpdateItem( + template (present) CPTransportLayerInformation p_aMF_TNLAssociationAddress := ?, + template TNLAssociationUsage p_tNLAssociationUsage := *, + template TNLAddressWeightFactor p_tNLAddressWeightFactor := *, + template AMF_TNLAssociationToUpdateItem.iE_Extensions p_iE_Extensions := * + ) := { + aMF_TNLAssociationAddress := p_aMF_TNLAssociationAddress, + tNLAssociationUsage := p_tNLAssociationUsage, + tNLAddressWeightFactor := p_tNLAddressWeightFactor, + iE_Extensions := p_iE_Extensions + } // End of template mw_aMF_TNLAssociationToUpdateItem + + template AreaOfInterest mw_areaOfInterest( + template AreaOfInterestTAIList p_areaOfInterestTAIList := *, + template AreaOfInterestCellList p_areaOfInterestCellList := *, + template AreaOfInterestRANNodeList p_areaOfInterestRANNodeList := *, + template AreaOfInterest.iE_Extensions p_iE_Extensions := * + ) := { + areaOfInterestTAIList := p_areaOfInterestTAIList, + areaOfInterestCellList := p_areaOfInterestCellList, + areaOfInterestRANNodeList := p_areaOfInterestRANNodeList, + iE_Extensions := p_iE_Extensions + } // End of template mw_areaOfInterest + + template (present) AreaOfInterestCellItem mw_areaOfInterestCellItem( + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template AreaOfInterestCellItem.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CGI := p_nGRAN_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_areaOfInterestCellItem + + template (present) AreaOfInterestItem mw_areaOfInterestItem( + template (present) AreaOfInterest p_areaOfInterest := ?, + template (present) LocationReportingReferenceID p_locationReportingReferenceID := ?, + template AreaOfInterestItem.iE_Extensions p_iE_Extensions := * + ) := { + areaOfInterest := p_areaOfInterest, + locationReportingReferenceID := p_locationReportingReferenceID, + iE_Extensions := p_iE_Extensions + } // End of template mw_areaOfInterestItem + + template (present) AreaOfInterestRANNodeItem mw_areaOfInterestRANNodeItem( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template AreaOfInterestRANNodeItem.iE_Extensions p_iE_Extensions := * + ):= { + globalRANNodeID := p_globalRANNodeID, + iE_Extensions := p_iE_Extensions + } // End of template mw_areaOfInterestRANNodeItem + + template (present) AreaOfInterestTAIItem mw_areaOfInterestTAIItem( + template (present) TAI p_tAI := ?, + template AreaOfInterestTAIItem.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_areaOfInterestTAIItem + + template AssistanceDataForPaging mw_assistanceDataForPaging( + template AssistanceDataForRecommendedCells p_assistanceDataForRecommendedCells := *, + template PagingAttemptInformation p_pagingAttemptInformation := *, + template AssistanceDataForPaging.iE_Extensions p_iE_Extensions := * + ) := { + assistanceDataForRecommendedCells := p_assistanceDataForRecommendedCells, + pagingAttemptInformation := p_pagingAttemptInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_assistanceDataForPaging + + template (present) AssistanceDataForPaging.iE_Extensions mw_assistanceDataForPaging_NPN_PagingAssistanceInformation( + template (present) NPN_PagingAssistanceInformation p_nPN_PagingAssistanceInformation := ? + ) := { + { + id := id_NPN_PagingAssistanceInformation, + criticality := ignore, + extensionValue := { NPN_PagingAssistanceInformation := p_nPN_PagingAssistanceInformation } + } + } // End of template mw_assistanceDataForPaging_NPN_PagingAssistanceInformation + + template (present) AssistanceDataForPaging.iE_Extensions mw_assistanceDataForPaging_pagingAssisDataforCEcapabUE( + template (present) PagingAssisDataforCEcapabUE p_pagingAssisDataforCEcapabUE := ? + ) := { + { + id := id_PagingAssisDataforCEcapabUE, + criticality := ignore, + extensionValue := { PagingAssisDataforCEcapabUE := p_pagingAssisDataforCEcapabUE } + } + } // End of template mw_assistanceDataForPaging_pagingAssisDataforCEcapabUE + + template (present) AssistanceDataForPaging.iE_Extensions mw_assistanceDataForPaging_full( + template (present) NPN_PagingAssistanceInformation p_nPN_PagingAssistanceInformation := ?, + template (present) PagingAssisDataforCEcapabUE p_pagingAssisDataforCEcapabUE := ? + ) := { + { + id := id_NPN_PagingAssistanceInformation, + criticality := ignore, + extensionValue := { NPN_PagingAssistanceInformation := p_nPN_PagingAssistanceInformation } + }, + { + id := id_PagingAssisDataforCEcapabUE, + criticality := ignore, + extensionValue := { PagingAssisDataforCEcapabUE := p_pagingAssisDataforCEcapabUE } + } + } // End of template mw_assistanceDataForPaging_full + + template (present) AssistanceDataForRecommendedCells mw_assistanceDataForRecommendedCells( + template (present) RecommendedCellsForPaging p_recommendedCellsForPaging := ?, + template AssistanceDataForRecommendedCells.iE_Extensions p_iE_Extensions := * + ) := { + recommendedCellsForPaging := p_recommendedCellsForPaging, + iE_Extensions := p_iE_Extensions + } // End of template mw_assistanceDataForRecommendedCells + + template (present) AssociatedMBSQosFlowSetupRequestItem mw_associatedMBSQosFlowSetupRequestItem( + template (present) QosFlowIdentifier p_mBS_QosFlowIdentifier := ?, + template (present) QosFlowIdentifier p_associatedUnicastQosFlowIdentifier := ?, + template AssociatedMBSQosFlowSetupRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_QosFlowIdentifier := p_mBS_QosFlowIdentifier, + associatedUnicastQosFlowIdentifier := p_associatedUnicastQosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template mw_associatedMBSQosFlowSetupRequestItem + + template (present) AssociatedMBSQosFlowSetuporModifyRequestItem mw_associatedMBSQosFlowSetuporModifyRequestItem( + template (present) QosFlowIdentifier p_mBS_QosFlowIdentifier := ?, + template (present) QosFlowIdentifier p_associatedUnicastQosFlowIdentifier := ?, + template AssociatedMBSQosFlowSetuporModifyRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_QosFlowIdentifier := p_mBS_QosFlowIdentifier, + associatedUnicastQosFlowIdentifier := p_associatedUnicastQosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template mw_associatedMBSQosFlowSetuporModifyRequestItem + + template (present) AssociatedQosFlowItem mw_associatedQosFlowItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template AssociatedQosFlowItem.qosFlowMappingIndication p_qosFlowMappingIndication := *, + template AssociatedQosFlowItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + qosFlowMappingIndication := p_qosFlowMappingIndication, + iE_Extensions := p_iE_Extensions + } // End of template mw_associatedQosFlowItem + + template (present) AssociatedQosFlowItem.iE_Extensions mw_associatedQosFlowItem_alternativeQoSParaSetIndex( + template (present) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex := ? + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template mw_associatedQosFlowItem_alternativeQoSParaSetIndex + + template (present) AuthenticatedIndication mw_authenticatedIndication(template (present) AuthenticatedIndication p_value := true_) := p_value; + + template (present) AreaScopeOfMDT_NR mw_areaScopeOfMDT_NR_cellBased( + template (present) CellBasedMDT_NR p_cellBased := ? + ) := { + cellBased := p_cellBased + } // End of template mw_areaScopeOfMDT_cellBased + + template (present) AreaScopeOfMDT_NR mw_areaScopeOfMDT_tABased( + template (present) TABasedMDT p_tABased := ? + ) := { + tABased := p_tABased + } // End of template mw_areaScopeOfMDT_tABased + + template (present) AreaScopeOfMDT_NR mw_areaScopeOfMDT_pLMNWide := { + pLMNWide := NULL + } // End of template mw_areaScopeOfMDT_pLMNWide + + template (present) AreaScopeOfMDT_NR mw_areaScopeOfMDT_tAIBased( + template (present) TAIBasedMDT p_tAIBased := ? + ) := { + tAIBased := p_tAIBased + } // End of template mw_areaScopeOfMDT_tAIBased + + template (present) AreaScopeOfMDT_NR mw_areaScopeOfMDT_ext( + template (present) AreaScopeOfMDT_NR.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_areaScopeOfMDT_ext + + template (present) AreaScopeOfNeighCellsItem mw_areaScopeOfNeighCellsItem( + template (present) NRFrequencyInfo p_nrFrequencyInfo := ?, + template PCIListForMDT p_pciListForMDT := *, + template AreaScopeOfNeighCellsItem.iE_Extensions p_iE_Extensions := * + ) := { + nrFrequencyInfo := p_nrFrequencyInfo, + pciListForMDT := p_pciListForMDT, + iE_Extensions := p_iE_Extensions + } // End of template mw_areaScopeOfNeighCellsItem + + template (present) AreaScopeOfQMC mw_areaScopeOfQMC_cellBased( + template (present) CellBasedQMC p_cellBased := ? + ) := { + cellBased := p_cellBased + } // End of template mw_areaScopeOfQMC_cellBased + + template (present) AreaScopeOfQMC mw_areaScopeOfQMC_tABased( + template (present) TABasedQMC p_tABased := ? + ) := { + tABased := p_tABased + } // End of template mw_areaScopeOfQMC_tABased + + template (present) AreaScopeOfQMC mw_areaScopeOfQMC_tAIBased( + template (present) TAIBasedQMC p_tAIBased := ? + ) := { + tAIBased := p_tAIBased + } // End of template mw_areaScopeOfQMC_tAIBased + + template (present) AreaScopeOfQMC mw_areaScopeOfQMC_pLMNAreaBased( + template (present) PLMNAreaBasedQMC p_pLMNAreaBased := ? + ) := { + pLMNAreaBased := p_pLMNAreaBased + } // End of template mw_areaScopeOfQMC_pLMNAreaBased + + template (present) AreaScopeOfQMC mw_areaScopeOfQMC_ext( + template (present) AreaScopeOfQMC.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_areaScopeOfQMC_ext + + template (present) AreaScopeOfMDT_EUTRA mw_areaScopeOfMDT_EUTRA_cellBased( + template (present) CellBasedMDT_EUTRA p_cellBased + ) := { + cellBased := p_cellBased + } // End of template mw_areaScopeOfMDT_EUTRA_cellBased + + template (present) AreaScopeOfMDT_EUTRA mw_areaScopeOfMDT_EUTRA_tABased( + template (present) TABasedMDT p_tABased + ) := { + tABased := p_tABased + } // End of template mw_areaScopeOfMDT_EUTRA_tABased + + template (present) AreaScopeOfMDT_EUTRA mw_areaScopeOfMDT_EUTRA_pLMNWide := { + pLMNWide := NULL + } // End of template mw_areaScopeOfMDT_EUTRA_pLMNWide + + template (present) AreaScopeOfMDT_EUTRA mw_areaScopeOfMDT_EUTRA_tAIBased( + template (present) TAIBasedMDT p_tAIBased + ) := { + tAIBased := p_tAIBased + } // End of template mw_areaScopeOfMDT_EUTRA_tAIBased + + template (present) AreaScopeOfMDT_EUTRA mw_areaScopeOfMDT_EUTRA_ext( + template (present) AreaScopeOfMDT_EUTRA.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_areaScopeOfMDT_EUTRA_ext + + template AvailableRANVisibleQoEMetrics mw_availableRANVisibleQoEMetrics( + template AvailableRANVisibleQoEMetrics.applicationLayerBufferLevelList p_applicationLayerBufferLevelList := *, + template AvailableRANVisibleQoEMetrics.playoutDelayForMediaStartup p_playoutDelayForMediaStartup := *, + template AvailableRANVisibleQoEMetrics.iE_Extensions p_iE_Extensions := * + ) := { + applicationLayerBufferLevelList := p_applicationLayerBufferLevelList, + playoutDelayForMediaStartup := p_playoutDelayForMediaStartup, + iE_Extensions := p_iE_Extensions + } // End of template mw_availableRANVisibleQoEMetrics + + template BeamMeasurementsReportConfiguration mw_beamMeasurementsReportConfiguration( + template BeamMeasurementsReportQuantity p_beamMeasurementsReportQuantity := *, + template MaxNrofRS_IndexesToReport p_maxNrofRS_IndexesToReport := *, + template BeamMeasurementsReportConfiguration.iE_Extensions p_iE_Extensions := * + ) := { + beamMeasurementsReportQuantity := p_beamMeasurementsReportQuantity, + maxNrofRS_IndexesToReport := p_maxNrofRS_IndexesToReport, + iE_Extensions := p_iE_Extensions + } // End of template mw_beamMeasurementsReportConfiguration + + template BeamMeasurementsReportQuantity mw_beamMeasurementsReportQuantity( + template BeamMeasurementsReportQuantity.rSRP p_rSRP := true_, + template BeamMeasurementsReportQuantity.rSRQ p_rSRQ := true_, + template BeamMeasurementsReportQuantity.sINR p_sINR := true_, + template BeamMeasurementsReportQuantity.iE_Extensions p_iE_Extensions := * + ) := { + rSRP := p_rSRP, + rSRQ := p_rSRQ, + sINR := p_sINR, + iE_Extensions := p_iE_Extensions + } // End of template mw_beamMeasurementsReportQuantity + + template (present) BitRate mw_bitRate (template (present) BitRate p_value := ?) := p_value; + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_cellIDCancelledEUTRA( + template (present) CellIDCancelledEUTRA p_cellIDCancelledEUTRA := ? + ) := { + cellIDCancelledEUTRA := p_cellIDCancelledEUTRA + } // End of template mw_broadcastCancelledAreaList_cellIDCancelledEUTRA + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_tAICancelledEUTRA( + template (present) TAICancelledEUTRA p_tAICancelledEUTRA := ? + ) := { + tAICancelledEUTRA := p_tAICancelledEUTRA + } // End of template mw_broadcastCancelledAreaList_tAICancelledEUTRA + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_emergencyAreaIDCancelledEUTRA( + template (present) EmergencyAreaIDCancelledEUTRA p_emergencyAreaIDCancelledEUTRA := ? + ) := { + emergencyAreaIDCancelledEUTRA := p_emergencyAreaIDCancelledEUTRA + } // End of template mw_broadcastCancelledAreaList_emergencyAreaIDCancelledEUTRA + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_cellIDCancelledNR( + template (present) CellIDCancelledNR p_cellIDCancelledNR := ? + ) := { + cellIDCancelledNR := p_cellIDCancelledNR + } // End of template mw_broadcastCancelledAreaList_cellIDCancelledNR + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_tAICancelledNR( + template (present) TAICancelledNR p_tAICancelledNR := ? + ) := { + tAICancelledNR := p_tAICancelledNR + } // End of template mw_broadcastCancelledAreaList_tAICancelledNR + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_emergencyAreaIDCancelledNR( + template (present) EmergencyAreaIDCancelledNR p_emergencyAreaIDCancelledNR := ? + ) := { + emergencyAreaIDCancelledNR := p_emergencyAreaIDCancelledNR + } // End of template mw_broadcastCancelledAreaList_ext + + template (present) BroadcastCancelledAreaList mw_broadcastCancelledAreaList_ext( + template (present) BroadcastCancelledAreaList.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_broadcastCancelledAreaList_ext + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_cellIDBroadcastEUTRA( + template (present) CellIDBroadcastEUTRA p_cellIDBroadcastEUTRA + ) := { + cellIDBroadcastEUTRA := p_cellIDBroadcastEUTRA + } // End of template mw_broadcastCompletedAreaList_cellIDCancelledEUTRA + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_tAIBroadcastEUTRA( + template (present) TAIBroadcastEUTRA p_tAIBroadcastEUTRA + ) := { + tAIBroadcastEUTRA := p_tAIBroadcastEUTRA + } // End of template mw_broadcastCompletedAreaList_tAIBroadcastEUTRA + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_emergencyAreaIDBroadcastEUTRA( + template (present) EmergencyAreaIDBroadcastEUTRA p_emergencyAreaIDBroadcastEUTRA + ) := { + emergencyAreaIDBroadcastEUTRA := p_emergencyAreaIDBroadcastEUTRA + } // End of template mw_broadcastCompletedAreaList_emergencyAreaIDBroadcastEUTRA + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_cellIDBroadcastNR( + template (present) CellIDBroadcastNR p_cellIDBroadcastNR + ) := { + cellIDBroadcastNR := p_cellIDBroadcastNR + } // End of template mw_broadcastCompletedAreaList_cellIDBroadcastNR + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_tAIBroadcastNR( + template (present) TAIBroadcastNR p_tAIBroadcastNR + ) := { + tAIBroadcastNR := p_tAIBroadcastNR + } // End of template mw_broadcastCompletedAreaList_tAIBroadcastNR + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_emergencyAreaIDBroadcastNR( + template (present) EmergencyAreaIDBroadcastNR p_emergencyAreaIDBroadcastNR + ) := { + emergencyAreaIDBroadcastNR := p_emergencyAreaIDBroadcastNR + } // End of template mw_broadcastCompletedAreaList_emergencyAreaIDBroadcastNR + + template (present) BroadcastCompletedAreaList mw_broadcastCompletedAreaList_ext( + template (present) BroadcastCompletedAreaList.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_broadcastCompletedAreaList_ext + + template (present) BroadcastPLMNItem mw_ie_broadcastPLMNItem( + template (present) PLMNIdentity p_plmnId := ?, + template (present) SliceSupportList p_ssl := ?, + template BroadcastPLMNItem.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_plmnId, + tAISliceSupportList := p_ssl, + iE_Extensions := p_iE_Extensions + } // End of template mw_ie_broadcastPLMNItem + + template (present) BluetoothMeasurementConfiguration mw_bluetoothMeasurementConfiguration( + template (present) BluetoothMeasConfig p_bluetoothMeasConfig := ?, + template BluetoothMeasConfigNameList p_bluetoothMeasConfigNameList := *, + template BluetoothMeasurementConfiguration.bt_rssi p_bt_rssi := *, + template BluetoothMeasurementConfiguration.iE_Extensions p_iE_Extensions := * + ) := { + bluetoothMeasConfig := p_bluetoothMeasConfig, + bluetoothMeasConfigNameList := p_bluetoothMeasConfigNameList, + bt_rssi := p_bt_rssi, + iE_Extensions := p_iE_Extensions + } // End of template mw_bluetoothMeasurementConfiguration + + template (present) BluetoothMeasConfigNameItem mw_bluetoothMeasConfigNameItem( + template (present) BluetoothName p_bluetoothName := ?, + template BluetoothMeasConfigNameItem.iE_Extensions p_iE_Extensions := * + ) := { + bluetoothName := p_bluetoothName, + iE_Extensions := p_iE_Extensions + } // End of template mw_bluetoothMeasConfigNameItem + + template (present) BluetoothMeasConfig mw_bluetoothMeasConfig(template (present) BluetoothMeasConfig p_value := setup) := p_value; + + template (present) CancelAllWarningMessages mw_cancelAllWarningMessages(template (present) CancelAllWarningMessages p_value := true_) := p_value; + + template (present) CancelledCellsInEAI_EUTRA_Item mw_cancelledCellsInEAI_EUTRA_Item( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template (present) NumberOfBroadcasts p_numberOfBroadcasts := ?, + template CancelledCellsInEAI_EUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template mw_cancelledCellsInEAI_EUTRA_Item + + template (present) CancelledCellsInEAI_NR_Item mw_cancelledCellsInEAI_NR_Item( + template (present) NR_CGI p_nR_CGI := ?, + template (present) NumberOfBroadcasts p_numberOfBroadcasts := ?, + template CancelledCellsInEAI_NR_Item.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template mw_cancelledCellsInEAI_NR_Item + + template (present) CancelledCellsInTAI_EUTRA_Item mw_cancelledCellsInTAI_EUTRA_Item( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template (present) NumberOfBroadcasts p_numberOfBroadcasts := ?, + template CancelledCellsInTAI_EUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template mw_cancelledCellsInTAI_EUTRA_Item + + template (present) CancelledCellsInTAI_NR_Item mw_CancelledCellsInTAI_NR_Item( + template (present) NR_CGI p_nR_CGI := ?, + template (present) NumberOfBroadcasts p_numberOfBroadcasts := ?, + template CancelledCellsInTAI_NR_Item.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template mw_CancelledCellsInTAI_NR_Item + + template (present) CandidateCellItem mw_candidateCellItem( + template (present) CandidateCell p_candidateCell := ?, + template CandidateCellItem.iE_Extensions p_iE_Extensions := * + ) := { + candidateCell := p_candidateCell, + iE_Extensions := p_iE_Extensions + } // End of template mw_candidateCellItem + + template (present) CandidateCell mw_candidateCell_candidateCGI( + template (present) CandidateCellID p_candidateCGI := ? + ) := { + candidateCGI := p_candidateCGI + } // End of template mw_candidateCell_candidateCGI + + template (present) CandidateCell mw_candidateCell_candidatePCI( + template (present) CandidatePCI p_candidatePCI := ? + ) := { + candidatePCI := p_candidatePCI + } // End of template mw_candidateCell_candidatePCI + + template (present) CandidateCell mw_candidateCell_ext( + template (present) CandidateCell.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_candidateCell_ext + + template (present) CandidatePCI mw_candidatePCI( + template (present) CandidatePCI.candidatePCI p_candidatePCI := ?, + template (present) CandidatePCI.candidateNRARFCN p_candidateNRARFCN := ?, + template CandidatePCI.iE_Extensions p_iE_Extensions := * + ) := { + candidatePCI := p_candidatePCI, + candidateNRARFCN := p_candidateNRARFCN, + iE_Extensions := p_iE_Extensions + } // End of template mw_candidatePCI + + template (present) Cause mw_cause_radioNetwork( + template (present) CauseRadioNetwork p_radioNetwork + ) := { + radioNetwork := p_radioNetwork + } // End of template mw_cause_radioNetwork + + template (present) Cause mw_cause_transport( + template (present) CauseTransport p_transport + ) := { + transport := p_transport + } // End of template mw_cause_transport + + template (present) Cause mw_cause_nas( + template (present) CauseNas p_nas + ) := { + nas := p_nas + } // End of template mw_cause_nas + + template (present) Cause mw_cause_protocol( + template (present) CauseProtocol p_protocol + ) := { + protocol := p_protocol + } // End of template mw_cause_protocol + + template (present) Cause mw_cause_misc( + template (present) CauseMisc p_misc + ) := { + misc := p_misc + } // End of template mw_cause_misc + + template (present) Cause mw_cause_ext( + template (present) Cause.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_cause_ext + + template (present) CauseMisc mw_causeMisc(template (present) CauseMisc p_value := ?) := p_value; + + template (present) CauseNas mw_causeNas(template (present) CauseNas p_value := ?) := p_value; + + template (present) CauseProtocol mw_causeProtocol(template (present) CauseProtocol p_value := ?) := p_value; + + template (present) CauseRadioNetwork mww_causeRadioNetwork(template (present) CauseRadioNetwork p_value := ?) := p_value; + + template (present) CauseTransport mw_causeTransport(template (present) CauseTransport p_value := ?) := p_value; + + template (present) Cell_CAGInformation mw_cell_CAGInformation( + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template (present) CellCAGList p_cellCAGList := ?, + template Cell_CAGInformation.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CGI := p_nGRAN_CGI, + cellCAGList := p_cellCAGList, + iE_Extensions := p_iE_Extensions + } // End of template mw_cell_CAGInformation + + template (present) CellIDBroadcastEUTRA_Item mw_cellIDBroadcastEUTRA_Item( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template CellIDBroadcastEUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellIDBroadcastEUTRA_Item + + template (present) CellIDBroadcastNR_Item mw_cellIDBroadcastNR_Item( + template (present) NR_CGI p_nR_CGI := ?, + template CellIDBroadcastNR_Item.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellIDBroadcastNR_Item + + template (present) CellIDCancelledEUTRA_Item mw_cellIDCancelledEUTRA_Item( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template (present) NumberOfBroadcasts p_numberOfBroadcasts := ?, + template CellIDCancelledEUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellIDCancelledEUTRA_Item + + template (present) CellIDCancelledNR_Item mw_cellIDCancelledNR_Item( + template (present) NR_CGI p_nR_CGI := ?, + template (present) NumberOfBroadcasts p_numberOfBroadcasts := ?, + template CellIDCancelledNR_Item.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + numberOfBroadcasts := p_numberOfBroadcasts, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellIDCancelledNR_Item + + template (present) CellIDListForRestart mw_cellIDListForRestart_eUTRA_CGIListforRestart( + template (present) EUTRA_CGIList p_eUTRA_CGIListforRestart := ? + ) := { + eUTRA_CGIListforRestart := p_eUTRA_CGIListforRestart + } // End of template mw_cellIDListForRestart_misc + + template (present) CellIDListForRestart mw_cellIDListForRestart_nR_CGIListforRestart( + template (present) NR_CGIList p_nR_CGIListforRestart := ? + ) := { + nR_CGIListforRestart := p_nR_CGIListforRestart + } // End of template mw_cellIDListForRestart_nR_CGIListforRestart + + template (present) CellIDListForRestart mw_cellIDListForRestart_ext( + template (present) CellIDListForRestart.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_cellIDListForRestart_ext + + template (present) CellSize mw_cellSize(template (present) CellSize p_value := ?) := p_value; + + template (present) CellType mw_cellType( + template (present) CellSize p_cellSize:= ?, + template CellType.iE_Extensions p_iE_Extensions := * + ) := { + cellSize := p_cellSize, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellType + + template (present) CEmodeBSupport_Indicator mw_cEmodeBSupport_Indicator(template (present) CEmodeBSupport_Indicator p_value := ?) := p_value; + + template (present) CEmodeBrestricted mw_cEmodeBrestricted(template (present) CEmodeBrestricted p_value := ?) := p_value; + + template CNAssistedRANTuning mw_cNAssistedRANTuning( + template ExpectedUEBehaviour p_expectedUEBehaviour := *, + template CNAssistedRANTuning.iE_Extensions p_iE_Extensions := * + ) := { + expectedUEBehaviour := p_expectedUEBehaviour, + iE_Extensions := p_iE_Extensions + } // End of template mw_cNAssistedRANTuning + + template (present) CNTypeRestrictionsForEquivalentItem mw_cNTypeRestrictionsForEquivalentItem( + template (present) PLMNIdentity p_plmnIdentity := ?, + template (present) CNTypeRestrictionsForEquivalentItem.cn_Type p_cn_Type := ?, + template CNTypeRestrictionsForEquivalentItem.iE_Extensions p_iE_Extensions := * + ) := { + plmnIdentity := p_plmnIdentity, + cn_Type := p_cn_Type, + iE_Extensions := p_iE_Extensions + } // End of template mw_cNTypeRestrictionsForEquivalentItem + + template (present) CNTypeRestrictionsForServing mw_cNTypeRestrictionsForServing(template (present) CNTypeRestrictionsForServing p_value := ?) := p_value; + + template (present) CompletedCellsInEAI_EUTRA_Item mw_completedCellsInEAI_EUTRA_Item( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template CompletedCellsInEAI_EUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_completedCellsInEAI_EUTRA_Item + + template (present) CompletedCellsInEAI_NR_Item mw_completedCellsInEAI_NR_Item( + template (present) NR_CGI p_nR_CGI := ?, + template CompletedCellsInEAI_NR_Item.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_completedCellsInEAI_NR_Item + + template (present) CompletedCellsInTAI_EUTRA_Item mw_completedCellsInTAI_EUTRA_Item( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template CompletedCellsInTAI_EUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_completedCellsInTAI_EUTRA_Item + + template (present) CompletedCellsInTAI_NR_Item mw_completedCellsInTAI_NR_Item( + template (present) NR_CGI p_nR_CGI := ?, + template CompletedCellsInTAI_NR_Item.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_completedCellsInTAI_NR_Item + + template (present) ConcurrentWarningMessageInd mw_concurrentWarningMessageInd(template (present) ConcurrentWarningMessageInd p_value := true_) := p_value; + + template (present) ConfidentialityProtectionIndication mw_confidentialityProtectionIndication(template (present) ConfidentialityProtectionIndication p_value := ?) := p_value; + + template (present) ConfidentialityProtectionResult mw_confidentialityProtectionResult(template (present) ConfidentialityProtectionResult p_value := ?) := p_value; + + template (present) ConfiguredTACIndication mw_configuredTACIndication(template (present) ConfiguredTACIndication p_value := true_) := p_value; + + template (present) CoreNetworkAssistanceInformationForInactive mw_coreNetworkAssistanceInformationForInactive( + template (present) UEIdentityIndexValue p_uEIdentityIndexValue := ?, + template (present) PeriodicRegistrationUpdateTimer p_periodicRegistrationUpdateTimer := ?, + template (present) TAIListForInactive p_tAIListForInactive := ?, + template PagingDRX p_uESpecificDRX := *, + template MICOModeIndication p_mICOModeIndication := *, + template ExpectedUEBehaviour p_expectedUEBehaviour := *, + template CoreNetworkAssistanceInformationForInactive.iE_Extensions p_iE_Extensions := * + ) := { + uEIdentityIndexValue := p_uEIdentityIndexValue, + uESpecificDRX := p_uESpecificDRX, + periodicRegistrationUpdateTimer := p_periodicRegistrationUpdateTimer, + mICOModeIndication := p_mICOModeIndication, + tAIListForInactive := p_tAIListForInactive, + expectedUEBehaviour := p_expectedUEBehaviour, + iE_Extensions := p_iE_Extensions + } // End of template mw_coreNetworkAssistanceInformationForInactive + + template (present) CoreNetworkAssistanceInformationForInactive.iE_Extensions mw_coreNetworkAssistanceInformationForInactive_paging( + template (present) EUTRA_PagingeDRXInformation p_eUTRA_PagingeDRXInformation := ?, + template (present) ExtendedUEIdentityIndexValue p_extendedUEIdentityIndexValue := ?, + template (present) UERadioCapabilityForPaging p_uERadioCapabilityForPaging := ?, + template (present) MicoAllPLMN p_micoAllPLMN := ? + ) := { + { + id := id_EUTRA_PagingeDRXInformation, + criticality := ignore, + extensionValue := { EUTRA_PagingeDRXInformation := p_eUTRA_PagingeDRXInformation } + }, + { + id := id_ExtendedUEIdentityIndexValue, + criticality := ignore, + extensionValue := { ExtendedUEIdentityIndexValue := p_extendedUEIdentityIndexValue } + }, + { + id := id_UERadioCapabilityForPaging, + criticality := ignore, + extensionValue := { UERadioCapabilityForPaging := p_uERadioCapabilityForPaging } + }, + { + id := id_MicoAllPLMN, + criticality := ignore, + extensionValue := { MicoAllPLMN := p_micoAllPLMN } + } + // TODO To be enhanced + } // End of template mw_coreNetworkAssistanceInformationForInactive_paging + + template (present) COUNTValueForPDCP_SN12 mw_cOUNTValueForPDCP_SN12( + template (present) COUNTValueForPDCP_SN12.pDCP_SN12 p_pDCP_SN12 := ?, + template (present) COUNTValueForPDCP_SN12.hFN_PDCP_SN12 p_hFN_PDCP_SN12 := ?, + template COUNTValueForPDCP_SN12.iE_Extensions p_iE_Extensions := * + ) := { + pDCP_SN12 := p_pDCP_SN12, + hFN_PDCP_SN12 := p_hFN_PDCP_SN12, + iE_Extensions := p_iE_Extensions + } // End of template mw_cOUNTValueForPDCP_SN12 + + template (present) COUNTValueForPDCP_SN18 mw_cOUNTValueForPDCP_SN18( + template (present) COUNTValueForPDCP_SN18.pDCP_SN18 p_pDCP_SN18 := ?, + template (present) COUNTValueForPDCP_SN18.hFN_PDCP_SN18 p_hFN_PDCP_SN18 := ?, + template COUNTValueForPDCP_SN18.iE_Extensions p_iE_Extensions := * + ) := { + pDCP_SN18 := p_pDCP_SN18, + hFN_PDCP_SN18 := p_hFN_PDCP_SN18, + iE_Extensions := p_iE_Extensions + } // End of template mw_cOUNTValueForPDCP_SN18 + + template (present) CPTransportLayerInformation mw_cPTransportLayerInformation_endpointIPAddress( + template (present) TransportLayerAddress p_endpointIPAddress := ? + ) := { + endpointIPAddress := p_endpointIPAddress + } // End of template mw_cPTransportLayerInformation_endpointIPAddress + + template (present) CPTransportLayerInformation mw_cPTransportLayerInformation_choice_Extensions( + template (present) CPTransportLayerInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_cPTransportLayerInformation_choice_Extensions + + template (present) CPTransportLayerInformation.choice_Extensions mw_cPTransportLayerInformation_ext( + template (present) EndpointIPAddressAndPort p_EndpointIPAddressAndPort := ? + ) := { + id := id_EndpointIPAddressAndPort, + criticality := reject, + value_ := { EndpointIPAddressAndPort := p_EndpointIPAddressAndPort } + } // End of template mw_cPTransportLayerInformation_ext + + template CriticalityDiagnostics mw_criticalityDiagnostics( + template ProcedureCode p_procedureCode := *, + template TriggeringMessage p_triggeringMessage := *, + template Criticality p_procedureCriticality := *, + template CriticalityDiagnostics_IE_List p_criticalityDiagnostics_IE_List := *, + template CriticalityDiagnostics.iE_Extensions p_iE_Extensions := * + ) := { + procedureCode := p_procedureCode, + triggeringMessage := p_triggeringMessage, + procedureCriticality := p_procedureCriticality, + iEsCriticalityDiagnostics := p_criticalityDiagnostics_IE_List, + iE_Extensions := p_iE_Extensions + } // End of template mw_criticalityDiagnostics + + template (present) CriticalityDiagnostics_IE_Item mw_criticalityDiagnostics_IE_Item( + template (present) Criticality p_iECriticality := ?, + template (present) ProtocolIE_ID p_iE_ID := ?, + template (present) TypeOfError p_typeOfError := ?, + template CriticalityDiagnostics_IE_Item.iE_Extensions p_iE_Extensions := * + ) := { + iECriticality := p_iECriticality, + iE_ID := p_iE_ID, + typeOfError := p_typeOfError, + iE_Extensions := p_iE_Extensions + } // End of template mw_criticalityDiagnostics_IE_Item + + template (present) CellBasedMDT_NR mw_cellBasedMDT_NR( + in template (present) CellIdListforMDT_NR p_cellIdListforMDT := ?, + in template CellBasedMDT_NR.iE_Extensions p_iE_Extensions := * + ) := { + cellIdListforMDT := p_cellIdListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellBasedMDT_NR + + template (present) CellBasedMDT_EUTRA mw_cellBasedMDT_EUTRA( + template (present) CellIdListforMDT_EUTRA p_cellIdListforMDT := ?, + template CellBasedMDT_EUTRA.iE_Extensions p_iE_Extensions := * + ) := { + cellIdListforMDT := p_cellIdListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellBasedMDT_EUTRA + + template (present) CellBasedQMC mw_cellBasedQMC( + template (present) CellIdListforQMC p_cellIdListforQMC := ?, + template CellBasedQMC.iE_Extensions p_iE_Extensions := * + ) := { + cellIdListforQMC := p_cellIdListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template mw_cellBasedQMC + + template (present) DataForwardingNotPossible mw_DataForwardingNotPossible(template (present) DataForwardingNotPossible p_value := data_forwarding_not_possible) := p_value; + + template (present) DataForwardingAccepted mw_dataForwardingAccepted(template (present) DataForwardingAccepted p_value := ?) := p_value; + + template (present) DataForwardingResponseDRBItem mw_dataForwardingResponseDRBItem( + template (present) DRB_ID p_dRB_ID := ?, + template UPTransportLayerInformation p_dLForwardingUP_TNLInformation := *, + template UPTransportLayerInformation p_uLForwardingUP_TNLInformation := *, + template DataForwardingResponseDRBItem.iE_Extensions p_iE_Extensions := * + ) := { + dRB_ID := p_dRB_ID, + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + uLForwardingUP_TNLInformation := p_uLForwardingUP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_dataForwardingResponseDRBItem + + template (present) DAPSRequestInfo mw_dAPSRequestInfo( + template (present) DAPSRequestInfo.dAPSIndicator p_dAPSIndicator := daps_ho_required, + template DAPSRequestInfo.iE_Extensions p_iE_Extensions := * + ) := { + dAPSIndicator := p_dAPSIndicator, + iE_Extensions := p_iE_Extensions + } // End of template mw_dAPSRequestInfo + + template (present) DAPSResponseInfoItem mw_dAPSResponseInfoItem( + template (present) DRB_ID p_dRB_ID := ?, + template (present) DAPSResponseInfo p_dAPSResponseInfo := ?, + template DAPSResponseInfoItem.iE_Extension p_iE_Extension := * + ) := { + dRB_ID := p_dRB_ID, + dAPSResponseInfo := p_dAPSResponseInfo, + iE_Extension := p_iE_Extension + } // End of template mw_dAPSResponseInfoItem + + template (present) DAPSResponseInfo mw_dAPSResponseInfo( + template (present) DAPSResponseInfo.dapsresponseindicator p_dapsresponseindicator := ?, + template DAPSResponseInfo.iE_Extensions p_iE_Extensions := * + ) := { + dapsresponseindicator := p_dapsresponseindicator, + iE_Extensions := p_iE_Extensions + } // End of template mw_dAPSResponseInfo + + template (present) DataForwardingResponseERABListItem mw_DataForwardingResponseERABListItem( + template (present) E_RAB_ID p_e_RAB_ID := ?, + template (present) UPTransportLayerInformation p_dLForwardingUP_TNLInformation := ?, + template DataForwardingResponseERABListItem.iE_Extensions p_iE_Extensions := * + ) := { + e_RAB_ID := p_e_RAB_ID, + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_DataForwardingResponseERABListItem + + template (present) DelayCritical mw_delayCritical(template (present) DelayCritical p_value := ?) := p_value; + + template (present) DL_CP_SecurityInformation mw_dL_CP_SecurityInformation( + template (present) DL_NAS_MAC p_dl_NAS_MAC := ?, + template DL_CP_SecurityInformation.iE_Extensions p_iE_Extensions := * + ) := { + dl_NAS_MAC := p_dl_NAS_MAC, + iE_Extensions := p_iE_Extensions + } // End of template mw_dL_CP_SecurityInformation + + template (present) DLForwarding mw_dLForwarding(template (present) DLForwarding p_value := dl_forwarding_proposed) := p_value; + + template (present) DL_NGU_TNLInformationReused mw_dL_NGU_TNLInformationReused(template (present) DL_NGU_TNLInformationReused p_value := true_) := p_value; + + template (present) DirectForwardingPathAvailability mw_directForwardingPathAvailability(template (present) DirectForwardingPathAvailability p_value := direct_path_available) := p_value; + + template (present) DRBsSubjectToStatusTransferItem mw_dRBsSubjectToStatusTransferItem( + in template (present) DRB_ID p_dRB_ID := ?, + in template (present) DRBStatusUL p_dRBStatusUL := ?, + in template (present) DRBStatusDL p_dRBStatusDL := ?, + in template DRBsSubjectToStatusTransferItem.iE_Extension p_iE_Extension := * + ) := { + dRB_ID := p_dRB_ID, + dRBStatusUL := p_dRBStatusUL, + dRBStatusDL := p_dRBStatusDL, + iE_Extension := p_iE_Extension + } // End of template mw_dRBsSubjectToStatusTransferItem + + template (present) DRBsSubjectToStatusTransferItem.iE_Extension mw_dRBsSubjectToStatusTransferItem_associatedQosFlowList( + template (present) AssociatedQosFlowList p_AssociatedQosFlowList := ? + ) := { + { + id := id_OldAssociatedQosFlowList_ULendmarkerexpected, + criticality := ignore, + extensionValue := { AssociatedQosFlowList := p_AssociatedQosFlowList } + } + } // End of template mw_dRBsSubjectToStatusTransferItem_associatedQosFlowList + + template (present) DRBStatusDL mw_dRBStatusDL_dRBStatusDL12( + template (present) DRBStatusDL12 p_dRBStatusDL12 := ? + ) := { + dRBStatusDL12 := p_dRBStatusDL12 + } // End of template mw_dRBStatusDL_dRBStatusDL12 + + template (present) DRBStatusDL mw_dRBStatusDL_dRBStatusDL18( + template (present) DRBStatusDL18 p_dRBStatusDL18 := ? + ) := { + dRBStatusDL18 := p_dRBStatusDL18 + } // End of template mw_dRBStatusDL_dRBStatusDL18 + + template (present) DRBStatusDL mw_dRBStatusDL_choice_Extensions( + template (present) DRBStatusDL.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_dRBStatusDL_choice_Extensions + + template (present) DRBStatusDL12 mw_dRBStatusDL12( + template (present) COUNTValueForPDCP_SN12 p_dL_COUNTValue := ?, + template DRBStatusDL12.iE_Extension p_iE_Extension := * + ) := { + dL_COUNTValue := p_dL_COUNTValue, + iE_Extension := p_iE_Extension + } // End of template mw_dRBStatusDL12 + + template (present) DRBStatusDL18 mw_dRBStatusDL18( + template (present) COUNTValueForPDCP_SN18 p_dL_COUNTValue := ?, + template DRBStatusDL18.iE_Extension p_iE_Extension := * + ) := { + dL_COUNTValue := p_dL_COUNTValue, + iE_Extension := p_iE_Extension + } // End of template mw_dRBStatusDL18 + + template (present) DRBStatusUL mw_dRBStatusUL_dRBStatusUL12( + template (present) DRBStatusUL12 p_dRBStatusUL12 := ? + ) := { + dRBStatusUL12 := p_dRBStatusUL12 + } // End of template mw_dRBStatusUL_dRBStatusUL12 + + template (present) DRBStatusUL mw_dRBStatusUL_dRBStatusUL18( + template (present) DRBStatusUL18 p_dRBStatusUL18 := ? + ) := { + dRBStatusUL18 := p_dRBStatusUL18 + } // End of template mw_dRBStatusUL_dRBStatusUL18 + + template (present) DRBStatusUL mw_dRBStatusUL_choice_Extensions( + template (present) DRBStatusUL.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_dRBStatusUL_choice_Extensions + + template (present) DRBStatusUL12 mw_dRBStatusUL12( + template (present) COUNTValueForPDCP_SN12 p_uL_COUNTValue := ?, + template DRBStatusUL12.receiveStatusOfUL_PDCP_SDUs p_receiveStatusOfUL_PDCP_SDUs := *, + template DRBStatusUL12.iE_Extension p_iE_Extension := * + ) := { + uL_COUNTValue := p_uL_COUNTValue, + receiveStatusOfUL_PDCP_SDUs := p_receiveStatusOfUL_PDCP_SDUs, + iE_Extension := p_iE_Extension + } // End of template mw_dRBStatusUL12 + + template (present) DRBStatusUL18 mw_dRBStatusUL18( + template (present) COUNTValueForPDCP_SN18 p_uL_COUNTValue := ?, + template DRBStatusUL18.receiveStatusOfUL_PDCP_SDUs p_receiveStatusOfUL_PDCP_SDUs := *, + template DRBStatusUL18.iE_Extension p_iE_Extension := * + ) := { + uL_COUNTValue := p_uL_COUNTValue, + receiveStatusOfUL_PDCP_SDUs := p_receiveStatusOfUL_PDCP_SDUs, + iE_Extension := p_iE_Extension + } // End of template mw_dRBStatusUL18 + + template (present) DRBsToQosFlowsMappingItem mw_dRBsToQosFlowsMappingItem( + template (present) DRB_ID p_dRB_ID := ?, + template (present) AssociatedQosFlowList p_associatedQosFlowList := ?, + template DRBsToQosFlowsMappingItem.iE_Extensions p_iE_Extensions := * + ) := { + dRB_ID := p_dRB_ID, + associatedQosFlowList := p_associatedQosFlowList, + iE_Extensions := p_iE_Extensions + } // End of template mw_dRBsToQosFlowsMappingItem + + template (present) DRBsToQosFlowsMappingItem.iE_Extensions mw_dRBsToQosFlowsMappingItem_dAPSRequestInfo( + template (present) DAPSRequestInfo p_dAPSRequestInfo := ? + ) := { + { + id := id_DAPSRequestInfo, + criticality := ignore, + extensionValue := { DAPSRequestInfo := p_dAPSRequestInfo } + } + } // End of template mw_dRBsToQosFlowsMappingItem_dAPSRequestInfo + + template (present) Dynamic5QIDescriptor mw_dynamic5QIDescriptor( + template (present) PriorityLevelQos p_priorityLevelQos := ?, + template (present) PacketDelayBudget p_packetDelayBudget := ?, + template (present) PacketErrorRate p_packetErrorRate := ?, + template FiveQI p_fiveQI := *, + template DelayCritical p_delayCritical := *, + template AveragingWindow p_averagingWindow := *, + template MaximumDataBurstVolume p_maximumDataBurstVolume := *, + template Dynamic5QIDescriptor.iE_Extensions p_iE_Extensions := * + ) := { + priorityLevelQos := p_priorityLevelQos, + packetDelayBudget := p_packetDelayBudget, + packetErrorRate := p_packetErrorRate, + fiveQI := p_fiveQI, + delayCritical := p_delayCritical, + // The above IE shall be present in case of GBR QoS flow + averagingWindow := p_averagingWindow, + // The above IE shall be present in case of GBR QoS flow + maximumDataBurstVolume := p_maximumDataBurstVolume, + iE_Extensions := p_iE_Extensions + } // End of template mw_dynamic5QIDescriptor + + template (present) Dynamic5QIDescriptor.iE_Extensions mw_dynamic5QIDescriptor_extendedPacketDelayBudget( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_ExtendedPacketDelayBudget, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_dynamic5QIDescriptor_extendedPacketDelayBudget + + template (present) Dynamic5QIDescriptor.iE_Extensions mw_dynamic5QIDescriptor_cNPacketDelayBudgetDL( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_CNPacketDelayBudgetDL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_dynamic5QIDescriptor_cNPacketDelayBudgetDL + + template (present) Dynamic5QIDescriptor.iE_Extensions mw_dynamic5QIDescriptor_cNPacketDelayBudgetUL( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_CNPacketDelayBudgetUL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_dynamic5QIDescriptor_cNPacketDelayBudgetUL + + template (present) EarlyMeasurement mw_earlyMeasurement(template (present) EarlyMeasurement p_value := true_) := p_value; + + template (present) EarlyStatusTransfer_TransparentContainer mw_earlyStatusTransfer_TransparentContainer( + template (present) ProcedureStageChoice p_procedureStage := ?, + template EarlyStatusTransfer_TransparentContainer.iE_Extensions p_iE_Extensions := * + ) := { + procedureStage := p_procedureStage, + iE_Extensions := p_iE_Extensions + } // End of template mw_earlyStatusTransfer_TransparentContainer + + template (present) ProcedureStageChoice mw_procedureStageChoice_firstDLCount( + template (present) FirstDLCount p_firstDLCount := ? + ) := { + first_dl_count := p_firstDLCount + } // End of template mw_procedureStageChoice_firstDLCount + + template (present) ProcedureStageChoice mw_procedureStageChoice_choice_Extensions( + template (present) ProcedureStageChoice.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_procedureStageChoice_choice_Extensions + + template (present) FirstDLCount mw_firstDLCount( + template (present) DRBsSubjectToEarlyStatusTransfer_List p_dRBsSubjectToEarlyStatusTransfer := ?, + template FirstDLCount.iE_Extension p_iE_Extension := * + ) := { + dRBsSubjectToEarlyStatusTransfer := p_dRBsSubjectToEarlyStatusTransfer, + iE_Extension := p_iE_Extension + } // End of template mw_firstDLCount + + template (present) DRBsSubjectToEarlyStatusTransfer_Item mw_dRBsSubjectToEarlyStatusTransfer_Item( + template (present) DRB_ID p_dRB_ID := ?, + template (present) DRBStatusDL p_firstDLCOUNT := ?, + template DRBsSubjectToEarlyStatusTransfer_Item.iE_Extension p_iE_Extension := * + ) := { + dRB_ID := p_dRB_ID, + firstDLCOUNT := p_firstDLCOUNT, + iE_Extension := p_iE_Extension + } // End of template mw_dRBsSubjectToEarlyStatusTransfer_Item + + template (present) EDT_Session mw_eDT_Session(template (present) EDT_Session p_value := true_) := p_value; + + template (present) EmergencyAreaIDBroadcastEUTRA_Item mw_emergencyAreaIDBroadcastEUTRA_Item( + template (present) EmergencyAreaID p_emergencyAreaID := ?, + template (present) CompletedCellsInEAI_EUTRA p_completedCellsInEAI_EUTRA := ?, + template EmergencyAreaIDBroadcastEUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + emergencyAreaID := p_emergencyAreaID, + completedCellsInEAI_EUTRA := p_completedCellsInEAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template mw_emergencyAreaIDBroadcastEUTRA_Item + + template (present) EmergencyAreaIDBroadcastNR_Item mw_emergencyAreaIDBroadcastNR_Item( + template (present) EmergencyAreaID p_emergencyAreaID := ?, + template (present) CompletedCellsInEAI_NR p_completedCellsInEAI_NR := ?, + template EmergencyAreaIDBroadcastNR_Item.iE_Extensions p_iE_Extensions := * + ) := { + emergencyAreaID := p_emergencyAreaID, + completedCellsInEAI_NR := p_completedCellsInEAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template mw_emergencyAreaIDBroadcastNR_Item + + template (present) EmergencyAreaIDCancelledEUTRA_Item mw_emergencyAreaIDCancelledEUTRA_Item( + template (present) EmergencyAreaID p_emergencyAreaID := ?, + template (present) CancelledCellsInEAI_EUTRA p_cancelledCellsInEAI_EUTRA := ?, + template EmergencyAreaIDCancelledEUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + emergencyAreaID := p_emergencyAreaID, + cancelledCellsInEAI_EUTRA := p_cancelledCellsInEAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template mw_emergencyAreaIDCancelledEUTRA_Item + + template (present) EmergencyAreaIDCancelledNR_Item mw_emergencyAreaIDCancelledNR_Item( + template (present) EmergencyAreaID p_emergencyAreaID := ?, + template (present) CancelledCellsInEAI_NR p_cancelledCellsInEAI_NR := ?, + template EmergencyAreaIDCancelledNR_Item.iE_Extensions p_iE_Extensions := * + ) := { + emergencyAreaID := p_emergencyAreaID, + cancelledCellsInEAI_NR := p_cancelledCellsInEAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template mw_emergencyAreaIDCancelledNR_Item + + template (present) EmergencyFallbackIndicator mw_emergencyFallbackIndicator( + template (present) EmergencyFallbackRequestIndicator p_emergencyFallbackRequestIndicator := ?, + template EmergencyServiceTargetCN p_emergencyServiceTargetCN := *, + template EmergencyFallbackIndicator.iE_Extensions p_iE_Extensions := * + ) := { + emergencyFallbackRequestIndicator := p_emergencyFallbackRequestIndicator, + emergencyServiceTargetCN := p_emergencyServiceTargetCN, + iE_Extensions := p_iE_Extensions + } // End of template mw_emergencyFallbackIndicator + + template (present) EmergencyFallbackRequestIndicator mw_emergencyFallbackRequestIndicator(template (present) EmergencyFallbackRequestIndicator p_value := emergency_fallback_requested) := p_value; + + template (present) EmergencyServiceTargetCN mw_emergencyServiceTargetCN(template (present) EmergencyServiceTargetCN p_value := ?) := p_value; + + template (present) ENB_ID mw_eNB_ID_macroENB_ID( + template (present) Bit20 p_macroENB_ID := ? + ) := { + macroENB_ID := p_macroENB_ID + } // End of template mw_eNB_ID_macroENB_ID + + template (present) ENB_ID mw_eNB_ID_homeENB_ID( + template (present) Bit28 p_homeENB_ID := ? + ) := { + homeENB_ID := p_homeENB_ID + } // End of template mw_eNB_ID_homeENB_ID + + template (present) ENB_ID mw_eNB_ID_short_macroENB_ID( + template (present) Bit18 p_short_macroENB_ID := ? + ) := { + short_macroENB_ID := p_short_macroENB_ID + } // End of template mw_eNB_ID_short_macroENB_ID + + template (present) ENB_ID mw_eNB_ID_long_macroENB_ID( + template (present) Bit21 p_long_macroENB_ID := ? + ) := { + long_macroENB_ID := p_long_macroENB_ID + } // End of template mw_eNB_ID_long_macroENB_ID + + template (present) ENB_ID mw_eNB_ID_choice_Extensions( + template (present) ENB_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_eNB_ID_choice_Extensions + + template (present) Enhanced_CoverageRestriction mw_enhanced_CoverageRestriction(template (present) Enhanced_CoverageRestriction p_value := restricted) := p_value; + + template (present) EndpointIPAddressAndPort mw_endpointIPAddressAndPort( + template (present) TransportLayerAddress p_endpointIPAddress := ?, + template (present) PortNumber p_portNumber := ?, + template EndpointIPAddressAndPort.iE_Extensions p_iE_Extensions := * + ) := { + endpointIPAddress := p_endpointIPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template mw_endpointIPAddressAndPort + + template (present) EndIndication mw_endIndication(template (present) EndIndication p_value := ?) := p_value; + + template (present) EPS_TAI mw_ePS_TAI( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) EPS_TAC p_ePS_TAC := ?, + template EPS_TAI.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + ePS_TAC := p_ePS_TAC, + iE_Extensions := p_iE_Extensions + } // End of template mw_ePS_TAI + + template (present) E_RABInformationItem mw_e_RABInformationItem( + template (present) E_RAB_ID p_e_RAB_ID := ?, + template (present) DLForwarding p_dLForwarding := ?, + template E_RABInformationItem.iE_Extensions p_iE_Extensions := * + ) := { + e_RAB_ID := p_e_RAB_ID, + dLForwarding := p_dLForwarding, + iE_Extensions := p_iE_Extensions + } // End of template mw_e_RABInformationItem + + template (present) E_RABInformationItem.iE_Extensions mw_e_RABInformationItem_id_SourceTNLAddrInfo( + template (present) TransportLayerAddress p_transportLayerAddress := ? + ) := { + { + id := id_SourceTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template mw_e_RABInformationItem_id_SourceTNLAddrInfo + + template (present) E_RABInformationItem.iE_Extensions mw_e_RABInformationItem_id_SourceNodeTNLAddrInfo( + template (present) TransportLayerAddress p_transportLayerAddress := ? + ) := { + { + id := id_SourceNodeTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template mw_e_RABInformationItem_id_SourceNodeTNLAddrInfo + + template (present) E_RABInformationItem.iE_Extensions mw_e_RABInformationItem_full( + template (present) TransportLayerAddress p_transportLayerAddress_id_SourceTNLAddrInfo := ?, + template (present) TransportLayerAddress p_transportLayerAddress_id_SourceNodeTNLAddrInfo := ? + ) := { + { + id := id_SourceTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress_id_SourceTNLAddrInfo } + }, + { + id := id_SourceNodeTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress_id_SourceNodeTNLAddrInfo } + } + } // End of template mw_e_RABInformationItem_full + + template (present) EUTRA_CGI mw_uUTRA_CGI( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) EUTRACellIdentity p_eUTRACellIdentity := ?, + template EUTRA_CGI.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + eUTRACellIdentity := p_eUTRACellIdentity, + iE_Extensions := p_iE_Extensions + } // End of template mw_uUTRA_CGI + + template (present) EUTRA_PagingeDRXInformation mw_eUTRA_PagingeDRXInformation( + template (present) EUTRA_Paging_eDRX_Cycle p_eUTRA_paging_eDRX_Cycle := ?, + template EUTRA_Paging_Time_Window p_eUTRA_paging_Time_Window := *, + template EUTRA_PagingeDRXInformation.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_paging_eDRX_Cycle := p_eUTRA_paging_eDRX_Cycle, + eUTRA_paging_Time_Window := p_eUTRA_paging_Time_Window, + iE_Extensions := p_iE_Extensions + } // End of template mw_eUTRA_PagingeDRXInformation + + template (present) EUTRA_Paging_eDRX_Cycle mw_eUTRA_Paging_eDRX_Cycle(template (present) EUTRA_Paging_eDRX_Cycle p_value := ?) := p_value; + + template (present) EUTRA_Paging_Time_Window mw_eUTRA_Paging_Time_Window(template (present) EUTRA_Paging_Time_Window p_value := ?) := p_value; + + template (present) EventType mw_eventType(template (present) EventType p_value := ?) := p_value; + + template (present) ExcessPacketDelayThresholdItem mw_excessPacketDelayThresholdItem( + template (present) FiveQI p_fiveQi := ?, + template (present) ExcessPacketDelayThresholdValue p_excessPacketDelayThresholdValue := ?, + template ExcessPacketDelayThresholdItem.iE_Extensions p_iE_Extensions := * + ) := { + fiveQi := p_fiveQi, + excessPacketDelayThresholdValue := p_excessPacketDelayThresholdValue, + iE_Extensions := p_iE_Extensions + } // End of template mw_excessPacketDelayThresholdItem + + template (present) ExcessPacketDelayThresholdValue mw_excessPacketDelayThresholdValue(template (present) ExcessPacketDelayThresholdValue p_value := ?) := p_value; + + template (present) ExpectedHOInterval mw_expectedHOInterval(template (present) ExpectedHOInterval p_value := ?) := p_value; + + template ExpectedUEActivityBehaviour mw_expectedUEActivityBehaviour( + template ExpectedActivityPeriod p_expectedActivityPeriod := *, + template ExpectedIdlePeriod p_expectedIdlePeriod := *, + template SourceOfUEActivityBehaviourInformation p_sourceOfUEActivityBehaviourInformation := *, + template ExpectedUEActivityBehaviour.iE_Extensions p_iE_Extensions := * + ) := { + expectedActivityPeriod := p_expectedActivityPeriod, + expectedIdlePeriod := p_expectedIdlePeriod, + sourceOfUEActivityBehaviourInformation := p_sourceOfUEActivityBehaviourInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_expectedUEActivityBehaviour + + template ExpectedUEBehaviour mw_expectedUEBehaviour( + template ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := *, + template ExpectedHOInterval p_expectedHOInterval := *, + template ExpectedUEMobility p_expectedUEMobility := *, + template ExpectedUEMovingTrajectory p_expectedUEMovingTrajectory:= *, + template ExpectedUEBehaviour.iE_Extensions p_iE_Extensions := * + ) := { + expectedUEActivityBehaviour := p_expectedUEActivityBehaviour, + expectedHOInterval := p_expectedHOInterval, + expectedUEMobility := p_expectedUEMobility, + expectedUEMovingTrajectory := p_expectedUEMovingTrajectory, + iE_Extensions := p_iE_Extensions + } // End of template m_expectedUEBehaviour + + template (present) ExpectedUEMobility mw_expectedUEMobility(template (present) ExpectedUEMobility p_value := ?) := p_value; + + template (present) ExpectedUEMovingTrajectoryItem mw_expectedUEMovingTrajectoryItem( + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template ExpectedUEMovingTrajectoryItem.timeStayedInCell p_timeStayedInCell := *, + template ExpectedUEMovingTrajectoryItem.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CGI := p_nGRAN_CGI, + timeStayedInCell := p_timeStayedInCell, + iE_Extensions := p_iE_Extensions + } // End of template mw_expectedUEMovingTrajectoryItem + + template Extended_AMFName mw_extended_AMFName( + template AMFNameVisibleString p_aMFNameVisibleString := *, + template AMFNameUTF8String p_aMFNameUTF8String := *, + template Extended_AMFName.iE_Extensions p_iE_Extensions := * + ) := { + aMFNameVisibleString := p_aMFNameVisibleString, + aMFNameUTF8String := p_aMFNameUTF8String, + iE_Extensions := p_iE_Extensions + } // End of template mw_extended_AMFName + + template Extended_RANNodeName mw_extended_RANNodeName( + template RANNodeNameVisibleString p_rANNodeNameVisibleString := *, + template RANNodeNameUTF8String p_rANNodeNameUTF8String := *, + template Extended_RANNodeName.iE_Extensions p_iE_Extensions := * + ) := { + rANNodeNameVisibleString := p_rANNodeNameVisibleString, + rANNodeNameUTF8String := p_rANNodeNameUTF8String, + iE_Extensions := p_iE_Extensions + } // End of template mw_extended_RANNodeName + + template (present) ExtendedRATRestrictionInformation mw_extendedRATRestrictionInformation( + template (present) ExtendedRATRestrictionInformation.primaryRATRestriction p_primaryRATRestriction := ?, + template (present) ExtendedRATRestrictionInformation.secondaryRATRestriction p_secondaryRATRestriction := ?, + template ExtendedRATRestrictionInformation.iE_Extensions p_iE_Extensions := * + ) := { + primaryRATRestriction := p_primaryRATRestriction, + secondaryRATRestriction := p_secondaryRATRestriction, + iE_Extensions := p_iE_Extensions + } // End of template mw_extendedRATRestrictionInformation + + template (present) EventTrigger mw_eventTrigger_outOfCoverage( + template (present) EventTrigger.outOfCoverage p_outOfCoverage := true_ + ) := { + outOfCoverage := p_outOfCoverage + } // End of template mw_eventTrigger_outOfCoverage + + template (present) EventTrigger mw_eventTrigger_eventL1LoggedMDTConfig( + template (present) EventL1LoggedMDTConfig p_eventL1LoggedMDTConfig := ? + ) := { + eventL1LoggedMDTConfig := p_eventL1LoggedMDTConfig + } // End of template mw_eventTrigger_eventL1LoggedMDTConfig + + template (present) EventTrigger mw_eventTrigger_choice_Extensions( + template (present) EventTrigger.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_eventTrigger_choice_Extensions + + template (present) EventL1LoggedMDTConfig mw_eventL1LoggedMDTConfig( + template (present) MeasurementThresholdL1LoggedMDT p_l1Threshold := ?, + template (present) Hysteresis p_hysteresis := ?, + template (present) TimeToTrigger p_timeToTrigger := ?, + template EventL1LoggedMDTConfig.iE_Extensions p_iE_Extensions := * + ) := { + l1Threshold := p_l1Threshold, + hysteresis := p_hysteresis, + timeToTrigger := p_timeToTrigger, + iE_Extensions := p_iE_Extensions + } // End of template mw_eventL1LoggedMDTConfig + + template (present) MeasurementThresholdL1LoggedMDT mw_measurementThresholdL1LoggedMDT_threshold_RSRP( + template (present) Threshold_RSRP p_threshold_RSRP := ? + ) := { + threshold_RSRP := p_threshold_RSRP + } // End of template mw_measurementThresholdL1LoggedMDT_threshold_RSRP + + template (present) MeasurementThresholdL1LoggedMDT mw_measurementThresholdL1LoggedMDT_threshold_RSRQ( + template (present) Threshold_RSRQ p_threshold_RSRQ := ? + ) := { + threshold_RSRQ := p_threshold_RSRQ + } // End of template mw_measurementThresholdL1LoggedMDT_threshold_RSRQ + + template (present) MeasurementThresholdL1LoggedMDT mw_measurementThresholdL1LoggedMDT_choice_Extensions( + template (present) MeasurementThresholdL1LoggedMDT.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_measurementThresholdL1LoggedMDT_choice_Extensions + + template (present) FailureIndication mw_failureIndication( + template (present) UERLFReportContainer p_uERLFReportContainer := ?, + template FailureIndication.iE_Extensions p_iE_Extensions := * + ) := { + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template mw_failureIndication + + template FiveG_ProSeAuthorized mw_FiveG_ProSeAuthorized( + template FiveGProSeDirectDiscovery p_fiveGProSeDirectDiscovery := *, + template FiveGProSeDirectCommunication p_fiveGProSeDirectCommunication := *, + template FiveGProSeLayer2UEtoNetworkRelay p_fiveGProSeLayer2UEtoNetworkRelay := *, + template FiveGProSeLayer3UEtoNetworkRelay p_fiveGProSeLayer3UEtoNetworkRelay := *, + template FiveGProSeLayer2RemoteUE p_fiveGProSeLayer2RemoteUE := *, + template FiveG_ProSeAuthorized.iE_Extensions p_iE_Extensions := * + ) := { + fiveGProSeDirectDiscovery := p_fiveGProSeDirectDiscovery, + fiveGProSeDirectCommunication := p_fiveGProSeDirectCommunication, + fiveGProSeLayer2UEtoNetworkRelay := p_fiveGProSeLayer2UEtoNetworkRelay, + fiveGProSeLayer3UEtoNetworkRelay := p_fiveGProSeLayer3UEtoNetworkRelay, + fiveGProSeLayer2RemoteUE := p_fiveGProSeLayer2RemoteUE, + iE_Extensions := p_iE_Extensions + } // End of template mw_FiveG_ProSeAuthorized + + template (present) FiveGProSeDirectDiscovery mw_fiveGProSeDirectDiscovery(template (present) FiveGProSeDirectDiscovery p_value := ?) := p_value; + + template (present) FiveGProSeDirectCommunication mw_fiveGProSeDirectCommunication(template (present) FiveGProSeDirectCommunication p_value := ?) := p_value; + + template (present) FiveGProSeLayer2UEtoNetworkRelay mw_fiveGProSeLayer2UEtoNetworkRelay(template (present) FiveGProSeLayer2UEtoNetworkRelay p_value := ?) := p_value; + + template (present) FiveGProSeLayer3UEtoNetworkRelay mw_fiveGProSeLayer3UEtoNetworkRelay(template (present) FiveGProSeLayer3UEtoNetworkRelay p_value := ?) := p_value; + + template (present) FiveGProSeLayer2RemoteUE mw_fiveGProSeLayer2RemoteUE(template (present) FiveGProSeLayer2RemoteUE p_value := ?) := p_value; + + template (present) FiveG_ProSePC5QoSParameters mw_fiveG_ProSePC5QoSParameters( + template (present) FiveGProSePC5QoSFlowList p_fiveGProSepc5QoSFlowList := ?, + template BitRate p_fiveGProSepc5LinkAggregateBitRates := *, + template FiveG_ProSePC5QoSParameters.iE_Extensions p_iE_Extensions := * + ) := { + fiveGProSepc5QoSFlowList := p_fiveGProSepc5QoSFlowList, + fiveGProSepc5LinkAggregateBitRates := p_fiveGProSepc5LinkAggregateBitRates, + iE_Extensions := p_iE_Extensions + } // End of template mw_fiveG_ProSePC5QoSParameters + + template (present) FiveGProSePC5QoSFlowItem mw_fiveGProSePC5QoSFlowItem( + template (present) FiveQI p_fiveGproSepQI := ?, + template FiveGProSePC5FlowBitRates p_fiveGproSepc5FlowBitRates := *, + template Range p_fiveGproSerange := *, + template FiveGProSePC5QoSFlowItem.iE_Extensions p_iE_Extensions := * + ) := { + fiveGproSepQI := p_fiveGproSepQI, + fiveGproSepc5FlowBitRates := p_fiveGproSepc5FlowBitRates, + fiveGproSerange := p_fiveGproSerange, + iE_Extensions := p_iE_Extensions + } // End of template mw_fiveGProSePC5QoSFlowItem + + template (present) FiveGProSePC5FlowBitRates mw_fiveGProSePC5FlowBitRates( + template (present) BitRate p_fiveGproSeguaranteedFlowBitRate := ?, + template (present) BitRate p_fiveGproSemaximumFlowBitRate := ?, + template FiveGProSePC5FlowBitRates.iE_Extensions p_iE_Extensions := * + ) := { + fiveGproSeguaranteedFlowBitRate := p_fiveGproSeguaranteedFlowBitRate, + fiveGproSemaximumFlowBitRate := p_fiveGproSemaximumFlowBitRate, + iE_Extensions := p_iE_Extensions + } // End of template mw_fiveGProSePC5FlowBitRates + + template (present) FiveG_S_TMSI mw_fiveG_S_TMSI( + template (present) AMFSetID p_aMFSetID := ?, + template (present) AMFPointer p_aMFPointer := ?, + template (present) FiveG_TMSI p_fiveG_TMSI := ?, + template FiveG_S_TMSI.iE_Extensions p_iE_Extensions := * + ) := { + aMFSetID := p_aMFSetID, + aMFPointer := p_aMFPointer, + fiveG_TMSI := p_fiveG_TMSI, + iE_Extensions := p_iE_Extensions + } // End of template mw_fiveG_S_TMSI + + template (present) ForbiddenAreaInformation_Item mw_forbiddenAreaInformation_Item( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) ForbiddenTACs p_forbiddenTACs := ?, + template ForbiddenAreaInformation_Item.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + forbiddenTACs := p_forbiddenTACs, + iE_Extensions := p_iE_Extensions + } // End of template mw_forbiddenAreaInformation_Item + + template (present) FromEUTRANtoNGRAN mw_fromEUTRANtoNGRAN( + template (present) IntersystemSONeNBID p_sourceeNBID := ?, + template (present) IntersystemSONNGRANnodeID p_targetNGRANnodeID := ?, + template FromEUTRANtoNGRAN.iE_Extensions p_iE_Extensions := * + ) := { + sourceeNBID := p_sourceeNBID, + targetNGRANnodeID := p_targetNGRANnodeID, + iE_Extensions := p_iE_Extensions + } // End of template mw_fromEUTRANtoNGRAN + + template (present) FromNGRANtoEUTRAN mw_fromNGRANtoEUTRAN( + template (present) IntersystemSONNGRANnodeID p_sourceNGRANnodeID := ?, + template (present) IntersystemSONeNBID p_targeteNBID := ?, + template FromNGRANtoEUTRAN.iE_Extensions p_iE_Extensions := * + ) := { + sourceNGRANnodeID := p_sourceNGRANnodeID, + targeteNBID := p_targeteNBID, + iE_Extensions := p_iE_Extensions + } // End of template mw_fromNGRANtoEUTRAN + + template (present) GBR_QosInformation mw_gBR_QosInformation( + template (present) BitRate p_maximumFlowBitRateDL := ?, + template (present) BitRate p_maximumFlowBitRateUL := ?, + template (present) BitRate p_guaranteedFlowBitRateDL := ?, + template (present) BitRate p_guaranteedFlowBitRateUL := ?, + template NotificationControl p_notificationControl := *, + template PacketLossRate p_maximumPacketLossRateDL := *, + template PacketLossRate p_maximumPacketLossRateUL := *, + template GBR_QosInformation.iE_Extensions p_iE_Extensions := * + ) := { + maximumFlowBitRateDL := p_maximumFlowBitRateDL, + maximumFlowBitRateUL := p_maximumFlowBitRateUL, + guaranteedFlowBitRateDL := p_guaranteedFlowBitRateDL, + guaranteedFlowBitRateUL := p_guaranteedFlowBitRateUL, + notificationControl := p_notificationControl, + maximumPacketLossRateDL := p_maximumPacketLossRateDL, + maximumPacketLossRateUL := p_maximumPacketLossRateUL, + iE_Extensions := p_iE_Extensions + } // End of template mw_gBR_QosInformation + + template (present) GBR_QosInformation.iE_Extensions mw_gBR_QosInformation_id_AlternativeQoSParaSetList( + template (present) AlternativeQoSParaSetList p_alternativeQoSParaSetList := ? + ) := { + { + id := id_AlternativeQoSParaSetList, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetList := p_alternativeQoSParaSetList} + } + } // End of template mw_gBR_QosInformation_id_AlternativeQoSParaSetList + + template (present) GlobalCable_ID_new mw_globalCable_ID_new( + template (present) GlobalCable_ID p_globalCable_ID := ?, + template (present) TAI p_tAI := ?, + template GlobalCable_ID_new.iE_Extensions p_iE_Extensions := * + ) := { + globalCable_ID := p_globalCable_ID, + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_globalCable_ID_new + + template (present) GlobalGNB_ID mw_ie_globalGnbId( + template (present) PLMNIdentity p_plmnId := ?, + template (present) bitstring p_gnbId := ?, + template GlobalGNB_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_plmnId,//'010001'O, + gNB_ID := { gNB_ID := p_gnbId/*'0000000000000000000000'B*/}, + iE_Extensions := p_iE_Extensions + } // End of template mw_ie_globalGnbId + + template (present) GlobalN3IWF_ID mw_globalN3IWF_ID( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) N3IWF_ID p_n3IWF_ID := ?, + template GlobalN3IWF_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + n3IWF_ID := p_n3IWF_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_globalN3IWF_ID + + template (present) GlobalLine_ID mw_globalLine_ID( + template (present) GlobalLineIdentity p_globalLineIdentity := ?, + template LineType p_lineType := *, + template GlobalLine_ID.iE_Extensions p_iE_Extensions := * + ) := { + globalLineIdentity := p_globalLineIdentity, + lineType := p_lineType, + iE_Extensions := p_iE_Extensions + } // End of template mw_globalLine_ID + + template (present) GlobalLine_ID.iE_Extensions mw_globalLine_ID_id_TAI(template TAI p_tAI := *) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template mw_globalLine_ID_id_TAI + + template (present) GlobalNgENB_ID mw_globalNgENB_ID( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) NgENB_ID p_ngENB_ID := ?, + template GlobalNgENB_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + ngENB_ID := p_ngENB_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_globalNgENB_ID + + template (present) GlobalRANNodeID mw_globalRANNodeID_globalGNB_ID( + template (present) GlobalGNB_ID p_globalGNB_ID := ? + ) := { + globalGNB_ID := p_globalGNB_ID + } // End of template mw_globalRANNodeID_globalGNB_ID + + template (present) GlobalRANNodeID mw_globalRANNodeID_globalNgENB_ID( + template (present) GlobalNgENB_ID p_globalNgENB_ID := ? + ) := { + globalNgENB_ID := p_globalNgENB_ID + } // End of template mw_globalRANNodeID_globalNgENB_ID + + template (present) GlobalRANNodeID mw_globalRANNodeID_globalN3IWF_ID( + template (present) GlobalN3IWF_ID p_globalN3IWF_ID := ? + ) := { + globalN3IWF_ID := p_globalN3IWF_ID + } // End of template mw_globalRANNodeID_globalN3IWF_ID + + template (present) GlobalRANNodeID mw_globalRANNodeID_choice_Extensions( + template (present) GlobalRANNodeID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_globalRANNodeID_choice_Extensions + + template (present) GlobalRANNodeID.choice_Extensions mw_globalRANNodeID_id_GlobalTNGF_ID( + template (present) GlobalTNGF_ID p_globalTNGF_ID := ? + ) := { + id := id_GlobalTNGF_ID, + criticality := reject, + value_ := { GlobalTNGF_ID := p_globalTNGF_ID } + } // End of template mw_globalRANNodeID_id_GlobalTNGF_ID + + template (present) GlobalRANNodeID.choice_Extensions mw_globalRANNodeID_id_GlobalTWIF_ID( + template (present) GlobalTNGF_ID p_globalTWIF_ID := ? + ) := { + id := id_GlobalTWIF_ID, + criticality := reject, + value_ := { GlobalTNGF_ID := p_globalTWIF_ID } + } // End of template mw_globalRANNodeID_id_GlobalTWIF_ID + + template (present) GlobalRANNodeID.choice_Extensions mw_globalRANNodeID_id_GlobalW_AGF_ID( + template (present) GlobalW_AGF_ID p_globalW_AGF_ID := ? + ) := { + id := id_GlobalW_AGF_ID, + criticality := reject, + value_ := { GlobalW_AGF_ID := p_globalW_AGF_ID } + } // End of template mw_globalRANNodeID_id_GlobalW_AGF_ID + + template (present) GlobalTNGF_ID mw_globalTNGF_ID( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) TNGF_ID p_tNGF_ID := ?, + template GlobalTNGF_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + tNGF_ID := p_tNGF_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_globalTNGF_ID + + template (present) GlobalTWIF_ID mw_globalTWIF_ID( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) TWIF_ID p_tWIF_ID := ?, + template GlobalTWIF_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + tWIF_ID := p_tWIF_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_globalTWIF_ID + + template (present) GlobalW_AGF_ID mw_GlobalW_AGF_ID( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) W_AGF_ID p_w_AGF_ID := ?, + template GlobalW_AGF_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + w_AGF_ID := p_w_AGF_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_GlobalW_AGF_ID + + template (present) GNB_ID mw_gNB_ID_gNB_ID( + template (present) GNB_ID.gNB_ID p_gNB_ID := ? + ) := { + gNB_ID := p_gNB_ID + } // End of template mw_gNB_ID_gNB_ID + + template (present) GNB_ID mw_gNB_ID_choice_Extensions( + template (present) GNB_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_gNB_ID_choice_Extensions + + template (present) GTPTunnel mw_gTPTunnel( + in template (present) TransportLayerAddress p_tla := ?, + in template (present) GTP_TEID p_gtp_teid := ?, + in template GTPTunnel.iE_Extensions p_iE_Extensions := * + ):= { + transportLayerAddress := p_tla, + gTP_TEID := p_gtp_teid, + iE_Extensions := p_iE_Extensions + } // End of template mw_gTPTunnel + + template (present) GUAMI mw_gUAMI( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) AMFRegionID p_aMFRegionID := ?, + template (present) AMFSetID p_aMFSetID := ?, + template (present) AMFPointer p_aMFPointer := ?, + template GUAMI.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + aMFRegionID := p_aMFRegionID, + aMFSetID := p_aMFSetID, + aMFPointer := p_aMFPointer, + iE_Extensions := p_iE_Extensions + } // End of template mw_gUAMI + + template (present) GUAMIType mw_gUAMIType(template (present) GUAMIType p_val := ?) := p_val; + + template HandoverCommandTransfer mw_handoverCommandTransfer( + template UPTransportLayerInformation p_dLForwardingUP_TNLInformation := *, + template QosFlowToBeForwardedList p_qosFlowToBeForwardedList := *, + template DataForwardingResponseDRBList p_dataForwardingResponseDRBList := *, + template HandoverCommandTransfer.iE_Extensions p_iE_Extensions := * + ) := { + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + qosFlowToBeForwardedList := p_qosFlowToBeForwardedList, + dataForwardingResponseDRBList := p_dataForwardingResponseDRBList, + iE_Extensions := p_iE_Extensions + } // End of template mw_handoverCommandTransfer + + template (present) HandoverCommandTransfer.iE_Extensions mw_handoverCommandTransfer_id_AdditionalDLForwardingUPTNLInformation( + template (present) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList := ? + ) := { + { + id := id_AdditionalDLForwardingUPTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template mw_handoverCommandTransfer_id_AdditionalDLForwardingUPTNLInformation + + template (present) HandoverCommandTransfer.iE_Extensions mw_handoverCommandTransfer_id_ULForwardingUP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_ULForwardingUP_TNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_handoverCommandTransfer_id_ULForwardingUP_TNLInformation + + template (present) HandoverCommandTransfer.iE_Extensions mw_handoverCommandTransfer_id_AdditionalULForwardingUPTNLInformation( + template (present) UPTransportLayerInformationList p_uPTransportLayerInformationList := ? + ) := { + { + id := id_AdditionalULForwardingUPTNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template mw_handoverCommandTransfer_id_AdditionalULForwardingUPTNLInformation + + template (present) HandoverCommandTransfer.iE_Extensions mw_handoverCommandTransfer_id_DataForwardingResponseERABList( + template (present) DataForwardingResponseERABList p_dataForwardingResponseERABList := ? + ) := { + { + id := id_DataForwardingResponseERABList, + criticality := ignore, + extensionValue := { DataForwardingResponseERABList := p_dataForwardingResponseERABList } + } + } // End of template mw_handoverCommandTransfer_id_DataForwardingResponseERABList + + template (present) HandoverCommandTransfer.iE_Extensions mw_handoverCommandTransfer_id_QosFlowFailedToSetupList( + template (present) QosFlowListWithCause p_qosFlowListWithCause := ? + ) := { + { + id := id_QosFlowFailedToSetupList, + criticality := ignore, + extensionValue := { QosFlowListWithCause := p_qosFlowListWithCause } + } + } // End of template mwhandoverCommandTransfer_id_QosFlowFailedToSetupList + + template (present) HandoverFlag mw_handoverFlag(template (present) HandoverFlag p_val := handover_preparation) := p_val; + + template (present) HandoverPreparationUnsuccessfulTransfer mw_mandoverPreparationUnsuccessfulTransfer( + template (present) Cause p_cause := ?, + template HandoverPreparationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_mandoverPreparationUnsuccessfulTransfer + + template (present) HandoverRequestAcknowledgeTransfer mw_handoverRequestAcknowledgeTransfer( + template (present) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := ?, + template (present) QosFlowListWithDataForwarding p_qosFlowSetupResponseList := ?, + template UPTransportLayerInformation p_dLForwardingUP_TNLInformation := *, + template SecurityResult p_securityResult := *, + template QosFlowListWithCause p_qosFlowFailedToSetupList := *, + template DataForwardingResponseDRBList p_dataForwardingResponseDRBList := *, + template HandoverRequestAcknowledgeTransfer.iE_Extensions p_iE_Extensions := * + ) := { + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + dLForwardingUP_TNLInformation := p_dLForwardingUP_TNLInformation, + securityResult := p_securityResult, + qosFlowSetupResponseList := p_qosFlowSetupResponseList, + qosFlowFailedToSetupList := p_qosFlowFailedToSetupList, + dataForwardingResponseDRBList := p_dataForwardingResponseDRBList, + iE_Extensions := p_iE_Extensions + } // End of template mw_handoverRequestAcknowledgeTransfer + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_AdditionalDLUPTNLInformationForHOList( + template (present) AdditionalDLUPTNLInformationForHOList p_additionalDLUPTNLInformationForHOList := ? + ) := { + { + id := id_AdditionalDLUPTNLInformationForHOList, + criticality := reject, + extensionValue := { AdditionalDLUPTNLInformationForHOList := p_additionalDLUPTNLInformationForHOList } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_AdditionalDLUPTNLInformationForHOList + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_ULForwardingUP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_ULForwardingUP_TNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_ULForwardingUP_TNLInformation + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_AdditionalULForwardingUPTNLInformation( + template (present) UPTransportLayerInformationList p_uPTransportLayerInformationList := ? + ) := { + { + id := id_AdditionalULForwardingUPTNLInformation, + criticality := reject, + extensionValue := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_AdditionalULForwardingUPTNLInformation + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_DataForwardingResponseERABList( + template (present) DataForwardingResponseERABList p_dataForwardingResponseERABList := ? + ) := { + { + id := id_DataForwardingResponseERABList, + criticality := ignore, + extensionValue := { DataForwardingResponseERABList := p_dataForwardingResponseERABList } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_DataForwardingResponseERABList + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_RedundantDL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_RedundantDL_NGU_UP_TNLInformation + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_UsedRSNInformation( + template (present) RedundantPDUSessionInformation p_redundantPDUSessionInformation := ? + ) := { + { + id := id_UsedRSNInformation, + criticality := ignore, + extensionValue := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_UsedRSNInformation + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_GlobalRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ? + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_GlobalRANNodeID + + template (present) HandoverRequestAcknowledgeTransfer.iE_Extensions mw_handoverRequestAcknowledgeTransfer_id_MBS_SupportIndicator( + template (present) MBS_SupportIndicator p_mBS_SupportIndicator := ? + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template mw_handoverRequestAcknowledgeTransfer_id_MBS_SupportIndicator + + template HandoverRequiredTransfer mw_handoverRequiredTransfer( + template DirectForwardingPathAvailability p_directForwardingPathAvailability := *, + template HandoverRequiredTransfer.iE_Extensions p_iE_Extensions := * + ) := { + directForwardingPathAvailability := p_directForwardingPathAvailability, + iE_Extensions := p_iE_Extensions + } // End of template mw_handoverRequiredTransfer + + template (present) HandoverResourceAllocationUnsuccessfulTransfer mw_handoverResourceAllocationUnsuccessfulTransfer( + template (present) Cause p_cause := ?, + template CriticalityDiagnostics p_criticalityDiagnostics := *, + template HandoverResourceAllocationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template mw_handoverResourceAllocationUnsuccessfulTransfer + + template (present) HandoverType mw_handoverType(template (present) HandoverType p_value := ?) := p_value; + + template (present) HFCNode_ID_new mw_hFCNode_ID_new( + template (present) HFCNode_ID p_hFCNode_ID := ?, + template (present) TAI p_tAI := ?, + template HFCNode_ID_new.iE_Extensions p_iE_Extensions := * + ) := { + hFCNode_ID := p_hFCNode_ID, + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_hFCNode_ID_new + + template (present) HOReport mw_hOReport( + template (present) HOReport.handoverReportType p_handoverReportType := ?, + template (present) Cause p_handoverCause := ?, + template (present) NGRAN_CGI p_sourcecellCGI := ?, + template (present) NGRAN_CGI p_targetcellCGI := ?, + template NGRAN_CGI p_reestablishmentcellCGI := ?, + template Bit16 p_sourcecellC_RNTI := *, + template EUTRA_CGI p_targetcellinE_UTRAN := *, + template MobilityInformation p_mobilityInformation := *, + template UERLFReportContainer p_uERLFReportContainer := *, + template HOReport.iE_Extensions p_iE_Extensions := * + ) := { + handoverReportType := p_handoverReportType, + handoverCause := p_handoverCause, + sourcecellCGI := p_sourcecellCGI, + targetcellCGI := p_targetcellCGI, + reestablishmentcellCGI := p_reestablishmentcellCGI, + // The above IE shall be present if the Handover Report Type IE is set to the value "HO to wrong cell" + sourcecellC_RNTI := p_sourcecellC_RNTI, + targetcellinE_UTRAN := p_targetcellinE_UTRAN, + // The above IE shall be present if the Handover Report Type IE is set to the value "Inter System ping_pong" + mobilityInformation := p_mobilityInformation, + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template mw_hOReport + + template (present) IAB_Authorized mw_iAB_Authorized(template (present) IAB_Authorized p_value := ?) := p_value; + + template (present) IAB_Supported mw_iAB_Supported(template (present) IAB_Supported p_value := true_) := p_value; + + template (present) IABNodeIndication mw_iABNodeIndication(template (present) IABNodeIndication p_value := true_) := p_value; + + template (present) IMSVoiceSupportIndicator mw_iMSVoiceSupportIndicator(template (present) IMSVoiceSupportIndicator p_value := ?) := p_value; + + template (present) InfoOnRecommendedCellsAndRANNodesForPaging mw_infoOnRecommendedCellsAndRANNodesForPaging( + template (present) RecommendedCellsForPaging p_recommendedCellsForPaging := ?, + template (present) RecommendedRANNodesForPaging p_recommendRANNodesForPaging := ?, + template InfoOnRecommendedCellsAndRANNodesForPaging.iE_Extensions p_iE_Extensions := * + ) := { + recommendedCellsForPaging := p_recommendedCellsForPaging, + recommendRANNodesForPaging := p_recommendRANNodesForPaging, + iE_Extensions := p_iE_Extensions + } // End of template mw_infoOnRecommendedCellsAndRANNodesForPaging + + template (present) IntegrityProtectionIndication mw_integrityProtectionIndication(template (present) IntegrityProtectionIndication p_value := ?) := p_value; + + template (present) IntegrityProtectionResult mw_integrityProtectionResult(template (present) IntegrityProtectionResult p_value := ?) := p_value; + + template (present) ImmediateMDTNr mw_immediateMDTNr( + template (present) MeasurementsToActivate p_measurementsToActivate := ?, + template M1Configuration p_m1Configuration := *, + template M4Configuration p_m4Configuration := *, + template M5Configuration p_m5Configuration := *, + template M6Configuration p_m6Configuration := *, + template M7Configuration p_m7Configuration := *, + template BluetoothMeasurementConfiguration p_bluetoothMeasurementConfiguration := *, + template WLANMeasurementConfiguration p_wLANMeasurementConfiguration := *, + template MDT_Location_Info p_mDT_Location_Info := *, + template SensorMeasurementConfiguration p_sensorMeasurementConfiguration := *, + template ImmediateMDTNr.iE_Extensions p_iE_Extensions := * + ) := { + measurementsToActivate := p_measurementsToActivate, + m1Configuration := p_m1Configuration, + // The above IE shall be present if the Measurements to Activate IE has the first bit set to “1” + m4Configuration := p_m4Configuration, + // The above IE shall be present if the Measurements to Activate IE has the third bit set to “1” + m5Configuration := p_m5Configuration, + // The above IE shall be present if the Measurements to Activate IE has the fourth bit set to “1” + m6Configuration := p_m6Configuration, + // The above IE shall be present if the Measurements to Activate IE has the fifth bit set to “1” + m7Configuration := p_m7Configuration, + // The above IE shall be present if the Measurements to Activate IE has the sixth bit set to “1” + bluetoothMeasurementConfiguration := p_bluetoothMeasurementConfiguration, + wLANMeasurementConfiguration := p_wLANMeasurementConfiguration, + mDT_Location_Info := p_mDT_Location_Info, + sensorMeasurementConfiguration := p_sensorMeasurementConfiguration, + iE_Extensions := p_iE_Extensions + } // End of template mw_immediateMDTNr + + template InterSystemFailureIndication mw_interSystemFailureIndication( + template UERLFReportContainer p_uERLFReportContainer := *, + template InterSystemFailureIndication.iE_Extensions p_iE_Extensions := * + ) := { + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template mw_interSystemFailureIndication + + template (present) IntersystemSONConfigurationTransfer mw_intersystemSONConfigurationTransfer( + template (present) IntersystemSONTransferType p_transferType := ?, + template (present) IntersystemSONInformation p_intersystemSONInformation := ?, + template IntersystemSONConfigurationTransfer.iE_Extensions p_iE_Extensions := * + ) := { + transferType := p_transferType, + intersystemSONInformation := p_intersystemSONInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemSONConfigurationTransfer + + template (present) IntersystemSONTransferType mw_intersystemSONTransferType_fromEUTRANtoNGRAN( + template (present) FromEUTRANtoNGRAN p_fromEUTRANtoNGRAN := ? + ) := { + fromEUTRANtoNGRAN := p_fromEUTRANtoNGRAN + } // End of template mw_intersystemSONTransferType_fromEUTRANtoNGRAN + + template (present) IntersystemSONTransferType mw_intersystemSONTransferType_fromNGRANtoEUTRAN( + template (present) FromNGRANtoEUTRAN p_fromNGRANtoEUTRAN := ? + ) := { + fromNGRANtoEUTRAN := p_fromNGRANtoEUTRAN + } // End of template mw_intersystemSONTransferType_fromNGRANtoEUTRAN + + template (present) IntersystemSONTransferType mw_intersystemSONTransferType_choice_Extensions( + template (present) IntersystemSONTransferType.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_intersystemSONTransferType_choice_Extensions + + template (present) IntersystemSONeNBID mw_intersystemSONeNBID( + template (present) GlobalENB_ID p_globaleNBID := ?, + template (present) EPS_TAI p_selectedEPSTAI := ?, + template IntersystemSONeNBID.iE_Extensions p_iE_Extensions := * + ) := { + globaleNBID := p_globaleNBID, + selectedEPSTAI := p_selectedEPSTAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemSONeNBID + + template (present) IntersystemSONNGRANnodeID mw_intersystemSONNGRANnodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) TAI p_selectedTAI := ?, + template IntersystemSONNGRANnodeID.iE_Extensions p_iE_Extensions := * + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemSONNGRANnodeID + + template (present) IntersystemSONInformation mw_intersystemSONInformation_intersystemSONInformationReport( + in template (present) IntersystemSONInformationReport p_intersystemSONInformationReport := ? + ) := { + intersystemSONInformationReport := p_intersystemSONInformationReport + } // End of template mw_intersystemSONInformation_intersystemSONInformationReport + + template (present) IntersystemSONInformation mw_intersystemSONInformation_choice_Extensions( + template (present) IntersystemSONInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_intersystemSONInformation_choice_Extensions + + template (present) IntersystemSONInformation.choice_Extensions mw_intersystemSONInformation_id_IntersystemSONInformationRequest( + template (present) IntersystemSONInformationRequest p_intersystemSONInformationRequest := ? + ) := { + id := id_IntersystemSONInformationRequest, + criticality := ignore, + value_ := { IntersystemSONInformationRequest := p_intersystemSONInformationRequest } + } // End of template mw_intersystemSONInformation_id_IntersystemSONInformationRequest + + template (present) IntersystemSONInformation.choice_Extensions mw_intersystemSONInformation_id_IntersystemSONInformationReply( + template (present) IntersystemSONInformationReply p_intersystemSONInformationReply := ? + ) := { + id := id_IntersystemSONInformationReply, + criticality := ignore, + value_ := { IntersystemSONInformationReply := p_intersystemSONInformationReply } + } // End of template mw_intersystemSONInformation_id_IntersystemSONInformationReply + + template (present) IntersystemSONInformationRequest mw_intersystemSONInformationRequest_nGRAN_CellActivation( + template (present) IntersystemCellActivationRequest p_nGRAN_CellActivation := ? + ) := { + nGRAN_CellActivation := p_nGRAN_CellActivation + } // End of template mw_intersystemSONInformationRequest_nGRAN_CellActivation + + template (present) IntersystemSONInformationRequest mw_intersystemSONInformationRequest_resourceStatus( + template (present) IntersystemResourceStatusRequest p_resourceStatus := ? + ) := { + resourceStatus := p_resourceStatus + } // End of template mw_intersystemSONInformationRequest_resourceStatus + + template (present) IntersystemSONInformationRequest mw_intersystemSONInformationRequest_choice_Extensions( + template (present) IntersystemSONInformationRequest.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_intersystemSONInformationRequest_choice_Extensions + + template (present) IntersystemCellActivationRequest mw_intersystemCellActivationRequest( + template (present) IntersystemCellActivationRequest.activationID p_activationID := ?, + template (present) CellsToActivateList p_cellsToActivateList := ?, + template IntersystemCellActivationRequest.iE_Extensions p_iE_Extensions := * + ) := { + activationID := p_activationID, + cellsToActivateList := p_cellsToActivateList, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemCellActivationRequest + + template (present) IntersystemResourceStatusRequest mw_intersystemResourceStatusRequest( + template (present) ReportingSystem p_reportingSystem := ?, + template (present) ReportCharacteristics p_reportCharacteristics := ?, + template (present) ReportType p_reportType := ?, + template IntersystemResourceStatusRequest.iE_Extensions p_iE_Extensions := * + ) := { + reportingSystem := p_reportingSystem, + reportCharacteristics := p_reportCharacteristics, + reportType := p_reportType, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemResourceStatusRequest + + template (present) ReportingSystem mw_reportingSystem_eUTRAN( + template (present) EUTRAN_ReportingSystemIEs p_eUTRAN := ? + ) := { + eUTRAN := p_eUTRAN + } // End of template mw_reportingSystem_eUTRAN + + template (present) ReportingSystem mw_reportingSystem_nGRAN( + template (present) NGRAN_ReportingSystemIEs p_nGRAN := ? + ) := { + nGRAN := p_nGRAN + } // End of template mw_reportingSystem_nGRAN + + template (present) ReportingSystem mw_reportingSystem_choice_Extensions( + template (present) ReportingSystem.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_reportingSystem_choice_Extensions + + template (present) EUTRAN_ReportingSystemIEs mw_eUTRAN_ReportingSystemIEs( + template (present) EUTRAN_CellToReportList p_eUTRAN_CellToReportList := ?, + template EUTRAN_ReportingSystemIEs.iE_Extensions p_iE_Extensions := * + ) := { + eUTRAN_CellToReportList := p_eUTRAN_CellToReportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_eUTRAN_ReportingSystemIEs + + template (present) NGRAN_ReportingSystemIEs mw_nGRAN_ReportingSystemIEs( + template (present) NGRAN_CellToReportList p_nGRAN_CellToReportList := ?, + template NGRAN_ReportingSystemIEs.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CellToReportList := p_nGRAN_CellToReportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGRAN_ReportingSystemIEs + + template (present) EUTRAN_CellToReportItem mw_eUTRAN_CellToReportItem( + template (present) EUTRA_CGI p_eCGI := ?, + template EUTRAN_CellToReportItem.iE_Extensions p_iE_Extensions := * + ) := { + eCGI := p_eCGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_eUTRAN_CellToReportItem + + template (present) NGRAN_CellToReportItem mw_nGRAN_CellToReportItem( + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template NGRAN_CellToReportItem.iE_Extensions p_iE_Extensions := * + ):= { + nGRAN_CGI := p_nGRAN_CGI, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGRAN_CellToReportItem + + template (present) ReportType mw_reportType_eventBasedReporting( + template (present) EventBasedReportingIEs p_eventBasedReporting := ? + ) := { + eventBasedReporting := p_eventBasedReporting + } // End of template mw_reportType_eventBasedReporting + + template (present) ReportType mw_reportType_periodicReporting( + template (present) PeriodicReportingIEs p_periodicReporting := ? + ) := { + periodicReporting := p_periodicReporting + } // End of template mw_reportType_periodicReporting + + template (present) ReportType mw_reportType_choice_Extensions( + template (present) ReportType.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_reportType_choice_Extensions + + template (present) NumberOfMeasurementReportingLevels mw_numberOfMeasurementReportingLevels(template (present) NumberOfMeasurementReportingLevels p_value := ?) := p_value; + + template (present) PeriodicReportingIEs mw_PeriodicReportingIEs( + template (present) ReportingPeriodicity p_reportingPeriodicity := ?, + template PeriodicReportingIEs.iE_Extensions p_iE_Extensions := * + ) := { + reportingPeriodicity := p_reportingPeriodicity, + iE_Extensions := p_iE_Extensions + } // End of template mw_PeriodicReportingIEs + + template (present) ReportingPeriodicity mw_reportingPeriodicity(template (present) ReportingPeriodicity p_value := ?) := p_value; + + template (present) IntersystemSONInformationReply mw_intersystemSONInformationReply_nGRAN_CellActivation( + template (present) IntersystemCellActivationReply p_nGRAN_CellActivation := ? + ) := { + nGRAN_CellActivation := p_nGRAN_CellActivation + } // End of template mw_intersystemSONInformationReply_nGRAN_CellActivation + + template (present) IntersystemSONInformationReply mw_intersystemSONInformationReply_resourceStatus( + template (present) IntersystemResourceStatusReply p_resourceStatus := ? + ) := { + resourceStatus := p_resourceStatus + } // End of template mw_intersystemSONInformationReply_resourceStatus + + template (present) IntersystemSONInformationReply mw_intersystemSONInformationReply_choice_Extensions( + template (present) IntersystemSONInformationReply.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_intersystemSONInformationReply_choice_Extensions + + template (present) IntersystemCellActivationReply mw_intersystemCellActivationReply( + template (present) ActivatedCellList p_activatedCellList := ?, + template (present) IntersystemCellActivationReply.activation_ID p_activation_ID := ?, + template IntersystemCellActivationReply.iE_Extensions p_iE_Extensions := * + ) := { + activatedCellList := p_activatedCellList, + activation_ID := p_activation_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemCellActivationReply + + template (present) IntersystemResourceStatusReply mw_intersystemResourceStatusReply( + template (present) ReportingSystem p_reportingsystem := ?, + template IntersystemResourceStatusReply.iE_Extensions p_iE_Extensions := * + ) := { + reportingsystem := p_reportingsystem, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemResourceStatusReply + + template (present) IntersystemSONInformationReport mw_intersystemSONInformationReport_hOReportInformation( + template (present) InterSystemHOReport p_hOReportInformation := ? + ) := { + hOReportInformation := p_hOReportInformation + } // End of template mw_intersystemSONInformationReport_hOReportInformation + + template (present) IntersystemSONInformationReport mw_intersystemSONInformationReport_failureIndicationInformation( + template (present) InterSystemFailureIndication p_failureIndicationInformation := ? + ) := { + failureIndicationInformation := p_failureIndicationInformation + } // End of template mw_intersystemSONInformationReport_failureIndicationInformation + + template (present) IntersystemSONInformationReport mw_intersystemSONInformationReport_choice_Extensions( + template (present) IntersystemSONInformationReport.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_intersystemSONInformationReport_choice_Extensions + + template (present) IntersystemSONInformationReport.choice_Extensions mw_intersystemSONInformationReport_id_EnergySavingIndication( + template (present) IntersystemCellStateIndication p_intersystemCellStateIndication := ? + ) := { + id := id_EnergySavingIndication, + criticality := ignore, + value_ := { IntersystemCellStateIndication := p_intersystemCellStateIndication } + } // End of template mw_intersystemSONInformationReport_id_EnergySavingIndication + + template (present) IntersystemSONInformationReport.choice_Extensions mw_intersystemSONInformationReport_id_IntersystemResourceStatusUpdate( + template (present) IntersystemResourceStatusReport p_intersystemResourceStatusReport := ? + ) := { + id := id_IntersystemResourceStatusUpdate, + criticality := ignore, + value_ := { IntersystemResourceStatusReport := p_intersystemResourceStatusReport } + } // End of template mw_intersystemSONInformationReport_id_IntersystemResourceStatusUpdate + + template (present) NotificationCell_Item mw_notificationCell_Item( + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template (present) NotificationCell_Item.notifyFlag p_notifyFlag := ?, + template NotificationCell_Item.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CGI := p_nGRAN_CGI, + notifyFlag := p_notifyFlag, + iE_Extensions := p_iE_Extensions + } // End of template mw_notificationCell_Item + + template (present) IntersystemResourceStatusReport mw_intersystemResourceStatusReport( + template (present) ResourceStatusReportingSystem p_reportingSystem := ?, + template IntersystemResourceStatusReport.iE_Extensions p_iE_Extensions := * + ) := { + reportingSystem := p_reportingSystem, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemResourceStatusReport + + template (present) ResourceStatusReportingSystem mw_resourceStatusReportingSystemt_eUTRAN_ReportingStatus( + template (present) EUTRAN_ReportingStatusIEs p_eUTRAN_ReportingStatus := ? + ) := { + eUTRAN_ReportingStatus := p_eUTRAN_ReportingStatus + } // End of template mw_resourceStatusReportingSystem_eUTRAN_ReportingStatus + + template (present) ResourceStatusReportingSystem mw_resourceStatusReportingSystemt_nGRAN_ReportingStatus( + template (present) NGRAN_ReportingStatusIEs p_nGRAN_ReportingStatus := ? + ) := { + nGRAN_ReportingStatus := p_nGRAN_ReportingStatus + } // End of template mw_resourceStatusReportingSystem_nGRAN_ReportingStatus + + template (present) ResourceStatusReportingSystem mw_resourceStatusReportingSystem_choice_Extensions( + template (present) ResourceStatusReportingSystem.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_resourceStatusReportingSystem_choice_Extensions + + template (present) EUTRAN_ReportingStatusIEs mw_eUTRAN_ReportingStatusIEs( + template (present) EUTRAN_CellReportList p_eUTRAN_CellReportList := ?, + template EUTRAN_ReportingStatusIEs.iE_Extensions p_iE_Extensions := * + ) := { + eUTRAN_CellReportList := p_eUTRAN_CellReportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_eUTRAN_ReportingStatusIEs + + template (present) EUTRAN_CellReportItem mw_eUTRAN_CellReportItem ( + template (present) EUTRA_CGI p_eCGI, + template (present) EUTRAN_CompositeAvailableCapacityGroup p_eUTRAN_CompositeAvailableCapacityGroup := ?, + template EUTRAN_NumberOfActiveUEs p_eUTRAN_NumberOfActiveUEs := *, + template NGRAN_NoofRRCConnections p_eUTRAN_NoofRRCConnections := *, + template EUTRAN_RadioResourceStatus p_eUTRAN_RadioResourceStatus := *, + template EUTRAN_CellReportItem.iE_Extensions p_iE_Extensions := * + ):= { + eCGI := p_eCGI, + eUTRAN_CompositeAvailableCapacityGroup := p_eUTRAN_CompositeAvailableCapacityGroup, + eUTRAN_NumberOfActiveUEs := p_eUTRAN_NumberOfActiveUEs, + eUTRAN_NoofRRCConnections := p_eUTRAN_NoofRRCConnections, + eUTRAN_RadioResourceStatus := p_eUTRAN_RadioResourceStatus, + iE_Extensions := p_iE_Extensions + } // End of template mw_eUTRAN_ReportingStatusIEs + + template (present) EUTRAN_CompositeAvailableCapacityGroup mw_EUTRAN_CompositeAvailableCapacityGroup( + template (present) CompositeAvailableCapacity p_dL_CompositeAvailableCapacity := ?, + template (present) CompositeAvailableCapacity p_uL_CompositeAvailableCapacity := ?, + template EUTRAN_CompositeAvailableCapacityGroup.iE_Extensions p_iE_Extensions := * + ) := { + dL_CompositeAvailableCapacity := p_dL_CompositeAvailableCapacity, + uL_CompositeAvailableCapacity := p_uL_CompositeAvailableCapacity, + iE_Extensions := p_iE_Extensions + } // End of template mw_EUTRAN_CompositeAvailableCapacityGroup + + template (present) CompositeAvailableCapacity mw_compositeAvailableCapacity( + template (present) CompositeAvailableCapacity.capacityValue p_capacityValue := ?, + template CompositeAvailableCapacity.cellCapacityClassValue p_cellCapacityClassValue := *, + template CompositeAvailableCapacity.iE_Extensions p_iE_Extensions := * + ) := { + cellCapacityClassValue := p_cellCapacityClassValue, + capacityValue := p_capacityValue, + iE_Extensions := p_iE_Extensions + } // End of template mw_compositeAvailableCapacity + + template (present) EUTRAN_RadioResourceStatus mw_eUTRAN_RadioResourceStatus( + template (present) EUTRAN_RadioResourceStatus.dL_GBR_PRB_usage p_dL_GBR_PRB_usage := ?, + template (present) EUTRAN_RadioResourceStatus.uL_GBR_PRB_usage p_uL_GBR_PRB_usage := ?, + template (present) EUTRAN_RadioResourceStatus.dL_non_GBR_PRB_usage p_dL_non_GBR_PRB_usage := ?, + template (present) EUTRAN_RadioResourceStatus.uL_non_GBR_PRB_usage p_uL_non_GBR_PRB_usage := ?, + template (present) EUTRAN_RadioResourceStatus.dL_Total_PRB_usage p_dL_Total_PRB_usage := ?, + template (present) EUTRAN_RadioResourceStatus.uL_Total_PRB_usage p_uL_Total_PRB_usage := ?, + template EUTRAN_RadioResourceStatus.dL_scheduling_PDCCH_CCE_usage p_dL_scheduling_PDCCH_CCE_usage := *, + template EUTRAN_RadioResourceStatus.uL_scheduling_PDCCH_CCE_usage p_uL_scheduling_PDCCH_CCE_usage := *, + template EUTRAN_RadioResourceStatus.iE_Extensions p_iE_Extensions := * + ) := { + dL_GBR_PRB_usage := p_dL_GBR_PRB_usage, + uL_GBR_PRB_usage := p_uL_GBR_PRB_usage, + dL_non_GBR_PRB_usage := p_dL_non_GBR_PRB_usage, + uL_non_GBR_PRB_usage := p_uL_non_GBR_PRB_usage, + dL_Total_PRB_usage := p_dL_Total_PRB_usage, + uL_Total_PRB_usage := p_uL_Total_PRB_usage, + dL_scheduling_PDCCH_CCE_usage := p_dL_scheduling_PDCCH_CCE_usage, + uL_scheduling_PDCCH_CCE_usage := p_uL_scheduling_PDCCH_CCE_usage, + iE_Extensions := p_iE_Extensions + } // End of template mw_eUTRAN_RadioResourceStatus + + template (present) NGRAN_ReportingStatusIEs mw_nGRAN_ReportingStatusIEs( + template (present) NGRAN_CellReportList p_nGRAN_CellReportList := ?, + template NGRAN_ReportingStatusIEs.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CellReportList := p_nGRAN_CellReportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGRAN_ReportingStatusIEs + + template (present) NGRAN_CellReportItem mw_nGRAN_CellReportItem( + template (present) NGRAN_CGI p_nGRAN_CGI, + template (present) EUTRAN_CompositeAvailableCapacityGroup p_nGRAN_CompositeAvailableCapacityGroup := ?, + template NGRAN_NumberOfActiveUEs p_nGRAN_NumberOfActiveUEs := *, + template NGRAN_NoofRRCConnections p_nGRAN_NoofRRCConnections := *, + template NGRAN_RadioResourceStatus p_nGRAN_RadioResourceStatus := *, + template NGRAN_CellReportItem.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CGI := p_nGRAN_CGI, + nGRAN_CompositeAvailableCapacityGroup := p_nGRAN_CompositeAvailableCapacityGroup, + nGRAN_NumberOfActiveUEs := p_nGRAN_NumberOfActiveUEs, + nGRAN_NoofRRCConnections := p_nGRAN_NoofRRCConnections, + nGRAN_RadioResourceStatus := p_nGRAN_RadioResourceStatus, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGRAN_CellReportItem + + template (present) NGRAN_RadioResourceStatus mw_nGRAN_RadioResourceStatus( + template (present) NGRAN_RadioResourceStatus.dL_GBR_PRB_usage_for_MIMO p_dL_GBR_PRB_usage_for_MIMO := ?, + template (present) NGRAN_RadioResourceStatus.uL_GBR_PRB_usage_for_MIMO p_uL_GBR_PRB_usage_for_MIMO := ?, + template (present) NGRAN_RadioResourceStatus.dL_non_GBR_PRB_usage_for_MIMO p_dL_non_GBR_PRB_usage_for_MIMO := ?, + template (present) NGRAN_RadioResourceStatus.uL_non_GBR_PRB_usage_for_MIMO p_uL_non_GBR_PRB_usage_for_MIMO := ?, + template (present) NGRAN_RadioResourceStatus.dL_Total_PRB_usage_for_MIMO p_dL_Total_PRB_usage_for_MIMO := ?, + template (present) NGRAN_RadioResourceStatus.uL_Total_PRB_usage_for_MIMO p_uL_Total_PRB_usage_for_MIMO := ?, + template NGRAN_RadioResourceStatus.iE_Extensions p_iE_Extensions := * + ) := { + dL_GBR_PRB_usage_for_MIMO := p_dL_GBR_PRB_usage_for_MIMO, + uL_GBR_PRB_usage_for_MIMO := p_uL_GBR_PRB_usage_for_MIMO, + dL_non_GBR_PRB_usage_for_MIMO := p_dL_non_GBR_PRB_usage_for_MIMO, + uL_non_GBR_PRB_usage_for_MIMO := p_uL_non_GBR_PRB_usage_for_MIMO, + dL_Total_PRB_usage_for_MIMO := p_dL_Total_PRB_usage_for_MIMO, + uL_Total_PRB_usage_for_MIMO := p_uL_Total_PRB_usage_for_MIMO, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGRAN_RadioResourceStatus + + template (present) InterSystemHOReport mw_interSystemHOReport( + template (present) InterSystemHandoverReportType p_handoverReportType := ?, + template InterSystemHOReport.iE_Extensions p_iE_Extensions := * + ) := { + handoverReportType := p_handoverReportType, + iE_Extensions := p_iE_Extensions + } // End of template mw_interSystemHOReport + + template (present) InterSystemHandoverReportType mw_interSystemHandoverReportType_tooearlyIntersystemHO( + template (present) TooearlyIntersystemHO p_tooearlyIntersystemHO := ? + ) := { + tooearlyIntersystemHO := p_tooearlyIntersystemHO + } // End of template mw_interSystemHandoverReportType_tooearlyIntersystemHO + + template (present) InterSystemHandoverReportType mw_interSystemHandoverReportType_intersystemUnnecessaryHO( + template (present) IntersystemUnnecessaryHO p_intersystemUnnecessaryHO := ? + ) := { + intersystemUnnecessaryHO := p_intersystemUnnecessaryHO + } // End of template mw_interSystemHandoverReportType_intersystemUnnecessaryHO + + template (present) InterSystemHandoverReportType mw_interSystemHandoverReportType_choice_Extensions( + template (present) InterSystemHandoverReportType.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_interSystemHandoverReportType_choice_Extensions + + template (present) IntersystemUnnecessaryHO mw_intersystemUnnecessaryHO( + template (present) NGRAN_CGI p_sourcecellID := ?, + template (present) EUTRA_CGI p_targetcellID := ?, + template (present) IntersystemUnnecessaryHO.earlyIRATHO p_earlyIRATHO := ?, + template (present) CandidateCellList p_candidateCellList := ?, + template IntersystemUnnecessaryHO.iE_Extensions p_iE_Extensions := * + ) := { + sourcecellID := p_sourcecellID, + targetcellID := p_targetcellID, + earlyIRATHO := p_earlyIRATHO, + candidateCellList := p_candidateCellList, + iE_Extensions := p_iE_Extensions + } // End of template mw_intersystemUnnecessaryHO + + template (present) LAI mw_lai( + template (present) PLMNIdentity p_pLMNidentity := ?, + template (present) LAC p_lAC := ?, + template LAI.iE_Extensions p_iE_Extensions := * + ) := { + pLMNidentity := p_pLMNidentity, + lAC := p_lAC, + iE_Extensions := p_iE_Extensions + } // End of template mw_lai + + template (present) LastVisitedCellInformation mw_interSystemHandoverReportType_nGRANCell( + template (present) LastVisitedNGRANCellInformation p_nGRANCell := ? + ) := { + nGRANCell := p_nGRANCell + } // End of template mw_interSystemHandoverReportType_nGRANCell + + template (present) LastVisitedCellInformation mw_interSystemHandoverReportType_eUTRANCell( + template (present) LastVisitedEUTRANCellInformation p_eUTRANCell := ? + ) := { + eUTRANCell := p_eUTRANCell + } // End of template mw_interSystemHandoverReportType_eUTRANCell + + template (present) LastVisitedCellInformation mw_interSystemHandoverReportType_uTRANCell( + template (present) LastVisitedUTRANCellInformation p_uTRANCell := ? + ) := { + uTRANCell := p_uTRANCell + } // End of template mw_interSystemHandoverReportType_uTRANCell + + template (present) LastVisitedCellInformation mw_interSystemHandoverReportType_gERANCell( + template (present) LastVisitedGERANCellInformation p_gERANCell := ? + ) := { + gERANCell := p_gERANCell + } // End of template mw_interSystemHandoverReportType_gERANCell + + template (present) LastVisitedCellInformation mw_lastVisitedCellInformation_choice_Extensions( + template (present) LastVisitedCellInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_lastVisitedCellInformation_choice_Extensions + + template (present) LastVisitedCellItem mw_lastVisitedCellItem( + template (present) LastVisitedCellInformation p_lastVisitedCellInformation := ?, + template LastVisitedCellItem.iE_Extensions p_iE_Extensions := * + ) := { + lastVisitedCellInformation := p_lastVisitedCellInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_lastVisitedCellItem + + template (present) LastVisitedNGRANCellInformation mw_lastVisitedNGRANCellInformation( + template (present) NGRAN_CGI p_globalCellID := ?, + template (present) CellType p_cellType := ?, + template (present) TimeUEStayedInCell p_timeUEStayedInCell := ?, + template TimeUEStayedInCellEnhancedGranularity p_timeUEStayedInCellEnhancedGranularity := *, + template Cause p_hOCauseValue := *, + template LastVisitedNGRANCellInformation.iE_Extensions p_iE_Extensions := * + ) := { + globalCellID := p_globalCellID, + cellType := p_cellType, + timeUEStayedInCell := p_timeUEStayedInCell, + timeUEStayedInCellEnhancedGranularity := p_timeUEStayedInCellEnhancedGranularity, + hOCauseValue := p_hOCauseValue, + iE_Extensions := p_iE_Extensions + } // End of template mw_lastVisitedNGRANCellInformation + + template (present) LastVisitedNGRANCellInformation.iE_Extensions mw_lastVisitedNGRANCellInformation_id_LastVisitedPSCellList( + template (present) LastVisitedPSCellList p_lastVisitedPSCellList := ? + ) := { + { + id := id_LastVisitedPSCellList, + criticality := ignore, + extensionValue := { LastVisitedPSCellList := p_lastVisitedPSCellList } + } + } // End of template mw_lastVisitedNGRANCellInformation_id_LastVisitedPSCellList + + template (present) LastVisitedPSCellInformation mw_LastVisitedPSCellInformation( + template (present) NGRAN_CGI p_pSCellID := ?, + template (present) LastVisitedPSCellInformation.timeStay p_timeStay := ?, + template LastVisitedPSCellInformation.iE_Extensions p_iE_Extensions := * + ) := { + pSCellID := p_pSCellID, + timeStay := p_timeStay, + iE_Extensions := p_iE_Extensions + } // End of template mw_LastVisitedPSCellInformation + + template (present) LineType mw_lineType(template (present) LineType p_value := pon) := p_value; + + template (present) LocationReportingAdditionalInfo mw_locationReportingAdditionalInfo(template (present) LocationReportingAdditionalInfo p_value := includePSCell) := p_value; + + template (present) LocationReportingRequestType mw_locationReportingRequestType( + template (present) EventType p_eventType := ?, + template (present) ReportArea p_reportArea := ?, + template AreaOfInterestList p_areaOfInterestList := *, + template LocationReportingReferenceID p_locationReportingReferenceIDToBeCancelled := *, + template LocationReportingRequestType.iE_Extensions p_iE_Extensions := * + ) := { + eventType := p_eventType, + reportArea := p_reportArea, + areaOfInterestList := p_areaOfInterestList, + locationReportingReferenceIDToBeCancelled := p_locationReportingReferenceIDToBeCancelled, + // The above IE shall be present if the event type is set to “stop reporting UE presence in the area of interest” + iE_Extensions := p_iE_Extensions + } // End of template mw_locationReportingRequestType + + template (present) LocationReportingRequestType.iE_Extensions mw_locationReportingRequestType_id_LocationReportingAdditionalInfo( + template (present) LocationReportingAdditionalInfo p_locationReportingAdditionalInfo := ? + ) := { + { + id := id_LocationReportingAdditionalInfo, + criticality := ignore, + extensionValue := { LocationReportingAdditionalInfo := p_locationReportingAdditionalInfo } + } + } // End of template mw_locationReportingRequestType_id_LocationReportingAdditionalInfo + + template (present) LoggedMDTNr mw_loggedMDTNr( + template (present) LoggingInterval p_loggingInterval := ?, + template (present) LoggingDuration p_loggingDuration := ?, + template (present) LoggedMDTTrigger p_loggedMDTTrigger := ?, + template BluetoothMeasurementConfiguration p_bluetoothMeasurementConfiguration := *, + template WLANMeasurementConfiguration p_wLANMeasurementConfiguration := *, + template SensorMeasurementConfiguration p_sensorMeasurementConfiguration := *, + template AreaScopeOfNeighCellsList p_areaScopeOfNeighCellsList := *, + template LoggedMDTNr.iE_Extensions p_iE_Extensions := * + ) := { + loggingInterval := p_loggingInterval, + loggingDuration := p_loggingDuration, + loggedMDTTrigger := p_loggedMDTTrigger, + bluetoothMeasurementConfiguration := p_bluetoothMeasurementConfiguration, + wLANMeasurementConfiguration := p_wLANMeasurementConfiguration, + sensorMeasurementConfiguration := p_sensorMeasurementConfiguration, + areaScopeOfNeighCellsList := p_areaScopeOfNeighCellsList, + iE_Extensions := p_iE_Extensions + } // End of template mw_loggedMDTNr + + template (present) LoggingInterval mw_loggingInterval(template (present) LoggingInterval p_value := ?) := p_value; + + template (present) LoggingDuration mw_loggingDuration(template (present) LoggingDuration p_value := ?) := p_value; + + template (present) Links_to_log mw_Links_to_log(template (present) Links_to_log p_value := ?) := p_value; + + template (present) LoggedMDTTrigger mw_loggedMDTTrigger_gERANCell( + template (present) EventTrigger p_eventTrigger := ? + ) := { + eventTrigger := p_eventTrigger + } // End of template mw_loggedMDTTrigger_gERANCell + + template (present) LoggedMDTTrigger mw_loggedMDTTrigger_choice_Extensions( + template (present) LoggedMDTTrigger.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_loggedMDTTrigger_choice_Extensions + + template (present) LTEM_Indication mw_lTEM_Indication(template (present) LTEM_Indication p_value := lte_m) := p_value; + + template LTEV2XServicesAuthorized mw_lTEV2XServicesAuthorized( + template VehicleUE p_vehicleUE := *, + template PedestrianUE p_pedestrianUE:= *, + template LTEV2XServicesAuthorized.iE_Extensions p_iE_Extensions := * + ) := { + vehicleUE := p_vehicleUE, + pedestrianUE := p_pedestrianUE, + iE_Extensions := p_iE_Extensions + } // End of template mw_lTEV2XServicesAuthorized + + template (present) LTEUESidelinkAggregateMaximumBitrate mw_lTEUESidelinkAggregateMaximumBitrate( + template (present) BitRate p_uESidelinkAggregateMaximumBitRate := ?, + template LTEUESidelinkAggregateMaximumBitrate.iE_Extensions p_iE_Extensions := * + ) := { + uESidelinkAggregateMaximumBitRate := p_uESidelinkAggregateMaximumBitRate, + iE_Extensions := p_iE_Extensions + } // End of template mw_lTEUESidelinkAggregateMaximumBitrate + + template (present) MaximumIntegrityProtectedDataRate mw_maximumIntegrityProtectedDataRate(template (present) MaximumIntegrityProtectedDataRate p_value := ?) := p_value; + + template (present) MBS_DataForwardingResponseMRBItem mw_mBS_DataForwardingResponseMRBItem( + template (present) MRB_ID p_mRB_ID := ?, + template (present) UPTransportLayerInformation p_dL_Forwarding_UPTNLInformation := ?, + template MRB_ProgressInformation p_mRB_ProgressInformation := *, + template MBS_DataForwardingResponseMRBItem.iE_Extensions p_iE_Extensions := * + ) := { + mRB_ID := p_mRB_ID, + dL_Forwarding_UPTNLInformation := p_dL_Forwarding_UPTNLInformation, + mRB_ProgressInformation := p_mRB_ProgressInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_DataForwardingResponseMRBItem + + template (present) MBS_MappingandDataForwardingRequestItem mw_mBS_MappingandDataForwardingRequestItem( + template (present) MRB_ID p_mRB_ID := ?, + template (present) MBS_QoSFlowList p_mBS_QoSFlowList := ?, + template MRB_ProgressInformation p_mRB_ProgressInformation := *, + template MBS_MappingandDataForwardingRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + mRB_ID := p_mRB_ID, + mBS_QoSFlowList := p_mBS_QoSFlowList, + mRB_ProgressInformation := p_mRB_ProgressInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_MappingandDataForwardingRequestItem + + template (present) MRB_ProgressInformation mw_mRB_ProgressInformation_pDCP_SN_Length12( + template (present) MRB_ProgressInformation.pDCP_SN_Length12 p_pDCP_SN_Length12 := ? + ) := { + pDCP_SN_Length12 := p_pDCP_SN_Length12 + } // End of template mw_mRB_ProgressInformation_pDCP_SN_Length12 + + template (present) MRB_ProgressInformation mw_mRB_ProgressInformation_pDCP_SN_Length18( + template (present) MRB_ProgressInformation.pDCP_SN_Length18 p_pDCP_SN_Length18 := ? + ) := { + pDCP_SN_Length18 := p_pDCP_SN_Length18 + } // End of template m_mRB_ProgressInformation_pDCP_SN_Length18 + + template (present) MRB_ProgressInformation mw_mRB_ProgressInformation_choice_Extensions( + template (present) MRB_ProgressInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_mRB_ProgressInformation_choice_Extensions + + template (present) MBS_QoSFlowsToBeSetupItem mw_mBS_QoSFlowsToBeSetupItem( + template (present)QosFlowIdentifier p_mBSqosFlowIdentifier := ?, + template (present)QosFlowLevelQosParameters p_mBSqosFlowLevelQosParameters := ?, + template MBS_QoSFlowsToBeSetupItem.iE_Extensions p_iE_Extensions := * + ) := { + mBSqosFlowIdentifier := p_mBSqosFlowIdentifier, + mBSqosFlowLevelQosParameters := p_mBSqosFlowLevelQosParameters, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_QoSFlowsToBeSetupItem + + template (present) MBS_ServiceArea mw_mBS_ServiceArea_locationindependent( + template (present) MBS_ServiceAreaInformation p_locationindependent := ? + ) := { + locationindependent := p_locationindependent + } // End of template mw_mBS_ServiceArea_locationindependent + + template (present) MBS_ServiceArea mw_mBS_ServiceArea_locationdependent( + template (present) MBS_ServiceAreaInformationList p_locationdependent := ? + ) := { + locationdependent := p_locationdependent + } // End of template mw_mBS_ServiceArea_locationdependent + + template (present) MBS_ServiceArea mw_mBS_ServiceArea_choice_Extensions( + template (present) MBS_ServiceArea.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_mBS_ServiceArea_choice_Extensions + + template (present) MBS_ServiceAreaInformationItem mw_mBS_ServiceAreaInformationItem( + template (present) MBS_AreaSessionID p_mBS_AreaSessionID := ?, + template (present) MBS_ServiceAreaInformation p_mBS_ServiceAreaInformation := ?, + template MBS_ServiceAreaInformationItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_AreaSessionID := p_mBS_AreaSessionID, + mBS_ServiceAreaInformation := p_mBS_ServiceAreaInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_ServiceAreaInformationItem + + template MBS_ServiceAreaInformation mw_mBS_ServiceAreaInformation( + template MBS_ServiceAreaCellList p_mBS_ServiceAreaCellList := *, + template MBS_ServiceAreaTAIList p_mBS_ServiceAreaTAIList := *, + template MBS_ServiceAreaInformation.iE_Extensions p_iE_Extensions := * + ) := { + mBS_ServiceAreaCellList := p_mBS_ServiceAreaCellList, + mBS_ServiceAreaTAIList := p_mBS_ServiceAreaTAIList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_ServiceAreaInformation + + template (present) MBS_SessionID mw_mBS_SessionID( + template (present) TMGI p_tMGI := ?, + template NID p_nID := *, + template MBS_SessionID.iE_Extensions p_iE_Extensions := * + ) := { + tMGI := p_tMGI, + nID := p_nID, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_SessionID + + template (present) MBSSessionFailedtoSetupItem mw_mBSSessionFailedtoSetupItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template (present) Cause p_cause := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template MBSSessionFailedtoSetupItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionFailedtoSetupItem + + template (present) MBS_ActiveSessionInformation_SourcetoTargetItem mw_mBS_ActiveSessionInformation_SourcetoTargetItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template (present) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template MBS_ServiceArea p_mBS_ServiceArea := *, + template MBS_MappingandDataForwardingRequestList p_mBS_MappingandDataForwardingRequestList := *, + template MBS_ActiveSessionInformation_SourcetoTargetItem.iE_Extensions p_iE_Extensions := * + ):= { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + mBS_ServiceArea := p_mBS_ServiceArea, + mBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList, + mBS_MappingandDataForwardingRequestList := p_mBS_MappingandDataForwardingRequestList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_ActiveSessionInformation_SourcetoTargetItem + + template (present) MBS_ActiveSessionInformation_TargettoSourceItem mw_mBS_ActiveSessionInformation_TargettoSourceItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MBS_DataForwardingResponseMRBList p_mBS_DataForwardingResponseMRBList := *, + template MBS_ActiveSessionInformation_TargettoSourceItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_DataForwardingResponseMRBList := p_mBS_DataForwardingResponseMRBList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_ActiveSessionInformation_TargettoSourceItem + + template (present) MBSSessionSetupOrModFailureTransfer mw_mBSSessionSetupOrModFailureTransfer( + template (present) Cause p_cause := ?, + template CriticalityDiagnostics p_criticalityDiagnostics := *, + template MBSSessionSetupOrModFailureTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionSetupOrModFailureTransfer + + template (present) MBSSessionSetupResponseItem mw_mBSSessionSetupResponseItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template MBSSessionSetupResponseItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionSetupResponseItem + + template (present) MBSSessionSetupOrModRequestTransfer mw_mBSSessionSetupOrModRequestTransfer( + template (present) MBSSessionSetupOrModRequestTransfer.protocolIEs p_protocolIEs := ? + ) := { + protocolIEs := p_protocolIEs + } // End of template mw_mBSSessionSetupOrModRequestTransfer + + template (present) MBSSessionSetupOrModRequestTransfer mw_mBSSessionSetupOrModRequestTransfer_options( + template (present) MBS_SessionTNLInfo5GC p_mBS_SessionTNLInfo5GC := ?, + template (present) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList := ?, + template (present) MBS_SessionFSAIDList p_mBS_SessionFSAIDList := ? + ) := { + protocolIEs := { + { + id := id_MBS_SessionTNLInfo5GC, + criticality := reject, + value_ := { MBS_SessionTNLInfo5GC := p_mBS_SessionTNLInfo5GC } + }, + { + id := id_MBS_QoSFlowsToBeSetupModList, + criticality := reject, + value_ := { MBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList } + }, + { + id := id_MBS_SessionFSAIDList, + criticality := ignore, + value_ := { MBS_SessionFSAIDList := p_mBS_SessionFSAIDList } + } + } + } // End of template mw_mBSSessionSetupOrModRequestTransfer_options + + template MBSSessionReleaseResponseTransfer mw_mBSSessionReleaseResponseTransfer( + template MBS_SessionTNLInfoNGRAN p_mBS_SessionTNLInfoNGRAN := *, + template MBSSessionReleaseResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionTNLInfoNGRAN := p_mBS_SessionTNLInfoNGRAN, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionReleaseResponseTransfer + + template MBSSessionSetupOrModResponseTransfer mw_mBSSessionSetupOrModResponseTransfer( + template MBS_SessionTNLInfoNGRAN p_mBS_SessionTNLInfoNGRAN := *, + template MBSSessionSetupOrModResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionTNLInfoNGRAN := p_mBS_SessionTNLInfoNGRAN, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionSetupOrModResponseTransfer + + template (present) MBS_SupportIndicator mw_mBS_SupportIndicator(template (present) MBS_SupportIndicator p_value := true_) := p_value; + + template (present) MBS_SessionTNLInfo5GC mw_mBS_SessionTNLInfo5GC_locationindependent( + template (present) SharedNGU_MulticastTNLInformation p_locationindependent := ? + ) := { + locationindependent := p_locationindependent + } // End of template mw_mBS_SessionTNLInfo5GC_locationindependent + + template (present) MBS_SessionTNLInfo5GC mw_mBS_SessionTNLInfo5GC_locationdependent( + template (present) MBS_SessionTNLInfo5GCList p_locationdependent := ? + ) := { + locationdependent := p_locationdependent + } // End of template mw_mBS_SessionTNLInfo5GC_locationdependent + + template (present) MBS_SessionTNLInfo5GC mw_mBS_SessionTNLInfo5GC_choice_Extensions( + template (present) MBS_SessionTNLInfo5GC.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_mBS_SessionTNLInfo5GC_choice_Extensions + + + template (present) MBS_SessionTNLInfo5GCItem mw_mBS_SessionTNLInfo5GCItem( + template (present) MBS_AreaSessionID p_mBS_AreaSessionID := ?, + template (present) SharedNGU_MulticastTNLInformation p_sharedNGU_MulticastTNLInformation := ?, + template MBS_SessionTNLInfo5GCItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_MulticastTNLInformation := p_sharedNGU_MulticastTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_SessionTNLInfo5GCItem + + template (present) MBS_SessionTNLInfoNGRAN mw_mBS_SessionTNLInfoNGRAN_locationindependent( + template (present) UPTransportLayerInformation p_locationindependent := ? + ) := { + locationindependent := p_locationindependent + } // End of template mw_mBS_SessionTNLInfoNGRAN_locationindependent + + template (present) MBS_SessionTNLInfoNGRAN mw_mBS_SessionTNLInfoNGRAN_locationdependent( + template (present) MBS_SessionTNLInfoNGRANList p_locationdependent := ? + ) := { + locationdependent := p_locationdependent + } // End of template mw_mBS_SessionTNLInfoNGRAN_locationdependent + + template (present) MBS_SessionTNLInfoNGRAN mw_mBS_SessionTNLInfoNGRAN_choice_Extensions( + template (present) MBS_SessionTNLInfoNGRAN.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_mBS_SessionTNLInfoNGRAN_choice_Extensions + + template (present) MBS_SessionTNLInfoNGRANItem mw_mBS_SessionTNLInfoNGRANItem( + template (present) MBS_AreaSessionID p_mBS_AreaSessionID := ?, + template UPTransportLayerInformation p_sharedNGU_UnicastTNLInformation := *, + template MBS_SessionTNLInfoNGRANItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_UnicastTNLInformation := p_sharedNGU_UnicastTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_SessionTNLInfoNGRANItem + + template (present) MBS_DistributionReleaseRequestTransfer mw_mBS_DistributionReleaseRequestTransfer( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template (present) Cause p_cause := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template UPTransportLayerInformation p_sharedNGU_UnicastTNLInformation := *, + template MBS_DistributionReleaseRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_UnicastTNLInformation := p_sharedNGU_UnicastTNLInformation, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_DistributionReleaseRequestTransfer + + template (present) MBS_DistributionSetupRequestTransfer mw_mBS_DistributionSetupRequestTransfer( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template UPTransportLayerInformation p_sharedNGU_UnicastTNLInformation := *, + template MBS_DistributionSetupRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_UnicastTNLInformation := p_sharedNGU_UnicastTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_DistributionSetupRequestTransfer + + template (present) MBS_DistributionSetupResponseTransfer mw_mBS_DistributionSetupResponseTransfer( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template (present) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList := ?, + template (present) MBSSessionStatus p_mBSSessionStatus := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template MBS_SessionTNLInfo5GCItem p_sharedNGU_MulticastTNLInformation := *, + template MBS_ServiceArea p_mBS_ServiceArea := *, + template MBS_DistributionSetupResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + sharedNGU_MulticastTNLInformation := p_sharedNGU_MulticastTNLInformation, + mBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList, + mBSSessionStatus := p_mBSSessionStatus, + mBS_ServiceArea := p_mBS_ServiceArea, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_DistributionSetupResponseTransfer + + template (present) MBS_DistributionSetupUnsuccessfulTransfer mw_mBS_DistributionSetupUnsuccessfulTransfer( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template (present) Cause p_cause := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template CriticalityDiagnostics p_criticalityDiagnostics := *, + template MBS_DistributionSetupUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBS_DistributionSetupUnsuccessfulTransfer + + template (present) MBSSessionSetupRequestItem mw_mBSSessionSetupRequestItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template AssociatedMBSQosFlowSetupRequestList p_associatedMBSQosFlowSetupRequestList := *, + template MBSSessionSetupRequestItem.iE_Extensions p_iE_Extensions := * + ):= { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + associatedMBSQosFlowSetupRequestList := p_associatedMBSQosFlowSetupRequestList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionSetupRequestItem + + template (present) MBSSessionSetuporModifyRequestItem mw_mBSSessionSetuporModifyRequestItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MBS_AreaSessionID p_mBS_AreaSessionID := *, + template AssociatedMBSQosFlowSetuporModifyRequestList p_associatedMBSQosFlowSetuporModifyRequestList := *, + template QosFlowListWithCause p_mBS_QosFlowToReleaseList := *, + template MBSSessionSetuporModifyRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + mBS_AreaSessionID := p_mBS_AreaSessionID, + associatedMBSQosFlowSetuporModifyRequestList := p_associatedMBSQosFlowSetuporModifyRequestList, + mBS_QosFlowToReleaseList := p_mBS_QosFlowToReleaseList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionSetuporModifyRequestItem + + template (present) MBSSessionToReleaseItem mw_mBSSessionToReleaseItem( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template (present) Cause p_cause := ?, + template MBSSessionToReleaseItem.iE_Extensions p_iE_Extensions := * + ):= { + mBS_SessionID := p_mBS_SessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_mBSSessionToReleaseItem + + template (present) MBSSessionStatus mw_mBSSessionStatus(template (present) MBSSessionStatus p_value := ?) := p_value; + + template (present) MicoAllPLMN mw_micoAllPLMN(template (present) MicoAllPLMN p_value := true_) := p_value; + + template (present) MICOModeIndication mw_mICOModeIndication(template (present) MICOModeIndication p_value := true_) := p_value; + + template (present) MobilityRestrictionList mw_mobilityRestrictionList( + template (present) PLMNIdentity p_servingPLMN := ?, + template EquivalentPLMNs p_equivalentPLMNs := *, + template RATRestrictions p_rATRestrictions := *, + template ForbiddenAreaInformation p_forbiddenAreaInformation := *, + template ServiceAreaInformation p_serviceAreaInformation := *, + template MobilityRestrictionList.iE_Extensions p_iE_Extensions := * + ) := { + servingPLMN := p_servingPLMN, + equivalentPLMNs := p_equivalentPLMNs, + rATRestrictions := p_rATRestrictions, + forbiddenAreaInformation := p_forbiddenAreaInformation, + serviceAreaInformation := p_serviceAreaInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_mobilityRestrictionList + + template (present) MobilityRestrictionList.iE_Extensions mw_mobilityRestrictionList_id_LastEUTRAN_PLMNIdentity( + template (present) PLMNIdentity p_pLMNIdentity := ? + ) := { + { + id := id_LastEUTRAN_PLMNIdentity, + criticality := ignore, + extensionValue := { PLMNIdentity := p_pLMNIdentity } + } + } // End of template mw_mobilityRestrictionList_id_LastEUTRAN_PLMNIdentity + + template (present) MobilityRestrictionList.iE_Extensions mw_mobilityRestrictionList_id_CNTypeRestrictionsForServing( + template (present) CNTypeRestrictionsForServing p_cNTypeRestrictionsForServing := ? + ) := { + { + id := id_CNTypeRestrictionsForServing, + criticality := ignore, + extensionValue := { CNTypeRestrictionsForServing := p_cNTypeRestrictionsForServing } + } + } // End of template mw_mobilityRestrictionList_id_CNTypeRestrictionsForServing + + template (present) MobilityRestrictionList.iE_Extensions mw_mobilityRestrictionList_id_CNTypeRestrictionsForEquivalent( + template (present) CNTypeRestrictionsForEquivalent p_cNTypeRestrictionsForEquivalent := ? + ) := { + { + id := id_CNTypeRestrictionsForEquivalent, + criticality := ignore, + extensionValue := { CNTypeRestrictionsForEquivalent := p_cNTypeRestrictionsForEquivalent } + } + } // End of template mw_mobilityRestrictionList_id_CNTypeRestrictionsForEquivalent + + template (present) MobilityRestrictionList.iE_Extensions mw_mobilityRestrictionList_id_NPN_MobilityInformation( + template (present) NPN_MobilityInformation p_nPN_MobilityInformation := ? + ) := { + { + id := id_NPN_MobilityInformation, + criticality := reject, + extensionValue := { NPN_MobilityInformation := p_nPN_MobilityInformation } + } + } // End of template mw_mobilityRestrictionList_id_NPN_MobilityInformation + + template (present) MDT_AlignmentInfo mw_mDT_AlignmentInfo_s_basedMDT( + template (present) NGRANTraceID p_s_basedMDT := ? + ) := { + s_basedMDT := p_s_basedMDT + } // End of template mw_mDT_AlignmentInfo_s_basedMDT + + template (present) MDT_AlignmentInfo mw_mDT_AlignmentInfo_choice_Extensions( + template (present) MDT_AlignmentInfo.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_mDT_AlignmentInfo_choice_Extensions + + template MDT_Configuration mw_mDT_Configuration( + template MDT_Configuration_NR p_mdt_Config_NR := *, + template MDT_Configuration_EUTRA p_mdt_Config_EUTRA := *, + template MDT_Configuration.iE_Extensions p_iE_Extensions := * + ) := { + mdt_Config_NR := p_mdt_Config_NR, + mdt_Config_EUTRA := p_mdt_Config_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template mw_mDT_Configuration + + template (present) MDT_Configuration_NR mw_mDT_Configuration_NR( + template (present) MDT_Activation p_mdt_Activation := ?, + template (present) AreaScopeOfMDT_NR p_areaScopeOfMDT := ?, + template (present) MDTModeNr p_mDTModeNr := ?, + template MDTPLMNList p_signallingBasedMDTPLMNList := *, + template MDT_Configuration_NR.iE_Extensions p_iE_Extensions := * + ) := { + mdt_Activation := p_mdt_Activation, + areaScopeOfMDT := p_areaScopeOfMDT, + mDTModeNr := p_mDTModeNr, + signallingBasedMDTPLMNList := p_signallingBasedMDTPLMNList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mDT_Configuration_NR + + template (present) MDT_Configuration_EUTRA mw_mDT_Configuration_EUTRA( + template (present) MDT_Activation p_mdt_Activation := ?, + template (present) AreaScopeOfMDT_EUTRA p_areaScopeOfMDT := ?, + template (present) MDTModeEutra p_mDTMode := ?, + template MDTPLMNList p_signallingBasedMDTPLMNList := *, + template MDT_Configuration_EUTRA.iE_Extensions p_iE_Extensions := * + ) := { + mdt_Activation := p_mdt_Activation, + areaScopeOfMDT := p_areaScopeOfMDT, + mDTMode := p_mDTMode, + signallingBasedMDTPLMNList := p_signallingBasedMDTPLMNList, + iE_Extensions := p_iE_Extensions + } // End of template mw_mDT_Configuration_EUTRA + + template (present) MDT_Activation mw_mDT_Activation(template (present) MDT_Activation p_value := ?) := p_value; + + template (present) MDTModeNr mw_mDTModeNro_immediateMDTNr( + template (present) ImmediateMDTNr p_immediateMDTNr := ? + ) := { + immediateMDTNr := p_immediateMDTNr + } // End of template mw_mDTModeNr_immediateMDTNr + + template (present) MDTModeNr mw_mDTModeNro_loggedMDTNr( + template (present) LoggedMDTNr p_loggedMDTNr := ? + ) := { + loggedMDTNr := p_loggedMDTNr + } // End of template mw_mDTModeNr_loggedMDTNr + + template (present) MDTModeNr mw_mDTModeNr_choice_Extensions( + template (present) MDTModeNr.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_mDTModeNr_choice_Extensions + + template (present) MulticastSessionActivationRequestTransfer mw_multicastSessionActivationRequestTransfer( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MulticastSessionActivationRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + iE_Extensions := p_iE_Extensions + } // End of template mw_multicastSessionActivationRequestTransfer + + template (present) MulticastSessionDeactivationRequestTransfer mw_multicastSessionDeactivationRequestTransfer( + template (present) MBS_SessionID p_mBS_SessionID := ?, + template MulticastSessionDeactivationRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + mBS_SessionID := p_mBS_SessionID, + iE_Extensions := p_iE_Extensions + } // End of template mw_multicastSessionDeactivationRequestTransfer + + template (present) MulticastSessionUpdateRequestTransfer mw_multicastSessionUpdateRequestTransfer( + template (present) MulticastSessionUpdateRequestTransfer.protocolIEs p_protocolIEs := ? + ) := { + protocolIEs := p_protocolIEs + } // End of template mw_multicastSessionUpdateRequestTransfer + + template (present) MulticastSessionUpdateRequestTransfer.protocolIEs mw_multicastSessionUpdateRequestTransfer_id_MBS_SessionID( + template (present) MBS_SessionID p_mBS_SessionID := ? + ) := { + { + id := id_MBS_SessionID, + criticality := reject, + value_ := { MBS_SessionID := p_mBS_SessionID } + } + } // End of template mw_multicastSessionUpdateRequestTransfer_id_MBS_SessionID + + template (present) MulticastSessionUpdateRequestTransfer.protocolIEs mw_multicastSessionUpdateRequestTransfer_id_MBS_ServiceArea( + template (present) MBS_ServiceArea p_mBS_ServiceArea := ? + ) := { + { + id := id_MBS_ServiceArea, + criticality := reject, + value_ := { MBS_ServiceArea := p_mBS_ServiceArea } + } + } // End of template mw_multicastSessionUpdateRequestTransfer_id_MBS_ServiceArea + + template (present) MulticastSessionUpdateRequestTransfer.protocolIEs mw_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowsToBeSetupModList( + template (present) MBS_QoSFlowsToBeSetupList p_mBS_QoSFlowsToBeSetupList := ? + ) := { + { + id := id_MBS_QoSFlowsToBeSetupModList, + criticality := reject, + value_ := { MBS_QoSFlowsToBeSetupList := p_mBS_QoSFlowsToBeSetupList } + } + } // End of template mw_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowsToBeSetupModList + + template (present) MulticastSessionUpdateRequestTransfer.protocolIEs mw_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowToReleaseList( + template (present) QosFlowListWithCause p_qosFlowListWithCause := ? + ) := { + { + id := id_MBS_QoSFlowToReleaseList, + criticality := reject, + value_ := { QosFlowListWithCause := p_qosFlowListWithCause } + } + } // End of template mw_multicastSessionUpdateRequestTransfer_id_MBS_QoSFlowToReleaseList + + template (present) MulticastSessionUpdateRequestTransfer.protocolIEs mw_multicastSessionUpdateRequestTransfer_id_MBS_SessionTNLInfo5GC( + template (present) MBS_SessionTNLInfo5GC p_mBS_SessionTNLInfo5GC := ? + ) := { + { + id := id_MBS_SessionTNLInfo5GC, + criticality := reject, + value_ := { MBS_SessionTNLInfo5GC := p_mBS_SessionTNLInfo5GC } + } + } // End of template mw_multicastSessionUpdateRequestTransfer_id_MBS_SessionTNLInfo5GC + + template (present) MulticastGroupPagingAreaItem mw_multicastGroupPagingAreaItem( + template (present) MulticastGroupPagingArea p_multicastGroupPagingArea := ?, + template UE_PagingList p_uE_PagingList := *, + template MulticastGroupPagingAreaItem.iE_Extensions p_iE_Extensions := * + ) := { + multicastGroupPagingArea := p_multicastGroupPagingArea, + uE_PagingList := p_uE_PagingList, + iE_Extensions := p_iE_Extensions + } // End of template mw_multicastGroupPagingAreaItem + + template (present) MulticastGroupPagingArea mw_multicastGroupPagingArea( + template (present) MBS_AreaTAIList p_mBS_AreaTAIList := ?, + template MulticastGroupPagingArea.iE_Extensions p_iE_Extensions := * + ) := { + mBS_AreaTAIList := p_mBS_AreaTAIList, + iE_Extensions := p_iE_Extensions + } // End of template mw_multicastGroupPagingArea + + template (present) UE_PagingItem mw_uE_PagingItem( + template (present) UEIdentityIndexValue p_uEIdentityIndexValue := ?, + template PagingDRX p_pagingDRX := *, + template UE_PagingItem.iE_Extensions p_iE_Extensions := * + ) := { + uEIdentityIndexValue := p_uEIdentityIndexValue, + pagingDRX := p_pagingDRX, + iE_Extensions := p_iE_Extensions + } // End of template mw_uE_PagingItem + + template (present) M1Configuration mw_m1Configuration( + template (present) M1ReportingTrigger p_m1reportingTrigger := ?, + template M1ThresholdEventA2 p_m1thresholdEventA2 := *, + template M1PeriodicReporting p_m1periodicReporting := *, + template M1Configuration.iE_Extensions p_iE_Extensions := * + ) := { + m1reportingTrigger := p_m1reportingTrigger, + m1thresholdEventA2 := p_m1thresholdEventA2, + // The above IE shall be present if the M1 Reporting Trigger IE is set to “A2event_triggered” or “A2event_triggered periodic” + m1periodicReporting := p_m1periodicReporting, + // The above IE shall be present if the M1 Reporting Trigger IE is set to “periodic” or “A2event_triggered periodic” + iE_Extensions := p_iE_Extensions + } // End of template mw_m1Configuration + + template (present) M1Configuration.iE_Extensions mw_m1Configuration_id_IncludeBeamMeasurementsIndication( + template (present) IncludeBeamMeasurementsIndication p_includeBeamMeasurementsIndication := ? + ) := { + { + id := id_IncludeBeamMeasurementsIndication, + criticality := ignore, + extensionValue := { IncludeBeamMeasurementsIndication := p_includeBeamMeasurementsIndication } + } + } // End of template mw_m1Configuration_id_IncludeBeamMeasurementsIndication + + template (present) M1Configuration.iE_Extensions mw_m1Configuration_id_BeamMeasurementsReportConfiguration( + template (present) BeamMeasurementsReportConfiguration p_beamMeasurementsReportConfiguration := ? + ) := { + { + id := id_BeamMeasurementsReportConfiguration, + criticality := ignore, + extensionValue := { BeamMeasurementsReportConfiguration := p_beamMeasurementsReportConfiguration } + } + } // End of template mw_m1Configuration_id_BeamMeasurementsReportConfiguration + + template (present) IncludeBeamMeasurementsIndication mw_includeBeamMeasurementsIndication(template (present) IncludeBeamMeasurementsIndication p_value := true_) := p_value; + + template (present) M1ReportingTrigger mw_m1ReportingTrigger(template (present) M1ReportingTrigger p_value := ?) := p_value; + + template (present) M1ThresholdEventA2 mw_m1ThresholdEventA2( + template (present) M1ThresholdType p_m1ThresholdType := ?, + template M1ThresholdEventA2.iE_Extensions p_iE_Extensions := * + ) := { + m1ThresholdType := p_m1ThresholdType, + iE_Extensions := p_iE_Extensions + } // End of template mw_m1ThresholdEventA2 + + template (present) M1ThresholdType mw_m1ThresholdType_threshold_RSRP( + template (present) Threshold_RSRP p_threshold_RSRP := ? + ) := { + threshold_RSRP := p_threshold_RSRP + } // End of template mw_m1ThresholdType_threshold_RSRP + + template (present) M1ThresholdType mw_m1ThresholdType_threshold_RSRQ( + template (present) Threshold_RSRQ p_threshold_RSRQ := ? + ) := { + threshold_RSRQ := p_threshold_RSRQ + } // End of template mw_m1ThresholdType_threshold_RSRQ + + template (present) M1ThresholdType mw_m1ThresholdType_threshold_SINR( + template (present) Threshold_SINR p_threshold_SINR := ? + ) := { + threshold_SINR := p_threshold_SINR + } // End of template mw_m1ThresholdType_threshold_SINR + + template (present) M1ThresholdType mw_m1ThresholdType_choice_Extensions( + template (present) M1ThresholdType.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_m1ThresholdType_choice_Extensions + + template (present) M1PeriodicReporting mw_m1PeriodicReporting( + template (present) ReportIntervalMDT p_reportInterval := ?, + template (present) ReportAmountMDT p_reportAmount := ?, + template M1PeriodicReporting.iE_Extensions p_iE_Extensions := * + ) := { + reportInterval := p_reportInterval, + reportAmount := p_reportAmount, + iE_Extensions := p_iE_Extensions + } // End of template mw_m1PeriodicReporting + + template (present) M1PeriodicReporting.iE_Extensions mw_m1PeriodicReporting_id_ExtendedReportIntervalMDT( + template (present) ExtendedReportIntervalMDT p_extendedReportIntervalMDT := ? + ) := { + { + id := id_ExtendedReportIntervalMDT, + criticality := ignore, + extensionValue := { ExtendedReportIntervalMDT := p_extendedReportIntervalMDT } + } + } // End of template mw_m1PeriodicReporting_id_ExtendedReportIntervalMDT + + template (present) M4Configuration mw_m4Configuration( + template (present) M4period p_m4period := ?, + template (present) Links_to_log p_m4_links_to_log := ?, + template M4Configuration.iE_Extensions p_iE_Extensions := * + ) := { + m4period := p_m4period, + m4_links_to_log := p_m4_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template mw_m4Configuration + + template (present) M4Configuration.iE_Extensions mw_m4Configuration_id_M4ReportAmount( + template (present) M4ReportAmountMDT p_m4ReportAmountMDT := ? + ) := { + { + id := id_ExtendedReportIntervalMDT, + criticality := ignore, + extensionValue := { M4ReportAmountMDT := p_m4ReportAmountMDT } + } + } // End of template mw_m4Configuration_id_M4ReportAmount + + template (present) M4ReportAmountMDT mw_m4ReportAmountMDT(template (present) M4ReportAmountMDT p_value := ?) := p_value; + + template (present) M4period mw_m4period(template (present) M4period p_value := ?) := p_value; + + template (present) M5Configuration mw_m5Configuration( + template (present) M5period p_m5period := ?, + template (present) Links_to_log p_m5_links_to_log := ?, + template M5Configuration.iE_Extensions p_iE_Extensions := * + ) := { + m5period := p_m5period, + m5_links_to_log := p_m5_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template mw_m5Configuration + + template (present) M5Configuration.iE_Extensions mw_m5Configuration_id_M5ReportAmount( + template (present) M5ReportAmountMDT p_m5ReportAmountMDT := ? + ) := { + { + id := id_M5ReportAmount, + criticality := ignore, + extensionValue := { M5ReportAmountMDT := p_m5ReportAmountMDT } + } + } // End of template mw_m5Configuration_id_M5ReportAmount + + template (present) M5ReportAmountMDT mw_m5ReportAmountMDT(template (present) M5ReportAmountMDT p_value := ?) := p_value; + + template (present) M5period mw_m5period(template (present) M5period p_value := ?) := p_value; + + template (present) M6Configuration mw_m6Configuration( + template (present) M6report_Interval p_m6report_Interval := ?, + template (present) Links_to_log p_m6_links_to_log := ?, + template M6Configuration.iE_Extensions p_iE_Extensions := * + ) := { + m6report_Interval := p_m6report_Interval, + m6_links_to_log := p_m6_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template mw_m6Configuration + + template (present) M6Configuration.iE_Extensions mw_m6Configuration_id_M6ReportAmount( + template (present) M6ReportAmountMDT p_m6ReportAmountMDT := ? + ) := { + { + id := id_M6ReportAmount, + criticality := ignore, + extensionValue := { M6ReportAmountMDT := p_m6ReportAmountMDT } + } + } // End of template mw_m6Configuration_id_M6ReportAmount + + template (present) M6Configuration.iE_Extensions mw_m6Configuration_id_ExcessPacketDelayThresholdConfiguration( + template (present) ExcessPacketDelayThresholdConfiguration p_excessPacketDelayThresholdConfiguration := ? + ) := { + { + id := id_ExcessPacketDelayThresholdConfiguration, + criticality := ignore, + extensionValue := { ExcessPacketDelayThresholdConfiguration := p_excessPacketDelayThresholdConfiguration } + } + } // End of template mw_m6Configuration_id_ExcessPacketDelayThresholdConfiguration + + template (present) M6ReportAmountMDT mw_m6ReportAmountMDT(template (present) M6ReportAmountMDT p_value := ?) := p_value; + + template (present) M6report_Interval mw_m6report_Interval(template (present) M6report_Interval p_value := ?) := p_value; + + template (present) M7Configuration mw_m7Configuration( + template (present) M7period p_m7period := ?, + template (present) Links_to_log p_m7_links_to_log := ?, + template M7Configuration.iE_Extensions p_iE_Extensions := * + ) := { + m7period := p_m7period, + m7_links_to_log := p_m7_links_to_log, + iE_Extensions := p_iE_Extensions + } // End of template mw_m7Configuration + + template (present) M7Configuration.iE_Extensions mw_m7Configuration_id_M7ReportAmount( + template (present) M7ReportAmountMDT p_m7ReportAmountMDT := ? + ) := { + { + id := id_M7ReportAmount, + criticality := ignore, + extensionValue := { M7ReportAmountMDT := p_m7ReportAmountMDT } + } + } // End of template mw_m7Configuration_id_M7ReportAmount + + template (present) M7ReportAmountMDT mw_m7ReportAmountMDT(template (present) M7ReportAmountMDT p_value := ?) := p_value; + + template (present) MDT_Location_Info mw_mDT_Location_Info( + template (present) MDT_Location_Information p_mDT_Location_Information := ?, + template MDT_Location_Info.iE_Extensions p_iE_Extensions := * + ) := { + mDT_Location_Information := p_mDT_Location_Information, + iE_Extensions := p_iE_Extensions + } // End of template mw_mDT_Location_Info + + template (present) N3IWF_ID mw_n3IWF_ID_n3IWF_ID( + template (present) N3IWF_ID.n3IWF_ID p_n3IWF_ID := ? + ) := { + n3IWF_ID := p_n3IWF_ID + } // End of template mw_n3IWF_ID_n3IWF_ID + + template (present) N3IWF_ID mw_n3IWF_ID_choice_Extensions( + template (present) N3IWF_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_n3IWF_ID_choice_Extensions + + template (present) NB_IoT_DefaultPagingDRX mw_nB_IoT_DefaultPagingDRX(template (present) NB_IoT_DefaultPagingDRX p_value := ?) := p_value; + + template (present) NB_IoT_PagingDRX mw_nB_IoT_PagingDRX(template (present) NB_IoT_PagingDRX p_value := ?) := p_value; + + template (present) NB_IoT_Paging_eDRXCycle mw_nB_IoT_Paging_eDRXCycle(template (present) NB_IoT_Paging_eDRXCycle p_value := ?) := p_value; + + template (present) NB_IoT_Paging_TimeWindow mw_nB_IoT_Paging_TimeWindow(template (present) NB_IoT_Paging_TimeWindow p_value := ?) := p_value; + + template (present) NB_IoT_Paging_eDRXInfo mw_nB_IoT_Paging_eDRXInfo( + template (present) NB_IoT_Paging_eDRXCycle p_nB_IoT_Paging_eDRXCycle := ?, + template NB_IoT_Paging_TimeWindow p_nB_IoT_Paging_TimeWindow := *, + template NB_IoT_Paging_eDRXInfo.iE_Extensions p_iE_Extensions := * + ) := { + nB_IoT_Paging_eDRXCycle := p_nB_IoT_Paging_eDRXCycle, + nB_IoT_Paging_TimeWindow := p_nB_IoT_Paging_TimeWindow, + iE_Extensions := p_iE_Extensions + } // End of template mw_nB_IoT_Paging_eDRXInfo + + template (present) NewSecurityContextInd mw_newSecurityContextInd(template (present) NewSecurityContextInd p_value := true_) := p_value; + + template (present) NextPagingAreaScope mw_nextPagingAreaScope(template (present) NextPagingAreaScope p_value := ?) := p_value; + + template (present) NGAPIESupportInformationRequestItem mw_nGAPIESupportInformationRequestItem( + template (present) ProtocolIE_ID p_ngap_ProtocolIE_Id := ?, + template NGAPIESupportInformationRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + ngap_ProtocolIE_Id := p_ngap_ProtocolIE_Id, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGAPIESupportInformationRequestItem + + template (present) NGAPIESupportInformationResponseItem mw_nGAPIESupportInformationResponseItem( + template (present) ProtocolIE_ID p_ngap_ProtocolIE_Id := ?, + template (present) NGAPIESupportInformationResponseItem.ngap_ProtocolIESupportInfo p_ngap_ProtocolIESupportInfo := ?, + template (present) NGAPIESupportInformationResponseItem.ngap_ProtocolIEPresenceInfo p_ngap_ProtocolIEPresenceInfo := ?, + template NGAPIESupportInformationResponseItem.iE_Extensions p_iE_Extensions := * + ) := { + ngap_ProtocolIE_Id := p_ngap_ProtocolIE_Id, + ngap_ProtocolIESupportInfo := p_ngap_ProtocolIESupportInfo, + ngap_ProtocolIEPresenceInfo := p_ngap_ProtocolIEPresenceInfo, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGAPIESupportInformationResponseItem + + template (present) NgENB_ID mw_ngENB_ID_macroNgENB_ID( + template (present) NgENB_ID.macroNgENB_ID p_macroNgENB_ID := ? + ) := { + macroNgENB_ID := p_macroNgENB_ID + } // End of template mw_ngENB_ID_macroNgENB_ID + + template (present) NgENB_ID mw_ngENB_ID_shortMacroNgENB_ID( + template (present) NgENB_ID.shortMacroNgENB_ID p_shortMacroNgENB_ID := ? + ) := { + shortMacroNgENB_ID := p_shortMacroNgENB_ID + } // End of template mw_ngENB_ID_shortMacroNgENB_ID + + template (present) NgENB_ID mw_ngENB_ID_longMacroNgENB_ID( + template (present) NgENB_ID.longMacroNgENB_ID p_longMacroNgENB_ID := ? + ) := { + longMacroNgENB_ID := p_longMacroNgENB_ID + } // End of template mw_ngENB_ID_longMacroNgENB_ID + + template (present) NgENB_ID mw_ngENB_ID_choice_Extensions( + template (present) NgENB_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_ngENB_ID_choice_Extensions + + template (present) NotifySourceNGRANNode mw_notifySourceNGRANNode(template (present) NotifySourceNGRANNode p_value := ?) := p_value; + + template (present) NGRAN_CGI mw_ngENB_ID_nR_CGI( + template (present) NR_CGI p_nR_CGI + ) := { + nR_CGI := p_nR_CGI + } // End of template mw_ngENB_ID_nR_CGI + + template (present) NGRAN_CGI mw_ngENB_ID_eUTRA_CGI( + template (present) EUTRA_CGI p_eUTRA_CGI := ? + ) := { + eUTRA_CGI := p_eUTRA_CGI + } // End of template mw_ngENB_ID_eUTRA_CGI + + template (present) NGRAN_CGI mw_nGRAN_CGI_choice_Extensions( + template (present) NGRAN_CGI.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_nGRAN_CGI_choice_Extensions + + template (present) NGRAN_TNLAssociationToRemoveItem mw_nGRAN_TNLAssociationToRemoveItem( + template (present) CPTransportLayerInformation p_tNLAssociationTransportLayerAddress := ?, + template CPTransportLayerInformation p_tNLAssociationTransportLayerAddressAMF := *, + template NGRAN_TNLAssociationToRemoveItem.iE_Extensions p_iE_Extensions := * + ) := { + tNLAssociationTransportLayerAddress := p_tNLAssociationTransportLayerAddress, + tNLAssociationTransportLayerAddressAMF := p_tNLAssociationTransportLayerAddressAMF, + iE_Extensions := p_iE_Extensions + } // End of template mw_nGRAN_TNLAssociationToRemoveItem + + template (present) NonDynamic5QIDescriptor mw_nonDynamic5QIDescriptor( + template (present) FiveQI p_fiveQI := ?, + template PriorityLevelQos p_priorityLevelQos := *, + template AveragingWindow p_averagingWindow := *, + template MaximumDataBurstVolume p_maximumDataBurstVolume := *, + template NonDynamic5QIDescriptor.iE_Extensions p_iE_Extensions := * + ) := { + fiveQI := p_fiveQI, + priorityLevelQos := p_priorityLevelQos, + averagingWindow := p_averagingWindow, + maximumDataBurstVolume := p_maximumDataBurstVolume, + iE_Extensions := p_iE_Extensions + } // End of template mw_nonDynamic5QIDescriptor + + template (present) NonDynamic5QIDescriptor.iE_Extensions mw_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetDL( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_CNPacketDelayBudgetDL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetDL + + template (present) NonDynamic5QIDescriptor.iE_Extensions mw_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetUL( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_CNPacketDelayBudgetUL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_nonDynamic5QIDescriptor_id_CNPacketDelayBudgetUL + + template (present) NotificationCause mw_notificationCause(template (present) NotificationCause p_value := ?) := p_value; + + template (present) NotificationControl mw_notificationControl(template (present) NotificationControl p_value := ?) := p_value; + + template (present) NPN_AccessInformation mw_nPN_AccessInformation_pNI_NPN_Access_Information( + template (present) CellCAGList p_pNI_NPN_Access_Information := ? + ) := { + pNI_NPN_Access_Information := p_pNI_NPN_Access_Information + } // End of template mw_nPN_AccessInformation_pNI_NPN_Access_Information + + template (present) NPN_AccessInformation mw_nPN_AccessInformation_choice_Extensions( + template (present) NPN_AccessInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_nPN_AccessInformation_choice_Extensions + + template (present) NPN_MobilityInformation mw_nPN_MobilityInformation_sNPN_MobilityInformation( + template (present) SNPN_MobilityInformation p_sNPN_MobilityInformation := ? + ) := { + sNPN_MobilityInformation := p_sNPN_MobilityInformation + } // End of template mw_nPN_MobilityInformation_sNPN_MobilityInformation + + template (present) NPN_MobilityInformation mw_nPN_MobilityInformation_pNI_NPN_MobilityInformation( + template (present) PNI_NPN_MobilityInformation p_pNI_NPN_MobilityInformation := ? + ) := { + pNI_NPN_MobilityInformation := p_pNI_NPN_MobilityInformation + } // End of template mw_nPN_MobilityInformation_pNI_NPN_MobilityInformation + + template (present) NPN_MobilityInformation mw_nPN_MobilityInformation_choice_Extensions( + template (present) NPN_MobilityInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_nPN_MobilityInformation_choice_Extensions + + template (present) NPN_PagingAssistanceInformation mw_nPN_PagingAssistanceInformation_pNI_NPN_PagingAssistance( + template (present) Allowed_PNI_NPN_List p_pNI_NPN_PagingAssistance := ? + ) := { + pNI_NPN_PagingAssistance := p_pNI_NPN_PagingAssistance + } // End of template mw_nPN_PagingAssistanceInformation_pNI_NPN_PagingAssistance + + template (present) NPN_PagingAssistanceInformation mw_nPN_PagingAssistanceInformation_choice_Extensions( + template (present) NPN_PagingAssistanceInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_nPN_PagingAssistanceInformation_choice_Extensions + + template (present) NPN_Support mw_nPN_Support_sNPN( + template (present) NID p_sNPN := ? + ) := { + sNPN := p_sNPN + } // End of template mw_nPN_Support_sNPN + + template (present) NPN_Support mw_nPN_Support_choice_Extensions( + template (present) NPN_Support.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_nPN_Support_choice_Extensions + + template (present) NR_CGI mw_nR_CGI( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) NRCellIdentity p_nRCellIdentity := ?, + template NR_CGI.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + nRCellIdentity := p_nRCellIdentity, + iE_Extensions := p_iE_Extensions + } // End of template mw_nR_CGI + + template (present) NR_PagingeDRXInformation mw_NR_PagingeDRXInformation( + template (present) NR_Paging_eDRX_Cycle p_nR_paging_eDRX_Cycle := ?, + template NR_Paging_Time_Window p_nR_paging_Time_Window := *, + template NR_PagingeDRXInformation.iE_Extensions p_iE_Extensions := * + ) := { + nR_paging_eDRX_Cycle := p_nR_paging_eDRX_Cycle, + nR_paging_Time_Window := p_nR_paging_Time_Window, + iE_Extensions := p_iE_Extensions + } // End of template mw_NR_PagingeDRXInformation + + template (present) NR_Paging_eDRX_Cycle mw_nR_Paging_eDRX_Cycle(template (present) NR_Paging_eDRX_Cycle p_value := ?) := p_value; + + template (present) NR_Paging_Time_Window mw_nR_Paging_Time_Window(template (present) NR_Paging_Time_Window p_value := ?) := p_value; + + template (present) NRNTNTAIInformation mw_nRNTNTAIInformation( + template (present) PLMNIdentity p_servingPLMN := ?, + template (present) TACListInNRNTN p_tACListInNRNTN := ?, + template TAC p_uELocationDerivedTACInNRNTN := *, + template NRNTNTAIInformation.iE_Extensions p_iE_Extensions := * + ) := { + servingPLMN := p_servingPLMN, + tACListInNRNTN := p_tACListInNRNTN, + uELocationDerivedTACInNRNTN := p_uELocationDerivedTACInNRNTN, + iE_Extensions := p_iE_Extensions + } // End of template mw_nRNTNTAIInformation + + template (present) NRFrequencyBandItem mw_nRFrequencyBandItem( + template (present) NRFrequencyBand p_nr_frequency_band := ?, + template NRFrequencyBandItem.iE_Extension p_iE_Extension := * + ) := { + nr_frequency_band := p_nr_frequency_band, + iE_Extension := p_iE_Extension + } // End of template mw_nRFrequencyBandItem + + template (present) NRFrequencyInfo mw_nRFrequencyInfo( + template (present) NRARFCN p_nrARFCN := ?, + template (present) NRFrequencyBand_List p_frequencyBand_List, + template NRFrequencyInfo.iE_Extension p_iE_Extension := * + ) := { + nrARFCN := p_nrARFCN, + frequencyBand_List := p_frequencyBand_List, + iE_Extension := p_iE_Extension + } // End of template mw_nRFrequencyInfo + + template (present) NRV2XServicesAuthorized mw_nRV2XServicesAuthorized( + template VehicleUE p_vehicleUE := *, + template PedestrianUE p_pedestrianUE := *, + template NRV2XServicesAuthorized.iE_Extensions p_iE_Extensions := * + ) := { + vehicleUE := p_vehicleUE, + pedestrianUE := p_pedestrianUE, + iE_Extensions := p_iE_Extensions + } // End of template mw_nRV2XServicesAuthorized + + template (present) VehicleUE mw_vehicleUE(template (present) VehicleUE p_value := ?) := p_value; + + template (present) PedestrianUE mw_pedestrianUE(template (present) PedestrianUE p_value := ?) := p_value; + + template (present) NRUESidelinkAggregateMaximumBitrate mw_nRUESidelinkAggregateMaximumBitrate( + template (present) BitRate p_uESidelinkAggregateMaximumBitRate := ?, + template NRUESidelinkAggregateMaximumBitrate.iE_Extensions p_iE_Extensions := * + ) := { + uESidelinkAggregateMaximumBitRate := p_uESidelinkAggregateMaximumBitRate, + iE_Extensions := p_iE_Extensions + } // End of template mw_nRUESidelinkAggregateMaximumBitrate + + template (present) OnboardingSupport mw_onboardingSupport(template (present) OnboardingSupport p_value := true_) := p_value; + + template (present) OverloadAction mw_overloadAction(template (present) OverloadAction p_value := ?) := p_value; + + template (present) OverloadResponse mw_overloadResponse_overloadAction( + template (present) OverloadAction p_overloadAction := ? + ) := { + overloadAction := p_overloadAction + } // End of template mw_overloadResponse_overloadAction + + template (present) OverloadResponse mw_overloadResponse_choice_Extensions( + template (present) OverloadResponse.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_overloadResponse_choice_Extensions + + + template (present) OverloadStartNSSAIItem mw_overloadStartNSSAIItem( + template (present) SliceOverloadList p_sliceOverloadList := ?, + template OverloadResponse p_sliceOverloadResponse := *, + template TrafficLoadReductionIndication p_sliceTrafficLoadReductionIndication := *, + template OverloadStartNSSAIItem.iE_Extensions p_iE_Extensions := * + ) := { + sliceOverloadList := p_sliceOverloadList, + sliceOverloadResponse := p_sliceOverloadResponse, + sliceTrafficLoadReductionIndication := p_sliceTrafficLoadReductionIndication, + iE_Extensions := p_iE_Extensions + } // End of template mw_overloadStartNSSAIItem + + template (present) PacketErrorRate mw_PacketErrorRate( + template (present) PacketErrorRate.pERScalar p_pERScalar := ?, + template (present) PacketErrorRate.pERExponent p_pERExponent := ?, + template PacketErrorRate.iE_Extensions p_iE_Extensions := * + ) := { + pERScalar := p_pERScalar, + pERExponent := p_pERExponent, + iE_Extensions := p_iE_Extensions + } // End of template mw_PacketErrorRate + + template (present) PagingAssisDataforCEcapabUE mw_pagingAssisDataforCEcapabUE( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template (present) CoverageEnhancementLevel p_coverageEnhancementLevel := ?, + template PagingAssisDataforCEcapabUE.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + coverageEnhancementLevel := p_coverageEnhancementLevel, + iE_Extensions := p_iE_Extensions + } // End of template mw_pagingAssisDataforCEcapabUE + + template (present) PagingAttemptInformation mw_pagingAttemptInformation( + template (present) PagingAttemptCount p_pagingAttemptCount := ?, + template (present) IntendedNumberOfPagingAttempts p_intendedNumberOfPagingAttempts := ?, + template NextPagingAreaScope p_nextPagingAreaScope := *, + template PagingAttemptInformation.iE_Extensions p_iE_Extensions := * + ) := { + pagingAttemptCount := p_pagingAttemptCount, + intendedNumberOfPagingAttempts := p_intendedNumberOfPagingAttempts, + nextPagingAreaScope := p_nextPagingAreaScope, + iE_Extensions := p_iE_Extensions + } // End of template mw_pagingAttemptInformation + + template (present) PagingCause mw_pagingCause(template (present) PagingCause p_value := voice) := p_value; + + template (present) PagingCauseIndicationForVoiceService mw_pagingCauseIndicationForVoiceService(template (present) PagingCauseIndicationForVoiceService p_value := ?) := p_value; + + template (present) PagingDRX mw_pagingDRX(template (present) PagingDRX p_value := ?) := p_value; + + template (present) PagingOrigin mw_pagingOrigin(template (present) PagingOrigin p_value := ?) := p_value; + + template (present) PagingPriority mw_pagingPriority(template (present) PagingPriority p_value := ?) := p_value; + + template (present) PagingProbabilityInformation mw_pagingProbabilityInformation(template (present) PagingProbabilityInformation p_value := ?) := p_value; + + template PathSwitchRequestAcknowledgeTransfer mw_PathSwitchRequestAcknowledgeTransfer( + template UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := *, + template SecurityIndication p_securityIndication := *, + template PathSwitchRequestAcknowledgeTransfer.iE_Extensions p_iE_Extensions := * + ) := { + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + securityIndication := p_securityIndication, + iE_Extensions := p_iE_Extensions + } // End of template mw_PathSwitchRequestAcknowledgeTransfer + + template (present) PathSwitchRequestAcknowledgeTransfer.iE_Extensions mw_pathSwitchRequestAcknowledgeTransfer_id_AdditionalNGU_UP_TNLInformation( + template (present) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList := ? + ) := { + { + id := id_AdditionalNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template mw_pathSwitchRequestAcknowledgeTransfer_id_AdditionalNGU_UP_TNLInformation + + template (present) PathSwitchRequestAcknowledgeTransfer.iE_Extensions mw_pathSwitchRequestAcknowledgeTransfer_id_RedundantUL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pathSwitchRequestAcknowledgeTransfer_id_RedundantUL_NGU_UP_TNLInformation + + template (present) PathSwitchRequestAcknowledgeTransfer.iE_Extensions mw_pathSwitchRequestAcknowledgeTransfer_id_AdditionalRedundantNGU_UP_TNLInformation( + template (present) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList := ? + ) := { + { + id := id_AdditionalRedundantNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template mw_pathSwitchRequestAcknowledgeTransfer_id_AdditionalRedundantNGU_UP_TNLInformation + + template (present) PathSwitchRequestAcknowledgeTransfer.iE_Extensions mw_pathSwitchRequestAcknowledgeTransfer_id_QosFlowParametersList( + template (present) QosFlowParametersList p_qosFlowParametersList := ? + ) := { + { + id := id_QosFlowParametersList, + criticality := ignore, + extensionValue := { QosFlowParametersList := p_qosFlowParametersList } + } + } // End of template mw_pathSwitchRequestAcknowledgeTransfer_id_QosFlowParametersList + + template (present) PathSwitchRequestSetupFailedTransfer mw_pathSwitchRequestSetupFailedTransfer( + template (present) Cause p_cause := ?, + template PathSwitchRequestSetupFailedTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pathSwitchRequestSetupFailedTransfer + + template (present) PathSwitchRequestTransfer mw_pathSwitchRequestTransfer( + template (present) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := ?, + template (present) QosFlowAcceptedList p_qosFlowAcceptedList := ?, + template DL_NGU_TNLInformationReused p_dL_NGU_TNLInformationReused := *, + template UserPlaneSecurityInformation p_userPlaneSecurityInformation := *, + template PathSwitchRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + dL_NGU_TNLInformationReused := p_dL_NGU_TNLInformationReused, + userPlaneSecurityInformation := p_userPlaneSecurityInformation, + qosFlowAcceptedList := p_qosFlowAcceptedList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pathSwitchRequestTransfer + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransferr_id_AdditionalDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList := ? + ) := { + { + id := id_AdditionalDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template mw_pathSwitchRequestTransferr_id_AdditionalDLQosFlowPerTNLInformation + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransferr_id_RedundantDL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pathSwitchRequestTransferr_id_RedundantDL_NGU_UP_TNLInformation + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransferr_id_RedundantDL_NGU_TNLInformationReused( + template (present) DL_NGU_TNLInformationReused p_dL_NGU_TNLInformationReused := ? + ) := { + { + id := id_RedundantDL_NGU_TNLInformationReused, + criticality := ignore, + extensionValue := { DL_NGU_TNLInformationReused := p_dL_NGU_TNLInformationReused } + } + } // End of template mw_pathSwitchRequestTransferr_id_RedundantDL_NGU_TNLInformationReused + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransferr_id_AdditionalRedundantDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList := ? + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template mw_pathSwitchRequestTransferr_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransferr_id_UsedRSNInformation( + template (present) RedundantPDUSessionInformation p_redundantPDUSessionInformation := ? + ) := { + { + id := id_UsedRSNInformation, + criticality := ignore, + extensionValue := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template mw_pathSwitchRequestTransferr_id_UsedRSNInformation + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransferr_id_GlobalRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ? + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template mw_pathSwitchRequestTransferr_id_GlobalRANNodeID + + template (present) PathSwitchRequestTransfer.iE_Extensions mw_pathSwitchRequestTransfer_id_MBS_SupportIndicator( + template (present) MBS_SupportIndicator p_mBS_SupportIndicator := ? + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template mw_pathSwitchRequestTransfer_id_MBS_SupportIndicator + + template (present) PathSwitchRequestUnsuccessfulTransfer mw_pathSwitchRequestUnsuccessfulTransfer( + template (present) Cause p_cause := ?, + template PathSwitchRequestUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pathSwitchRequestUnsuccessfulTransfer + + template (present) PC5QoSParameters mw_pC5QoSParameters( + template (present) PC5QoSFlowList p_pc5QoSFlowList := ?, + template BitRate p_pc5LinkAggregateBitRates := *, + template PC5QoSParameters.iE_Extensions p_iE_Extensions := * + ) := { + pc5QoSFlowList := p_pc5QoSFlowList, + pc5LinkAggregateBitRates := p_pc5LinkAggregateBitRates, + iE_Extensions := p_iE_Extensions + } // End of template mw_pC5QoSParameters + + template (present) PC5QoSFlowItem mw_pC5QoSFlowItem( + template (present) FiveQI p_pQI := ?, + template PC5FlowBitRates p_pc5FlowBitRates := *, + template Range p_range := *, + template PC5QoSFlowItem.iE_Extensions p_iE_Extensions := * + ) := { + pQI := p_pQI, + pc5FlowBitRates := p_pc5FlowBitRates, + range := p_range, + iE_Extensions := p_iE_Extensions + } // End of template mw_pC5QoSFlowItem + + template (present) PC5FlowBitRates mw_pC5FlowBitRates( + template (present) BitRate p_guaranteedFlowBitRate := ?, + template (present) BitRate p_maximumFlowBitRate := ?, + template PC5FlowBitRates.iE_Extensions p_iE_Extensions := * + ) := { + guaranteedFlowBitRate := p_guaranteedFlowBitRate, + maximumFlowBitRate := p_maximumFlowBitRate, + iE_Extensions := p_iE_Extensions + } // End of template mw_pC5FlowBitRates + + template (present) PrivacyIndicator mw_privacyIndicator(template (present) PrivacyIndicator p_value := ?) := p_value; + + template (present) PDUSessionAggregateMaximumBitRate mw_pDUSessionAggregateMaximumBitRate( + template (present) BitRate p_pDUSessionAggregateMaximumBitRateDL := ?, + template (present) BitRate p_pDUSessionAggregateMaximumBitRateUL := ?, + template PDUSessionAggregateMaximumBitRate.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionAggregateMaximumBitRateDL := p_pDUSessionAggregateMaximumBitRateDL, + pDUSessionAggregateMaximumBitRateUL := p_pDUSessionAggregateMaximumBitRateUL, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionAggregateMaximumBitRate + + template (present) PDUSessionResourceAdmittedItem mw_pDUSessionResourceAdmittedItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceAdmittedItem.handoverRequestAcknowledgeTransfer p_handoverRequestAcknowledgeTransfer := ?, + template PDUSessionResourceAdmittedItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + handoverRequestAcknowledgeTransfer := p_handoverRequestAcknowledgeTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceAdmittedItem + + template (present) PDUSessionResourceFailedToModifyItemModCfm mw_pDUSessionResourceFailedToModifyItemModCfm( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToModifyItemModCfm.pDUSessionResourceModifyIndicationUnsuccessfulTransfer p_pDUSessionResourceModifyIndicationUnsuccessfulTransfer := ?, + template PDUSessionResourceFailedToModifyItemModCfm.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyIndicationUnsuccessfulTransfer := p_pDUSessionResourceModifyIndicationUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToModifyItemModCfm + + template (present) PDUSessionResourceFailedToModifyItemModRes mw_pDUSessionResourceFailedToModifyItemModRes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToModifyItemModRes.pDUSessionResourceModifyUnsuccessfulTransfer p_pDUSessionResourceModifyUnsuccessfulTransfer := ?, + template PDUSessionResourceFailedToModifyItemModRes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyUnsuccessfulTransfer := p_pDUSessionResourceModifyUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToModifyItemModRes + + template (present) PDUSessionResourceFailedToResumeItemRESReq mw_pDUSessionResourceFailedToResumeItemRESReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) Cause p_cause := ?, + template PDUSessionResourceFailedToResumeItemRESReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToResumeItemRESReq + + template (present) PDUSessionResourceFailedToResumeItemRESRes mw_pDUSessionResourceFailedToResumeItemRESRes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) Cause p_cause := ?, + template PDUSessionResourceFailedToResumeItemRESRes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToResumeItemRESRes + + template (present) PDUSessionResourceFailedToSetupItemCxtFail mw_pDUSessionResourceFailedToSetupItemCxtFail( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToSetupItemCxtFail.pDUSessionResourceSetupUnsuccessfulTransfer p_pDUSessionResourceSetupUnsuccessfulTransfer := ?, + template PDUSessionResourceFailedToSetupItemCxtFail.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer := p_pDUSessionResourceSetupUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToSetupItemCxtFail + + template (present) PDUSessionResourceFailedToSetupItemCxtRes mw_pDUSessionResourceFailedToSetupItemCxtRes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToSetupItemCxtRes.pDUSessionResourceSetupUnsuccessfulTransfer p_pDUSessionResourceSetupUnsuccessfulTransfer := ?, + template PDUSessionResourceFailedToSetupItemCxtRes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer := p_pDUSessionResourceSetupUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToSetupItemCxtRes + + template (present) PDUSessionResourceFailedToSetupItemHOAck mw_pDUSessionResourceFailedToSetupItemHOAck( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToSetupItemHOAck.handoverResourceAllocationUnsuccessfulTransfer p_handoverResourceAllocationUnsuccessfulTransfer := ?, + template PDUSessionResourceFailedToSetupItemHOAck.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + handoverResourceAllocationUnsuccessfulTransfer := p_handoverResourceAllocationUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToSetupItemHOAck + + template (present) PDUSessionResourceFailedToSetupItemPSReq mw_pDUSessionResourceFailedToSetupItemPSReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToSetupItemPSReq.pathSwitchRequestSetupFailedTransfer p_pathSwitchRequestSetupFailedTransfer := ?, + template PDUSessionResourceFailedToSetupItemPSReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestSetupFailedTransfer := p_pathSwitchRequestSetupFailedTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToSetupItemPSReq + + template (present) PDUSessionResourceFailedToSetupItemSURes mw_pDUSessionResourceFailedToSetupItemSURes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceFailedToSetupItemSURes.pDUSessionResourceSetupUnsuccessfulTransfer p_pDUSessionResourceSetupUnsuccessfulTransfer := ?, + template PDUSessionResourceFailedToSetupItemSURes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer := p_pDUSessionResourceSetupUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceFailedToSetupItemSURes + + template (present) PDUSessionResourceHandoverItem mw_pDUSessionResourceHandoverItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceHandoverItem.handoverCommandTransfer p_handoverCommandTransfer := ?, + template PDUSessionResourceHandoverItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + handoverCommandTransfer := p_handoverCommandTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceHandoverItem + + template (present) PDUSessionResourceInformationItem mw_pDUSessionResourceInformationItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) QosFlowInformationList p_qosFlowInformationList := ?, + template DRBsToQosFlowsMappingList p_dRBsToQosFlowsMappingList := *, + template PDUSessionResourceInformationItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + qosFlowInformationList := p_qosFlowInformationList, + dRBsToQosFlowsMappingList := p_dRBsToQosFlowsMappingList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceInformationItem + + template (present) PDUSessionResourceItemCxtRelCpl mw_pDUSessionResourceItemCxtRelCpl( + template (present) PDUSessionID p_pDUSessionID := ?, + template PDUSessionResourceItemCxtRelCpl.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceItemCxtRelCpl + + template (present) PDUSessionResourceItemCxtRelCpl.iE_Extensions mw_pDUSessionResourceItemCxtRelCpl_id_PDUSessionResourceReleaseResponseTransfer( + template (present) PDUSessionResourceReleaseResponseTransfer_OCTET_STRING p_pDUSessionResourceReleaseResponseTransfer_OCTET_STRING := ? + ) := { + { + id := id_PDUSessionResourceReleaseResponseTransfer, + criticality := ignore, + extensionValue := { PDUSessionResourceReleaseResponseTransfer_OCTET_STRING := p_pDUSessionResourceReleaseResponseTransfer_OCTET_STRING } + } + } // End of template mw_pDUSessionResourceItemCxtRelCpl_id_PDUSessionResourceReleaseResponseTransfer + + template (present) PDUSessionResourceItemCxtRelReq mw_pDUSessionResourceItemCxtRelReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template PDUSessionResourceItemCxtRelReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceItemCxtRelReq + + template (present) PDUSessionResourceItemHORqd mw_pDUSessionResourceItemHORqd( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceItemHORqd.handoverRequiredTransfer p_handoverRequiredTransfer := ?, + template PDUSessionResourceItemHORqd.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + handoverRequiredTransfer := p_handoverRequiredTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceItemHORqd + + template (present) PDUSessionResourceModifyConfirmTransfer mw_pDUSessionResourceModifyConfirmTransfer( + template (present) QosFlowModifyConfirmList p_qosFlowModifyConfirmList := ?, + template (present) UPTransportLayerInformation p_uLNGU_UP_TNLInformation := ?, + template UPTransportLayerInformationPairList p_additionalNG_UUPTNLInformation := *, + template QosFlowListWithCause p_qosFlowFailedToModifyList := *, + template PDUSessionResourceModifyConfirmTransfer.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowModifyConfirmList := p_qosFlowModifyConfirmList, + uLNGU_UP_TNLInformation := p_uLNGU_UP_TNLInformation, + additionalNG_UUPTNLInformation := p_additionalNG_UUPTNLInformation, + qosFlowFailedToModifyList := p_qosFlowFailedToModifyList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyConfirmTransfer + + template (present) PDUSessionResourceModifyConfirmTransfer.iE_Extensions mw_pDUSessionResourceModifyConfirmTransfer_id_RedundantUL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pDUSessionResourceModifyConfirmTransferr_id_RedundantUL_NGU_UP_TNLInformation + + template (present) PDUSessionResourceModifyConfirmTransfer.iE_Extensions mw_pDUSessionResourceModifyConfirmTransfer_id_AdditionalRedundantNGU_UP_TNLInformation( + template (present) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList := ? + ) := { + { + id := id_AdditionalRedundantNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template mw_pDUSessionResourceModifyConfirmTransferr_id_AdditionalRedundantNGU_UP_TNLInformation + + template (present) PDUSessionResourceModifyIndicationUnsuccessfulTransfer mw_pDUSessionResourceModifyIndicationUnsuccessfulTransfer( + template (present) Cause p_cause := ?, + template PDUSessionResourceModifyIndicationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyIndicationUnsuccessfulTransfer + + template (present) PDUSessionResourceModifyRequestTransfer mw_pDUSessionResourceModifyRequestTransfer( + template PDUSessionResourceModifyRequestTransfer.protocolIEs p_protocolIEs := ? + ) := { + protocolIEs := p_protocolIEs + } // End of template mw_pDUSessionResourceModifyRequestTransfer + + template (present) PDUSessionResourceModifyRequestTransfer.protocolIEs mw_pDUSessionResourceModifyRequestTransfer_options( + template (present) UL_NGU_UP_TNLModifyList p_uL_NGU_UP_TNLModifyList := ?, + template (present) QosFlowAddOrModifyRequestList p_qosFlowAddOrModifyRequestList := ? + ) := { + { + id := id_UL_NGU_UP_TNLModifyList, + criticality := reject, + value_ := { UL_NGU_UP_TNLModifyList := p_uL_NGU_UP_TNLModifyList } + }, + { + id := id_QosFlowAddOrModifyRequestList, + criticality := reject, + value_ := { QosFlowAddOrModifyRequestList := p_qosFlowAddOrModifyRequestList } + } + } // End of template mw_pDUSessionResourceModifyRequestTransfer_options + + template PDUSessionResourceModifyResponseTransfer mw_pDUSessionResourceModifyResponseTransfer( + template UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := *, + template UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := *, + template QosFlowAddOrModifyResponseList p_qosFlowAddOrModifyResponseList := *, + template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *, + template QosFlowListWithCause p_qosFlowFailedToAddOrModifyList := *, + template PDUSessionResourceModifyResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + qosFlowAddOrModifyResponseList := p_qosFlowAddOrModifyResponseList, + additionalDLQosFlowPerTNLInformation := p_additionalDLQosFlowPerTNLInformation, + qosFlowFailedToAddOrModifyList := p_qosFlowFailedToAddOrModifyList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyResponseTransfer + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_AdditionalNGU_UP_TNLInformation( + template (present) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList := ? + ) := { + { + id := id_AdditionalNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_AdditionalNGU_UP_TNLInformation + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_RedundantDL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_RedundantDL_NGU_UP_TNLInformation + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_RedundantUL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_RedundantUL_NGU_UP_TNLInformation + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList := ? + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantNGU_UP_TNLInformation( + template (present) UPTransportLayerInformationPairList p_uPTransportLayerInformationPairList := ? + ) := { + { + id := id_AdditionalRedundantNGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformationPairList := p_uPTransportLayerInformationPairList } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_AdditionalRedundantNGU_UP_TNLInformation + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_SecondaryRATUsageInformation( + template (present) SecondaryRATUsageInformation p_secondaryRATUsageInformation := ? + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_SecondaryRATUsageInformation + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_MBS_SupportIndicator( + template (present) MBS_SupportIndicator p_mBS_SupportIndicator := ? + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_MBS_SupportIndicator + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_MBSSessionSetuporModifyResponseList( + template (present) MBSSessionSetupResponseList p_mBSSessionSetupResponseList := ? + ) := { + { + id := id_MBSSessionSetuporModifyResponseList, + criticality := ignore, + extensionValue := { MBSSessionSetupResponseList := p_mBSSessionSetupResponseList } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_MBSSessionSetuporModifyResponseList + + template (present) PDUSessionResourceModifyResponseTransfer.iE_Extensions mw_pDUSessionResourceModifyResponseTransfer_id_MBSSessionFailedtoSetuporModifyList( + template (present) MBSSessionFailedtoSetupList p_mBSSessionFailedtoSetupList := ? + ) := { + { + id := id_MBSSessionFailedtoSetuporModifyList, + criticality := ignore, + extensionValue := { MBSSessionFailedtoSetupList := p_mBSSessionFailedtoSetupList } + } + } // End of template mw_pDUSessionResourceModifyResponseTransfer_id_MBSSessionFailedtoSetuporModifyList + + template (present) PDUSessionResourceModifyIndicationTransfer mw_pDUSessionResourceModifyIndicationTransfer( + template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?, + template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *, + template PDUSessionResourceModifyIndicationTransfer.iE_Extensions p_iE_Extensions := * + ) := { + dLQosFlowPerTNLInformation := p_dLQosFlowPerTNLInformation, + additionalDLQosFlowPerTNLInformation := p_additionalDLQosFlowPerTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyIndicationTransfer + + template (present) PDUSessionResourceModifyIndicationTransfer.iE_Extensions mw_pDUSessionResourceModifyIndicationTransfer_id_SecondaryRATUsageInformation( + template (present) SecondaryRATUsageInformation p_secondaryRATUsageInformation := ? + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template mw_pDUSessionResourceModifyIndicationTransfer_id_SecondaryRATUsageInformation + + template (present) PDUSessionResourceModifyIndicationTransfer.iE_Extensions mw_pDUSessionResourceModifyIndicationTransfer_id_SecurityResult( + template (present) SecurityResult p_securityResult := ? + ) := { + { + id := id_SecurityResult, + criticality := ignore, + extensionValue := { SecurityResult := p_securityResult } + } + } // End of template mw_pDUSessionResourceModifyIndicationTransfer_id_SecurityResult + + template (present) PDUSessionResourceModifyIndicationTransfer.iE_Extensions mw_pDUSessionResourceModifyIndicationTransfer_id_RedundantDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformation p_qosFlowPerTNLInformation := ? + ) := { + { + id := id_RedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformation := p_qosFlowPerTNLInformation } + } + } // End of template mw_pDUSessionResourceModifyIndicationTransfer_id_RedundantDLQosFlowPerTNLInformation + + template (present) PDUSessionResourceModifyIndicationTransfer.iE_Extensions mw_pDUSessionResourceModifyIndicationTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList := ? + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template mw_pDUSessionResourceModifyIndicationTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (present) PDUSessionResourceModifyIndicationTransfer.iE_Extensions mw_pDUSessionResourceModifyIndicationTransfer_id_GlobalRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ? + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template mw_pDUSessionResourceModifyIndicationTransfer_id_GlobalRANNodeID + + template (present) PDUSessionResourceModifyItemModCfm mw_pDUSessionResourceModifyItemModCfm( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceModifyItemModCfm.pDUSessionResourceModifyConfirmTransfer p_pDUSessionResourceModifyConfirmTransfer := ?, + template PDUSessionResourceModifyItemModCfm.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyConfirmTransfer := p_pDUSessionResourceModifyConfirmTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyItemModCfm + + template (present) PDUSessionResourceModifyItemModInd mw_pDUSessionResourceModifyItemModInd( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceModifyItemModInd.pDUSessionResourceModifyIndicationTransfer p_pDUSessionResourceModifyIndicationTransfer := ?, + template PDUSessionResourceModifyItemModInd.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyIndicationTransfer := p_pDUSessionResourceModifyIndicationTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyItemModInd + + template (present) PDUSessionResourceModifyItemModReq mw_pDUSessionResourceModifyItemModReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceModifyItemModReq.pDUSessionResourceModifyRequestTransfer p_pDUSessionResourceModifyRequestTransfer := ?, + template NAS_PDU p_nAS_PDU := *, + template PDUSessionResourceModifyItemModReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + nAS_PDU := p_nAS_PDU, + pDUSessionResourceModifyRequestTransfer := p_pDUSessionResourceModifyRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyItemModReq + + template (present) PDUSessionResourceModifyItemModReq.iE_Extensions mw_pDUSessionResourceModifyItemModReq_id_S_NSSAI( + template (present) S_NSSAI p_s_nSSAI := ? + ) := { + { + id := id_S_NSSAI, + criticality := reject, + extensionValue := { S_NSSAI := p_s_nSSAI } + } + } // End of template mw_pDUSessionResourceModifyItemModReq_id_S_NSSAI + + template (present) PDUSessionResourceModifyItemModReq.iE_Extensions mw_pDUSessionResourceModifyItemModReq_id_PduSessionExpectedUEActivityBehaviour( + template (present) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := ? + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template mw_pDUSessionResourceModifyItemModReq_id_PduSessionExpectedUEActivityBehaviour + + template (present) PDUSessionResourceModifyItemModReq.iE_Extensions mw_pDUSessionResourceModifyItemModReq_full( + template (present) S_NSSAI p_s_nSSAI := ?, + template (present) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := ? + ) := { + { + id := id_S_NSSAI, + criticality := reject, + extensionValue := { S_NSSAI := p_s_nSSAI } + }, + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template mw_pDUSessionResourceModifyItemModReq_full + + template (present) PDUSessionResourceModifyItemModRes mw_pDUSessionResourceModifyItemModRes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceModifyItemModRes.pDUSessionResourceModifyResponseTransfer p_pDUSessionResourceModifyResponseTransfer := ?, + template PDUSessionResourceModifyItemModRes.iE_Extensions p_iE_Extensions := * + ) := { + + pDUSessionID := p_pDUSessionID, + pDUSessionResourceModifyResponseTransfer := p_pDUSessionResourceModifyResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyItemModRes + + template (present) PDUSessionResourceModifyUnsuccessfulTransfer mw_pDUSessionResourceModifyUnsuccessfulTransfer( + template (present) Cause p_cause := ?, + template CriticalityDiagnostics p_criticalityDiagnostics := *, + template PDUSessionResourceModifyUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceModifyUnsuccessfulTransfer + + template (present) PDUSessionResourceNotifyItem mw_pDUSessionResourceNotifyItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceNotifyItem.pDUSessionResourceNotifyTransfer p_pDUSessionResourceNotifyTransfer, + template PDUSessionResourceNotifyItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceNotifyTransfer := p_pDUSessionResourceNotifyTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceNotifyItem + + template (present) PDUSessionResourceNotifyReleasedTransfer mw_pDUSessionResourceNotifyReleasedTransfer( + template (present) Cause p_cause := ?, + template PDUSessionResourceNotifyReleasedTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceNotifyReleasedTransfer + + template (present) PDUSessionResourceNotifyReleasedTransfer.iE_Extensions mw_pDUSessionResourceNotifyReleasedTransfer_id_SecondaryRATUsageInformation( + template (present) SecondaryRATUsageInformation p_secondaryRATUsageInformation := ? + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template mw_pDUSessionResourceNotifyReleasedTransfer_id_SecondaryRATUsageInformation + + template PDUSessionResourceNotifyTransfer mw_pDUSessionResourceNotifyTransfer( + template QosFlowNotifyList p_qosFlowNotifyList := *, + template QosFlowListWithCause p_qosFlowReleasedList := *, + template PDUSessionResourceNotifyTransfer.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowNotifyList := p_qosFlowNotifyList, + qosFlowReleasedList := p_qosFlowReleasedList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceNotifyTransfer + + template (present) PDUSessionResourceNotifyTransfer.iE_Extensions mw_pDUSessionResourceNotifyTransfer_id_SecondaryRATUsageInformation( + template (present) SecondaryRATUsageInformation p_secondaryRATUsageInformation := ? + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template mw_pDUSessionResourceNotifyReleasedTransfer_id_SecondaryRATUsageInformation + + template (present) PDUSessionResourceNotifyTransfer.iE_Extensions mw_pDUSessionResourceNotifyTransfer_id_QosFlowFeedbackList( + template (present) QosFlowFeedbackList p_qosFlowFeedbackList := ? + ) := { + { + id := id_QosFlowFeedbackList, + criticality := ignore, + extensionValue := { QosFlowFeedbackList := p_qosFlowFeedbackList } + } + } // End of template mw_pDUSessionResourceNotifyReleasedTransfer_id_QosFlowFeedbackList + + template (present) PDUSessionResourceReleaseCommandTransfer mw_pDUSessionResourceReleaseCommandTransfer( + template (present) Cause p_cause := ?, + template PDUSessionResourceReleaseCommandTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceReleaseCommandTransfer + + template (present) PDUSessionResourceReleasedItemNot mw_pDUSessionResourceReleasedItemNot( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceReleasedItemNot.pDUSessionResourceNotifyReleasedTransfer p_pDUSessionResourceNotifyReleasedTransfer := ?, + template PDUSessionResourceReleasedItemNot.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceNotifyReleasedTransfer := p_pDUSessionResourceNotifyReleasedTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceReleasedItemNot + + template (present) PDUSessionResourceReleasedItemPSAck mw_pDUSessionResourceReleasedItemPSAck( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceReleasedItemPSAck.pathSwitchRequestUnsuccessfulTransfer p_pathSwitchRequestUnsuccessfulTransfer := ?, + template PDUSessionResourceReleasedItemPSAck.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestUnsuccessfulTransfer := p_pathSwitchRequestUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceReleasedItemPSAck + + template (present) PDUSessionResourceReleasedItemPSFail mw_pDUSessionResourceReleasedItemPSFail( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceReleasedItemPSFail.pathSwitchRequestUnsuccessfulTransfer p_pathSwitchRequestUnsuccessfulTransfer := ?, + template PDUSessionResourceReleasedItemPSFail.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestUnsuccessfulTransfer := p_pathSwitchRequestUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceReleasedItemPSFail + + template (present) PDUSessionResourceReleasedItemRelRes mw_pDUSessionResourceReleasedItemRelRes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceReleasedItemRelRes.pDUSessionResourceReleaseResponseTransfer p_pDUSessionResourceReleaseResponseTransfer := ?, + template PDUSessionResourceReleasedItemRelRes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceReleaseResponseTransfer := p_pDUSessionResourceReleaseResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceReleasedItemRelRes + + template PDUSessionResourceReleaseResponseTransfer mw_pDUSessionResourceReleaseResponseTransfer( + template PDUSessionResourceReleaseResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceReleaseResponseTransfer + + template (present) PDUSessionResourceNotifyTransfer.iE_Extensions mw_pDUSessionResourceReleaseResponseTransfer_id_SecondaryRATUsageInformation( + template (present) SecondaryRATUsageInformation p_secondaryRATUsageInformation := ? + ) := { + { + id := id_SecondaryRATUsageInformation, + criticality := ignore, + extensionValue := { SecondaryRATUsageInformation := p_secondaryRATUsageInformation } + } + } // End of template mw_pDUSessionResourceReleaseResponseTransfer_id_SecondaryRATUsageInformation + + template (present) PDUSessionResourceResumeItemRESReq mw_pDUSessionResourceResumeItemRESReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceResumeItemRESReq.uEContextResumeRequestTransfer p_uEContextResumeRequestTransfer := ?, + template PDUSessionResourceResumeItemRESReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + uEContextResumeRequestTransfer := p_uEContextResumeRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceResumeItemRESReq + + template (present) PDUSessionResourceResumeItemRESRes mw_pDUSessionResourceResumeItemRESRes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceResumeItemRESRes.uEContextResumeResponseTransfer p_uEContextResumeResponseTransfer := ?, + template PDUSessionResourceResumeItemRESRes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + uEContextResumeResponseTransfer := p_uEContextResumeResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceResumeItemRESRes + + template (present) PDUSessionResourceSecondaryRATUsageItem mw_pPDUSessionResourceSecondaryRATUsageItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceSecondaryRATUsageItem.secondaryRATDataUsageReportTransfer p_secondaryRATDataUsageReportTransfer := ?, + template PDUSessionResourceSecondaryRATUsageItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + secondaryRATDataUsageReportTransfer := p_secondaryRATDataUsageReportTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pPDUSessionResourceSecondaryRATUsageItem + + template (present) PDUSessionResourceSetupItemCxtReq mw_pDUSessionResourceSetupItemCxtReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) S_NSSAI p_s_NSSAI := ?, + template (present) PDUSessionResourceSetupItemCxtReq.pDUSessionResourceSetupRequestTransfer p_pDUSessionResourceSetupRequestTransfer := ?, + template NAS_PDU p_nAS_PDU := *, + template PDUSessionResourceSetupItemCxtReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + nAS_PDU := p_nAS_PDU, + s_NSSAI := p_s_NSSAI, + pDUSessionResourceSetupRequestTransfer := p_pDUSessionResourceSetupRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupItemCxtReq + + template (present) PDUSessionResourceSetupItemCxtReq.iE_Extensions mw_pDUSessionResourceSetupItemCxtReq_id_PduSessionExpectedUEActivityBehaviour( + template (present) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := ? + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template mw_pDUSessionResourceSetupItemCxtReq_id_PduSessionExpectedUEActivityBehaviour + + template (present) PDUSessionResourceSetupItemCxtRes mw_pDUSessionResourceSetupItemCxtRes( + template (present) PDUSessionID p_pDUSessionID, + template (present) PDUSessionResourceSetupItemCxtRes.pDUSessionResourceSetupResponseTransfer p_pDUSessionResourceSetupResponseTransfer := ?, + template PDUSessionResourceSetupItemCxtRes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupResponseTransfer := p_pDUSessionResourceSetupResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupItemCxtRes + + template (present) PDUSessionResourceSetupItemHOReq mw_pDUSessionResourceSetupItemHOReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) S_NSSAI p_s_NSSAI := ?, + template (present) PDUSessionResourceSetupItemHOReq.handoverRequestTransfer p_handoverRequestTransfer := ?, + template PDUSessionResourceSetupItemHOReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + s_NSSAI := p_s_NSSAI, + handoverRequestTransfer := p_handoverRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupItemHOReq + + template (present) PDUSessionResourceSetupItemHOReq.iE_Extensions mw_pDUSessionResourceSetupItemHOReq_id_PduSessionExpectedUEActivityBehaviour( + template (present) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := ? + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template mw_pDUSessionResourceSetupItemCxtReq_id_PduSessionExpectedUEActivityBehaviour + + template (present) PDUSessionResourceSetupItemSUReq mw_pDUSessionResourceSetupItemSUReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) S_NSSAI p_s_NSSAI := ?, + template (present) PDUSessionResourceSetupItemSUReq.pDUSessionResourceSetupRequestTransfer p_pDUSessionResourceSetupRequestTransfer := ?, + template NAS_PDU p_pDUSessionNAS_PDU := *, + template PDUSessionResourceSetupItemSUReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionNAS_PDU := p_pDUSessionNAS_PDU, + s_NSSAI := p_s_NSSAI, + pDUSessionResourceSetupRequestTransfer := p_pDUSessionResourceSetupRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupItemSUReq + + template (present) PDUSessionResourceSetupItemSUReq.iE_Extensions mw_pDUSessionResourceSetupItemSUReq_id_PduSessionExpectedUEActivityBehaviour( + template (present) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := ? + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template mw_pDUSessionResourceSetupItemSUReq_id_PduSessionExpectedUEActivityBehaviour + + template (present) PDUSessionResourceSetupItemSURes mw_pDUSessionResourceSetupItemSURes( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceSetupItemSURes.pDUSessionResourceSetupResponseTransfer p_pDUSessionResourceSetupResponseTransfer := ?, + template PDUSessionResourceSetupItemSURes.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceSetupResponseTransfer := p_pDUSessionResourceSetupResponseTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupItemSURes + + template (present) PDUSessionResourceSetupRequestTransfer mw_pDUSessionResourceSetupRequestTransfer( + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs p_protocolIEs := ? + ) := { + protocolIEs := p_protocolIEs + } // End of template mw_pDUSessionResourceSetupRequestTransfer + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_mandatories( + template (present) PDUSessionType p_pDUSessionType := ?, + template (present) QosFlowSetupRequestList p_qosFlowSetupRequestList := ?, + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + }, + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + }, + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_mandatories + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_handover( + template (present) PDUSessionType p_pDUSessionType := ?, + template (present) QosFlowSetupRequestList p_qosFlowSetupRequestList := ?, + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ?, + template (present) DataForwardingNotPossible p_dataForwardingNotPossible := ?, + template (present) SecurityIndication p_securityIndication := ? + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + }, + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + }, + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + }, + { + id := id_DataForwardingNotPossible, + criticality := reject, + value_ := { DataForwardingNotPossible := p_dataForwardingNotPossible } + }, + { + id := id_SecurityIndication, + criticality := reject, + value_ := { SecurityIndication := p_securityIndication } + } + + } // End of template mw_pDUSessionResourceSetupRequestTransfer_optionals + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_PDUSessionAggregateMaximumBitRate( + template (present) PDUSessionAggregateMaximumBitRate p_pDUSessionAggregateMaximumBitRate := ? + ) := { + { + id := id_PDUSessionAggregateMaximumBitRate, + criticality := reject, + value_ := { PDUSessionAggregateMaximumBitRate := p_pDUSessionAggregateMaximumBitRate } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_PDUSessionAggregateMaximumBitRate + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_UL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformationList p_uPTransportLayerInformationList := ? + ) := { + { + id := id_UL_NGU_UP_TNLInformation, + criticality := reject, + value_ := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_UL_NGU_UP_TNLInformation + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_DataForwardingNotPossible( + template (present) DataForwardingNotPossible p_dataForwardingNotPossible := ? + ) := { + { + id := id_DataForwardingNotPossible, + criticality := reject, + value_ := { DataForwardingNotPossible := p_dataForwardingNotPossible } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_DataForwardingNotPossible + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_PDUSessionType( + template (present) PDUSessionType p_pDUSessionType := ? + ) := { + { + id := id_PDUSessionType, + criticality := reject, + value_ := { PDUSessionType := p_pDUSessionType } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_PDUSessionType + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_SecurityIndication( + template (present) SecurityIndication p_securityIndication := ? + ) := { + { + id := id_SecurityIndication, + criticality := reject, + value_ := { SecurityIndication := p_securityIndication } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_SecurityIndication + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_NetworkInstance( + template (present) NetworkInstance p_networkInstance := ? + ) := { + { + id := id_NetworkInstance, + criticality := reject, + value_ := { NetworkInstance := p_networkInstance } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_NetworkInstance + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_QosFlowSetupRequestList( + template (present) QosFlowSetupRequestList p_qosFlowSetupRequestList := ? + ) := { + { + id := id_QosFlowSetupRequestList, + criticality := reject, + value_ := { QosFlowSetupRequestList := p_qosFlowSetupRequestList } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_QosFlowSetupRequestList + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_CommonNetworkInstance( + template (present) CommonNetworkInstance p_commonNetworkInstance := ? + ) := { + { + id := id_CommonNetworkInstance, + criticality := ignore, + value_ := { CommonNetworkInstance := p_commonNetworkInstance } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_CommonNetworkInstance + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_DirectForwardingPathAvailability( + template (present) DirectForwardingPathAvailability p_directForwardingPathAvailability := ? + ) := { + { + id := id_DirectForwardingPathAvailability, + criticality := ignore, + value_ := { DirectForwardingPathAvailability := p_directForwardingPathAvailability } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_DirectForwardingPathAvailability + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_RedundantUL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + value_ := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_RedundantUL_NGU_UP_TNLInformation + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_AdditionalRedundantUL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformationList p_uPTransportLayerInformationList := ? + ) := { + { + id := id_AdditionalRedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + value_ := { UPTransportLayerInformationList := p_uPTransportLayerInformationList } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_AdditionalRedundantUL_NGU_UP_TNLInformation + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_RedundantCommonNetworkInstancen( + template (present) CommonNetworkInstance p_commonNetworkInstance := ? + ) := { + { + id := id_RedundantCommonNetworkInstance, + criticality := ignore, + value_ := { CommonNetworkInstance := p_commonNetworkInstance } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_RedundantCommonNetworkInstance + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_RedundantPDUSessionInformation( + template (present) RedundantPDUSessionInformation p_redundantPDUSessionInformation := ? + ) := { + { + id := id_RedundantPDUSessionInformation, + criticality := ignore, + value_ := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_RedundantPDUSessionInformation + + template (present) PDUSessionResourceSetupRequestTransfer.protocolIEs mw_pDUSessionResourceSetupRequestTransfer_id_MBSSessionSetupRequestList( + template (present) MBSSessionSetupRequestList p_mBSSessionSetupRequestList := ? + ) := { + { + id := id_MBSSessionSetupRequestList, + criticality := ignore, + value_ := { MBSSessionSetupRequestList := p_mBSSessionSetupRequestList } + } + } // End of template mw_pDUSessionResourceSetupRequestTransfer_id_MBSSessionSetupRequestList + + template (present) PDUSessionResourceSetupResponseTransfer mw_pDUSessionResourceSetupResponseTransfer( + template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?, + template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *, + template SecurityResult p_securityResult := *, + template QosFlowListWithCause p_qosFlowFailedToSetupList := *, + template PDUSessionResourceSetupResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + dLQosFlowPerTNLInformation := p_dLQosFlowPerTNLInformation, + additionalDLQosFlowPerTNLInformation := p_additionalDLQosFlowPerTNLInformation, + securityResult := p_securityResult, + qosFlowFailedToSetupList := p_qosFlowFailedToSetupList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupResponseTransfer + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_RedundantDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformation p_qosFlowPerTNLInformation := ? + ) := { + { + id := id_RedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformation := p_qosFlowPerTNLInformation } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_RedundantDLQosFlowPerTNLInformation + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation( + template (present) QosFlowPerTNLInformationList p_qosFlowPerTNLInformationList := ? + ) := { + { + id := id_AdditionalRedundantDLQosFlowPerTNLInformation, + criticality := ignore, + extensionValue := { QosFlowPerTNLInformationList := p_qosFlowPerTNLInformationList } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_AdditionalRedundantDLQosFlowPerTNLInformation + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_UsedRSNInformation( + template (present) RedundantPDUSessionInformation p_redundantPDUSessionInformation := ? + ) := { + { + id := id_UsedRSNInformation, + criticality := ignore, + extensionValue := { RedundantPDUSessionInformation := p_redundantPDUSessionInformation } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_UsedRSNInformation + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_GlobalRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ? + ) := { + { + id := id_GlobalRANNodeID, + criticality := ignore, + extensionValue := { GlobalRANNodeID := p_globalRANNodeID } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_GlobalRANNodeID + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_MBS_SupportIndicator( + template (present) MBS_SupportIndicator p_mBS_SupportIndicator := ? + ) := { + { + id := id_MBS_SupportIndicator, + criticality := ignore, + extensionValue := { MBS_SupportIndicator := p_mBS_SupportIndicator } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_MBS_SupportIndicator + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_MBSSessionSetupResponseList( + template (present) MBSSessionSetupResponseList p_mBSSessionSetupResponseList := ? + ) := { + { + id := id_MBSSessionSetupResponseList, + criticality := ignore, + extensionValue := { MBSSessionSetupResponseList := p_mBSSessionSetupResponseList } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_MBSSessionSetupResponseList + + template (present) PDUSessionResourceSetupResponseTransfer.iE_Extensions mw_pDUSessionResourceSetupResponseTransfer_id_MBSSessionFailedtoSetupList( + template (present) MBSSessionFailedtoSetupList p_mBSSessionFailedtoSetupList := ? + ) := { + { + id := id_MBSSessionFailedtoSetupList, + criticality := ignore, + extensionValue := { MBSSessionFailedtoSetupList := p_mBSSessionFailedtoSetupList } + } + } // End of template mw_pDUSessionResourceSetupResponseTransfer_id_MBSSessionFailedtoSetupList + + template (present) PDUSessionResourceSetupUnsuccessfulTransfer mw_pDUSessionResourceSetupUnsuccessfulTransfer( + template (present) Cause p_cause := ?, + template CriticalityDiagnostics p_criticalityDiagnostics := *, + template PDUSessionResourceSetupUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := * + ) := { + cause := p_cause, + criticalityDiagnostics := p_criticalityDiagnostics, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSetupUnsuccessfulTransfer + + template (present) PDUSessionResourceSuspendItemSUSReq mw_pDUSessionResourceSuspendItemSUSReq( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceSuspendItemSUSReq.uEContextSuspendRequestTransfer p_uEContextSuspendRequestTransfer := ?, + template PDUSessionResourceSuspendItemSUSReq.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + uEContextSuspendRequestTransfer := p_uEContextSuspendRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSuspendItemSUSReq + + template (present) PDUSessionResourceSwitchedItem mw_pDUSessionResourceSwitchedItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceSwitchedItem.pathSwitchRequestAcknowledgeTransfer p_pathSwitchRequestAcknowledgeTransfer := ?, + template PDUSessionResourceSwitchedItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestAcknowledgeTransfer := p_pathSwitchRequestAcknowledgeTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceSwitchedItem + + template (present) PDUSessionResourceSwitchedItem.iE_Extensions mw_pDUSessionResourceSwitchedItemw_id_PduSessionExpectedUEActivityBehaviour( + template (present) ExpectedUEActivityBehaviour p_expectedUEActivityBehaviour := ? + ) := { + { + id := id_PduSessionExpectedUEActivityBehaviour, + criticality := ignore, + extensionValue := { ExpectedUEActivityBehaviour := p_expectedUEActivityBehaviour } + } + } // End of template mw_pDUSessionResourceSwitchedItemw_id_PduSessionExpectedUEActivityBehaviour + + template (present) PDUSessionResourceToBeSwitchedDLItem mw_pDUSessionResourceToBeSwitchedDLItem( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceToBeSwitchedDLItem.pathSwitchRequestTransfer p_pathSwitchRequestTransfer := ?, + template PDUSessionResourceToBeSwitchedDLItem.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pathSwitchRequestTransfer := p_pathSwitchRequestTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceToBeSwitchedDLItem + + template (present) PDUSessionResourceToReleaseItemHOCmd mw_pDUSessionResourceToReleaseItemHOCmd( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceToReleaseItemHOCmd.handoverPreparationUnsuccessfulTransfer p_handoverPreparationUnsuccessfulTransfer := ?, + template PDUSessionResourceToReleaseItemHOCmd.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + handoverPreparationUnsuccessfulTransfer := p_handoverPreparationUnsuccessfulTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceToReleaseItemHOCmd + + template (present) PDUSessionResourceToReleaseItemRelCmd mw_pDUSessionResourceToReleaseItemRelCmd( + template (present) PDUSessionID p_pDUSessionID := ?, + template (present) PDUSessionResourceToReleaseItemRelCmd.pDUSessionResourceReleaseCommandTransfer p_pDUSessionResourceReleaseCommandTransfer := ?, + template PDUSessionResourceToReleaseItemRelCmd.iE_Extensions p_iE_Extensions := * + ) := { + pDUSessionID := p_pDUSessionID, + pDUSessionResourceReleaseCommandTransfer := p_pDUSessionResourceReleaseCommandTransfer, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionResourceToReleaseItemRelCmd + + template (present) PDUSessionType mw_pDUSessionType(template (present) PDUSessionType p_value := ipv4) := p_value; + + template (present) PDUSessionUsageReport mw_pDUSessionUsageReport( + template (present) PDUSessionUsageReport.rATType p_rATType := ?, + template (present) VolumeTimedReportList p_pDUSessionTimedReportList := ?, + template PDUSessionUsageReport.iE_Extensions p_iE_Extensions := * + ) := { + rATType := p_rATType, + pDUSessionTimedReportList := p_pDUSessionTimedReportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pDUSessionUsageReport + + template (present) PEIPSassistanceInformation mw_pEIPSassistanceInformation( + template (present)CNsubgroupID p_cNsubgroupID := ?, + template PEIPSassistanceInformation.iE_Extensions p_iE_Extensions := * + ) := { + cNsubgroupID := p_cNsubgroupID, + iE_Extensions := p_iE_Extensions + } // End of template mw_pEIPSassistanceInformation + + template (present) PLMNAreaBasedQMC mw_pLMNAreaBasedQMC( + template (present) PLMNListforQMC p_plmnListforQMC := ?, + template PLMNAreaBasedQMC.iE_Extensions p_iE_Extensions := * + ) := { + plmnListforQMC := p_plmnListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template mw_pLMNAreaBasedQMC + + template (present) PLMNSupportItem mw_pLMNSupportItem( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) SliceSupportList p_sliceSupportList := ?, + template PLMNSupportItem.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + sliceSupportList := p_sliceSupportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_pLMNSupportItem + + template (present) PLMNSupportItem.iE_Extensions mw_pLMNSupportItemw_id_NPN_Support( + template (present) NPN_Support p_nPN_Support := ? + ) := { + { + id := id_NPN_Support, + criticality := reject, + extensionValue := { NPN_Support := p_nPN_Support } + } + } // End of template mw_pLMNSupportItemw_id_NPN_Support + + template (present) PLMNSupportItem.iE_Extensions mw_pLMNSupportItemw_id_ExtendedSliceSupportList( + template (present) ExtendedSliceSupportList p_extendedSliceSupportList := ? + ) := { + { + id := id_ExtendedSliceSupportList, + criticality := reject, + extensionValue := { ExtendedSliceSupportList := p_extendedSliceSupportList } + } + } // End of template mw_pLMNSupportItemw_id_ExtendedSliceSupportList + + template (present) PLMNSupportItem.iE_Extensions mw_pLMNSupportItemw_id_OnboardingSupport( + template (present) OnboardingSupport p_onboardingSupport := ? + ) := { + { + id := id_OnboardingSupport, + criticality := ignore, + extensionValue := { OnboardingSupport := p_onboardingSupport } + } + } // End of template mw_pLMNSupportItemw_id_OnboardingSupport + + template (present) PNI_NPN_MobilityInformation mw_pNI_NPN_MobilityInformation( + template (present) Allowed_PNI_NPN_List p_allowed_PNI_NPI_List := ?, + template PNI_NPN_MobilityInformation.iE_Extensions p_iE_Extensions := * + ) := { + allowed_PNI_NPI_List := p_allowed_PNI_NPI_List, + iE_Extensions := p_iE_Extensions + } // End of template mw_pNI_NPN_MobilityInformation + + template (present) Pre_emptionCapability mw_pre_emptionCapability(template (present) Pre_emptionCapability p_value := ?) := p_value; + + template (present) Pre_emptionVulnerability mw_pre_emptionVulnerability(template (present) Pre_emptionVulnerability p_value := ?) := p_value; + + template (present) PWSFailedCellIDList mw_pWSFailedCellIDList_nR_CGI_PWSFailedList( + template (present) NR_CGIList p_nR_CGI_PWSFailedList := ? + ) := { + nR_CGI_PWSFailedList := p_nR_CGI_PWSFailedList + } // End of template mw_pWSFailedCellIDList_nR_CGI_PWSFailedList + + template (present) PWSFailedCellIDList mw_pWSFailedCellIDList_eUTRA_CGI_PWSFailedList( + template (present) EUTRA_CGIList p_eUTRA_CGI_PWSFailedList := ? + ) := { + eUTRA_CGI_PWSFailedList := p_eUTRA_CGI_PWSFailedList + } // End of template mw_pWSFailedCellIDList_eUTRA_CGI_PWSFailedList + + template (present) PWSFailedCellIDList mw_pWSFailedCellIDList_choice_Extensions( + template (present) PWSFailedCellIDList.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_pWSFailedCellIDList_choice_Extensions + + template (present) QMCConfigInfo mw_qMCConfigInfo( + template (present) UEAppLayerMeasInfoList p_uEAppLayerMeasInfoList := ?, + template QMCConfigInfo.iE_Extensions p_iE_Extensions := * + ) := { + uEAppLayerMeasInfoList := p_uEAppLayerMeasInfoList, + iE_Extensions := p_iE_Extensions + } // End of template mw_qMCConfigInfo + + template (present) QMCDeactivation mw_qMCDeactivation( + template (present) QoEReferenceList p_qoEReferenceList := ?, + template QMCDeactivation.iE_Extensions p_iE_Extensions := * + ) := { + qoEReferenceList := p_qoEReferenceList, + iE_Extensions := p_iE_Extensions + } // End of template mw_qMCDeactivation + + template (present) QosCharacteristics mw_qosCharacteristics_nonDynamic5QI( + template (present) NonDynamic5QIDescriptor p_nonDynamic5QI := ? + ) := { + nonDynamic5QI := p_nonDynamic5QI + } // End of template mw_qosCharacteristics_nonDynamic5QI + + template (present) QosCharacteristics mw_qosCharacteristics_dynamic5QI( + template (present) Dynamic5QIDescriptor p_dynamic5QI := ? + ) := { + dynamic5QI := p_dynamic5QI + } // End of template mw_qosCharacteristics_dynamic5QI + + template (present) QosCharacteristics mw_qosCharacteristics_choice_Extensions( + template (present) QosCharacteristics.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_qosCharacteristics_choice_Extensions + + template (present) QosFlowAcceptedItem mw_qosFlowAcceptedItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template QosFlowAcceptedItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template + + template (present) QosFlowAcceptedItem.iE_Extensions mw_pLMNSupportItemw_id_CurrentQoSParaSetIndex( + template (present) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex := ? + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template mw_pLMNSupportItemw_id_ExtendedSliceSupportList + + template (present) QosFlowAddOrModifyRequestItem mw_qosFlowAddOrModifyRequestItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template QosFlowLevelQosParameters p_qosFlowLevelQosParameters := *, + template E_RAB_ID p_e_RAB_ID := *, + template QosFlowAddOrModifyRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + qosFlowLevelQosParameters := p_qosFlowLevelQosParameters, + e_RAB_ID := p_e_RAB_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowAddOrModifyRequestItem + + template (present) QosFlowAddOrModifyRequestItem.iE_Extensions mw_qosFlowAddOrModifyRequestItemw_id_TSCTrafficCharacteristics( + template (present) TSCTrafficCharacteristics p_tSCTrafficCharacteristics := ? + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + } + } // End of template mw_qosFlowAddOrModifyRequestItemw_id_TSCTrafficCharacteristics + + template (present) QosFlowAddOrModifyRequestItem.iE_Extensions mw_qosFlowAddOrModifyRequestItemw_id_RedundantQosFlowIndicator( + template (present) RedundantQosFlowIndicator p_redundantQosFlowIndicator := ? + ) := { + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template mw_qosFlowAddOrModifyRequestItemw_id_RedundantQosFlowIndicator + + template (present) QosFlowAddOrModifyRequestItem.iE_Extensions mw_qosFlowAddOrModifyRequestItemw_full( + template (present) TSCTrafficCharacteristics p_tSCTrafficCharacteristics := ?, + template (present) RedundantQosFlowIndicator p_redundantQosFlowIndicator := ? + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + }, + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template mw_qosFlowAddOrModifyRequestItemw_full + + template (present) QosFlowAddOrModifyResponseItem mw_qosFlowAddOrModifyResponseItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template QosFlowAddOrModifyResponseItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowAddOrModifyResponseItem + + template (present) QosFlowAddOrModifyResponseItem.iE_Extensions mw_qosFlowAddOrModifyResponseItemw_id_CurrentQoSParaSetIndex( + template (present) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex := ? + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template mw_qosFlowAddOrModifyResponseItemw_id_CurrentQoSParaSetIndex + + template (present) QosFlowFeedbackItem mw_qosFlowFeedbackItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template UpdateFeedback p_updateFeedback := *, + template ExtendedPacketDelayBudget p_cNpacketDelayBudgetDL := *, + template ExtendedPacketDelayBudget p_cNpacketDelayBudgetUL := *, + template QosFlowFeedbackItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + updateFeedback := p_updateFeedback, + cNpacketDelayBudgetDL := p_cNpacketDelayBudgetDL, + cNpacketDelayBudgetUL := p_cNpacketDelayBudgetUL, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowFeedbackItem + + template (present) QosFlowInformationItem mw_qosFlowInformationItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template DLForwarding p_dLForwarding := *, + template QosFlowInformationItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + dLForwarding := p_dLForwarding, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowInformationItem + + template (present) QosFlowInformationItem.iE_Extensions mw_qosFlowInformationItemw_id_ULForwarding( + template (present) ULForwarding p_uLForwarding := ? + ) := { + { + id := id_ULForwarding, + criticality := ignore, + extensionValue := { ULForwarding := p_uLForwarding } + } + } // End of template mw_qosFlowInformationItemw_id_ULForwarding + + template (present) QosFlowInformationItem.iE_Extensions mw_qosFlowInformationItemw_id_SourceTNLAddrInfo( + template (present) TransportLayerAddress p_transportLayerAddress := ? + ) := { + { + id := id_SourceTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template mw_qosFlowInformationItemw_id_SourceTNLAddrInfo + + template (present) QosFlowInformationItem.iE_Extensions mw_qosFlowInformationItemw_id_SourceNodeTNLAddrInfo( + template (present) TransportLayerAddress p_transportLayerAddress := ? + ) := { + { + id := id_SourceNodeTNLAddrInfo, + criticality := ignore, + extensionValue := { TransportLayerAddress := p_transportLayerAddress } + } + } // End of template mw_qosFlowInformationItemw_id_SourceNodeTNLAddrInfo + + template (present) QosFlowLevelQosParameters mw_qosFlowLevelQosParameters( + template (present) QosCharacteristics p_qosCharacteristics := ?, + template (present) AllocationAndRetentionPriority p_allocationAndRetentionPriority := ?, + template GBR_QosInformation p_gBR_QosInformation := *, + template ReflectiveQosAttribute p_reflectiveQosAttribute := *, + template AdditionalQosFlowInformation p_additionalQosFlowInformation := *, + template QosFlowLevelQosParameters.iE_Extensions p_iE_Extensions := * + ) := { + qosCharacteristics := p_qosCharacteristics, + allocationAndRetentionPriority := p_allocationAndRetentionPriority, + gBR_QosInformation := p_gBR_QosInformation, + reflectiveQosAttribute := p_reflectiveQosAttribute, + additionalQosFlowInformation := p_additionalQosFlowInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowLevelQosParameters + + template (present) QosFlowLevelQosParameters.iE_Extensions mw_qosFlowLevelQosParameters_id_QosMonitoringRequest( + template (present) QosMonitoringRequest p_qosMonitoringRequest := ? + ) := { + { + id := id_QosMonitoringRequest, + criticality := ignore, + extensionValue := { QosMonitoringRequest := p_qosMonitoringRequest } + } + } // End of template mw_qosFlowLevelQosParameters_id_QosMonitoringRequest + + template (present) QosFlowLevelQosParameters.iE_Extensions mw_qosFlowLevelQosParameters_id_QosMonitoringReportingFrequency( + template (present) QosMonitoringReportingFrequency p_qosMonitoringReportingFrequency := ? + ) := { + { + id := id_QosMonitoringReportingFrequency, + criticality := ignore, + extensionValue := { QosMonitoringReportingFrequency := p_qosMonitoringReportingFrequency } + } + } // End of template mw_qosFlowLevelQosParameters_id_QosMonitoringReportingFrequency + + template (present) QosFlowLevelQosParameters.iE_Extensions mw_qosFlowLevelQosParameters_full( + template (present) QosMonitoringRequest p_qosMonitoringRequest := ?, + template (present) QosMonitoringReportingFrequency p_qosMonitoringReportingFrequency := ? + ) := { + { + id := id_QosMonitoringRequest, + criticality := ignore, + extensionValue := { QosMonitoringRequest := p_qosMonitoringRequest } + }, + { + id := id_QosMonitoringReportingFrequency, + criticality := ignore, + extensionValue := { QosMonitoringReportingFrequency := p_qosMonitoringReportingFrequency } + } + } // End of template mw_qosFlowLevelQosParameters_full + + template (present) QosMonitoringRequest mw_qosMonitoringRequest(template (present) QosMonitoringRequest p_value := ?) := p_value; + + template (present) QosFlowWithCauseItem mw_qosFlowWithCauseItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template (present) Cause p_cause := ?, + template QosFlowWithCauseItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowWithCauseItem + + template (present) QosFlowModifyConfirmItem mw_qosFlowModifyConfirmItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template QosFlowModifyConfirmItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowModifyConfirmItem + + template (present) QosFlowNotifyItem mw_qosFlowNotifyItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template (present) NotificationCause p_notificationCause := ?, + template QosFlowNotifyItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + notificationCause := p_notificationCause, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowNotifyItem + + template (present) QosFlowNotifyItem.iE_Extensions mw_qosFlowNotifyItemw_id_CurrentQoSParaSetIndex( + template (present) AlternativeQoSParaSetNotifyIndex p_alternativeQoSParaSetNotifyIndex := ? + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetNotifyIndex := p_alternativeQoSParaSetNotifyIndex } + } + } // End of template mw_qosFlowNotifyItemw_id_CurrentQoSParaSetIndex + + template (present) QosFlowParametersItem mw_qosFlowParametersItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template AlternativeQoSParaSetList p_alternativeQoSParaSetList := *, + template QosFlowParametersItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + alternativeQoSParaSetList := p_alternativeQoSParaSetList, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowParametersItem + + template (present) QosFlowParametersItem.iE_Extensions mw_qosFlowParametersItemw_id_CNPacketDelayBudgetDL( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_CNPacketDelayBudgetDL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_qosFlowParametersItemw_id_CNPacketDelayBudgetDL + + template (present) QosFlowParametersItem.iE_Extensions mw_qosFlowParametersItemw_id_CNPacketDelayBudgetUL( + template (present) ExtendedPacketDelayBudget p_extendedPacketDelayBudget := ? + ) := { + { + id := id_CNPacketDelayBudgetUL, + criticality := ignore, + extensionValue := { ExtendedPacketDelayBudget := p_extendedPacketDelayBudget } + } + } // End of template mw_qosFlowParametersItemw_id_CNPacketDelayBudgetUL + + template (present) QosFlowParametersItem.iE_Extensions mw_qosFlowParametersItemw_id_BurstArrivalTimeDownlink( + template (present) BurstArrivalTime p_burstArrivalTime := ? + ) := { + { + id := id_BurstArrivalTimeDownlink, + criticality := ignore, + extensionValue := { BurstArrivalTime := p_burstArrivalTime } + } + } // End of template mw_qosFlowParametersItemw_id_BurstArrivalTimeDownlink + + template (present) QosFlowPerTNLInformation mw_qosFlowPerTNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ?, + template (present) AssociatedQosFlowList p_associatedQosFlowList := ?, + template QosFlowPerTNLInformation.iE_Extensions p_iE_Extensions := * + ) := { + uPTransportLayerInformation := p_uPTransportLayerInformation, + associatedQosFlowList := p_associatedQosFlowList, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowPerTNLInformation + + template (present) QosFlowPerTNLInformationItem mw_qosFlowPerTNLInformationItem( + template (present) QosFlowPerTNLInformation p_qosFlowPerTNLInformation := ?, + template QosFlowPerTNLInformationItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowPerTNLInformation := p_qosFlowPerTNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowPerTNLInformationItem + + template (present) QosFlowSetupRequestItem mw_qosFlowSetupRequestItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template (present) QosFlowLevelQosParameters p_qosFlowLevelQosParameters := ?, + template E_RAB_ID p_e_RAB_ID := *, + template QosFlowSetupRequestItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + qosFlowLevelQosParameters := p_qosFlowLevelQosParameters, + e_RAB_ID := p_e_RAB_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowSetupRequestItem + + template (present) QosFlowSetupRequestItem.iE_Extensions mw_qosFlowSetupRequestItemw_id_TSCTrafficCharacteristics( + template (present) TSCTrafficCharacteristics p_tSCTrafficCharacteristics := ? + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + } + } // End of template mw_qosFlowSetupRequestItemw_id_TSCTrafficCharacteristics + + template (present) QosFlowSetupRequestItem.iE_Extensions mw_qosFlowSetupRequestItemw_id_RedundantQosFlowIndicator( + template (present) RedundantQosFlowIndicator p_redundantQosFlowIndicator := ? + ) := { + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template mw_qosFlowSetupRequestItemw_id_RedundantQosFlowIndicator + + template (present) QosFlowSetupRequestItem.iE_Extensions mw_qosFlowSetupRequestItemw_full( + template (present) TSCTrafficCharacteristics p_tSCTrafficCharacteristics := ?, + template (present) RedundantQosFlowIndicator p_redundantQosFlowIndicator := ? + ) := { + { + id := id_TSCTrafficCharacteristics, + criticality := ignore, + extensionValue := { TSCTrafficCharacteristics := p_tSCTrafficCharacteristics } + }, + { + id := id_RedundantQosFlowIndicator, + criticality := ignore, + extensionValue := { RedundantQosFlowIndicator := p_redundantQosFlowIndicator } + } + } // End of template mw_qosFlowSetupRequestItemw_full + + template (present) QosFlowItemWithDataForwarding mw_qosFlowItemWithDataForwarding( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template DataForwardingAccepted p_dataForwardingAccepted := *, + template QosFlowItemWithDataForwarding.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + dataForwardingAccepted := p_dataForwardingAccepted, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowItemWithDataForwarding + + template (present) QosFlowItemWithDataForwarding.iE_Extensions mw_qosFlowItemWithDataForwarding_id_CurrentQoSParaSetIndex( + template (present) AlternativeQoSParaSetIndex p_alternativeQoSParaSetIndex := ? + ) := { + { + id := id_CurrentQoSParaSetIndex, + criticality := ignore, + extensionValue := { AlternativeQoSParaSetIndex := p_alternativeQoSParaSetIndex } + } + } // End of template mw_qosFlowItemWithDataForwarding_id_CurrentQoSParaSetIndex + + template (present) QosFlowToBeForwardedItem mw_qosFlowToBeForwardedItem( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template QosFlowToBeForwardedItem.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + iE_Extensions := p_iE_Extensions + } // End of template mw_qosFlowToBeForwardedItem + + template (present) QoSFlowsUsageReport_Item mw_qoSFlowsUsageReport_Item( + template (present) QosFlowIdentifier p_qosFlowIdentifier := ?, + template (present) QoSFlowsUsageReport_Item.rATType p_rATType := ?, + template (present) VolumeTimedReportList p_qoSFlowsTimedReportList := ?, + template QoSFlowsUsageReport_Item.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowIdentifier := p_qosFlowIdentifier, + rATType := p_rATType, + qoSFlowsTimedReportList := p_qoSFlowsTimedReportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_qoSFlowsUsageReport_Item + + + template (present) Range mw_range(template (present) Range p_value := ?) := p_value; + + template (present) RANStatusTransfer_TransparentContainer mw_rANStatusTransfer_TransparentContainer( + template (present) DRBsSubjectToStatusTransferList p_dRBsSubjectToStatusTransferList := ?, + template RANStatusTransfer_TransparentContainer.iE_Extensions p_iE_Extensions := * + ) := { + dRBsSubjectToStatusTransferList := p_dRBsSubjectToStatusTransferList, + iE_Extensions := p_iE_Extensions + } // End of template mw_rANStatusTransfer_TransparentContainer + + template (present) RAT_Information mw_rAT_Information(template (present) RAT_Information p_value := ?) := p_value; + + template (present) RATRestrictions_Item mw_rATRestrictions_Item( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) RATRestrictionInformation p_rATRestrictionInformation := ?, + template RATRestrictions_Item.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + rATRestrictionInformation := p_rATRestrictionInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_rATRestrictions_Item + + template (present) RATRestrictions_Item.iE_Extensions mw_rATRestrictions_Item_id_ExtendedRATRestrictionInformation( + template (present) ExtendedRATRestrictionInformation p_extendedRATRestrictionInformation := ? + ) := { + { + id := id_ExtendedRATRestrictionInformation, + criticality := ignore, + extensionValue := { ExtendedRATRestrictionInformation := p_extendedRATRestrictionInformation } + } + } // End of template mw_rATRestrictions_Item_id_ExtendedRATRestrictionInformation + + template (present) RecommendedCellsForPaging mw_recommendedCellsForPaging( + template (present) RecommendedCellList p_recommendedCellList := ?, + template RecommendedCellsForPaging.iE_Extensions p_iE_Extensions := * + ) := { + recommendedCellList := p_recommendedCellList, + iE_Extensions := p_iE_Extensions + } // End of template mw_recommendedCellsForPaging + + template (present) RecommendedCellItem mw_recommendedCellItem( + template (present) NGRAN_CGI p_nGRAN_CGI := ?, + template RecommendedCellItem.timeStayedInCell p_timeStayedInCell := *, + template RecommendedCellItem.iE_Extensions p_iE_Extensions := * + ) := { + nGRAN_CGI := p_nGRAN_CGI, + timeStayedInCell := p_timeStayedInCell, + iE_Extensions := p_iE_Extensions + } // End of template mw_recommendedCellItem + + template (present) RecommendedRANNodesForPaging mw_recommendedRANNodesForPaging( + template (present) RecommendedRANNodeList p_recommendedRANNodeList := ?, + template RecommendedRANNodesForPaging.iE_Extensions p_iE_Extensions := * + ) := { + recommendedRANNodeList := p_recommendedRANNodeList, + iE_Extensions := p_iE_Extensions + } // End of template mw_recommendedRANNodesForPaging + + template (present) RecommendedRANNodeItem mw_recommendedRANNodeItem( + template (present) AMFPagingTarget p_aMFPagingTarget := ?, + template RecommendedRANNodeItem.iE_Extensions p_iE_Extensions := * + ) := { + aMFPagingTarget := p_aMFPagingTarget, + iE_Extensions := p_iE_Extensions + } // End of template mw_recommendedRANNodeItem + + template (present) RedCapIndication mw_redCapIndication(template (present) RedCapIndication p_value := redcap) := p_value; + + template (present) RedirectionVoiceFallback mw_redirectionVoiceFallback(template (present) RedirectionVoiceFallback p_value := ?) := p_value; + + template (present) RedundantPDUSessionInformation mw_redundantPDUSessionInformation( + template (present) RSN p_rSN := ?, + template RedundantPDUSessionInformation.iE_Extensions p_iE_Extensions := * + ) := { + rSN := p_rSN, + iE_Extensions := p_iE_Extensions + } // End of template mw_redundantPDUSessionInformation + + template (present) RedundantPDUSessionInformation.iE_Extensions mw_redundantPDUSessionInformation_id_PDUSessionPairID( + template (present) PDUSessionPairID p_pDUSessionPairID := ? + ) := { + { + id := id_PDUSessionPairID, + criticality := ignore, + extensionValue := { PDUSessionPairID := p_pDUSessionPairID } + } + } // End of template m_redundantPDUSessionInformation_id_PDUSessionPairID + + template (present) RedundantQosFlowIndicator mw_RedundantQosFlowIndicator(template (present) RedundantQosFlowIndicator p_value := ?) := p_value; + + template (present) ReflectiveQosAttribute mw_reflectiveQosAttribute(template (present) ReflectiveQosAttribute p_value := ?) := p_value; + + template (present) ReportArea mw_reportArea(template (present) ReportArea p_value := ?) := p_value; + + template (present) ResetAll mw_resetAll(template (present) ResetAll p_value := ?) := p_value; + + template (present) ReportAmountMDT mw_reportAmountMDT(template (present) ReportAmountMDT p_value := ?) := p_value; + + template (present) ReportIntervalMDT mw_reportIntervalMDT(template (present) ReportIntervalMDT p_value := ?) := p_value; + + template (present) ExtendedReportIntervalMDT mw_extendedReportIntervalMDT(template (present) ExtendedReportIntervalMDT p_value := ?) := p_value; + + template (present) ResetType mw_resetType_nG_Interface( + template (present) ResetAll p_nG_Interface := ? + ) := { + nG_Interface := p_nG_Interface + } // End of template mw_resetType_nG_Interface + + template (present) ResetType mw_resetType_partOfNG_Interface( + template (present) UE_associatedLogicalNG_connectionList p_partOfNG_Interface := ? + ) := { + partOfNG_Interface := p_partOfNG_Interface + } // End of template mw_resetType_partOfNG_Interface + + template (present) ResetType mw_resetType_choice_Extensions( + template (present) ResetType.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_resetType_choice_Extensions + + template (present) RRCEstablishmentCause mw_rRCEstablishmentCause(template (present) RRCEstablishmentCause p_value := ?) := p_value; + + template (present) RRCInactiveTransitionReportRequest mw_rRCInactiveTransitionReportRequest(template (present) RRCInactiveTransitionReportRequest p_value := ?) := p_value; + + template (present) RRCState mw_rRCState(template (present) RRCState p_value := ?) := p_value; + + template (present) RSN mw_rSN(template (present) RSN p_value := ?) := p_value; + + template (present) RIMInformationTransfer mw_rIMInformationTransfer( + template (present) TargetRANNodeID_RIM p_targetRANNodeID_RIM := ?, + template (present) SourceRANNodeID p_sourceRANNodeID := ?, + template (present) RIMInformation p_rIMInformation := ?, + template RIMInformationTransfer.iE_Extensions p_iE_Extensions := * + ) := { + targetRANNodeID_RIM := p_targetRANNodeID_RIM, + sourceRANNodeID := p_sourceRANNodeID, + rIMInformation := p_rIMInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_rIMInformationTransfer + + template (present) RIMInformation mw_rIMInformation( + template (present) GNBSetID p_targetgNBSetID := ?, + template (present) RIMInformation.rIM_RSDetection p_rIM_RSDetection := ?, + template RIMInformation.iE_Extensions p_iE_Extensions := * + ) := { + targetgNBSetID := p_targetgNBSetID, + rIM_RSDetection := p_rIM_RSDetection, + iE_Extensions := p_iE_Extensions + } // End of template mw_rIMInformation + + template ScheduledCommunicationTime mw_scheduledCommunicationTime( + template ScheduledCommunicationTime.dayofWeek p_dayofWeek := *, + template ScheduledCommunicationTime.timeofDayStart p_timeofDayStart := *, + template ScheduledCommunicationTime.timeofDayEnd p_timeofDayEnd := *, + template ScheduledCommunicationTime.iE_Extensions p_iE_Extensions := * + ) := { + dayofWeek := p_dayofWeek, + timeofDayStart := p_timeofDayStart, + timeofDayEnd := p_timeofDayEnd, + iE_Extensions := p_iE_Extensions + } // End of template mw_scheduledCommunicationTime + + template SecondaryRATUsageInformation mw_secondaryRATUsageInformation( + template PDUSessionUsageReport p_pDUSessionUsageReport := *, + template QoSFlowsUsageReportList p_qosFlowsUsageReportList := *, + template SecondaryRATUsageInformation.iE_Extension p_iE_Extensions := * + ) := { + pDUSessionUsageReport := p_pDUSessionUsageReport, + qosFlowsUsageReportList := p_qosFlowsUsageReportList, + iE_Extension := p_iE_Extensions + } // End of template mw_secondaryRATUsageInformation + + template SecondaryRATDataUsageReportTransfer mw_secondaryRATDataUsageReportTransfer( + template SecondaryRATUsageInformation p_secondaryRATUsageInformation := *, + template SecondaryRATDataUsageReportTransfer.iE_Extensions p_iE_Extensions := * + ) := { + secondaryRATUsageInformation := p_secondaryRATUsageInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_secondaryRATDataUsageReportTransfer + + template (present) SecurityContext mw_securityContext( + template (present) NextHopChainingCount p_nextHopChainingCount := ?, + template (present) SecurityKey p_nextHopNH := ?, + template SecurityContext.iE_Extensions p_iE_Extensions := * + ) := { + nextHopChainingCount := p_nextHopChainingCount, + nextHopNH := p_nextHopNH, + iE_Extensions := p_iE_Extensions + } // End of template mw_securityContext + + template (present) SecurityIndication mw_securityIndication( + template (present) IntegrityProtectionIndication p_integrityProtectionIndication := ?, + template (present) ConfidentialityProtectionIndication p_confidentialityProtectionIndication := ?, + template MaximumIntegrityProtectedDataRate p_maximumIntegrityProtectedDataRate_UL := *, + template SecurityIndication.iE_Extensions p_iE_Extensions := * + ) := { + integrityProtectionIndication := p_integrityProtectionIndication, + confidentialityProtectionIndication := p_confidentialityProtectionIndication, + maximumIntegrityProtectedDataRate_UL := p_maximumIntegrityProtectedDataRate_UL, + // The above IE shall be present if integrity protection is required or preferred + iE_Extensions := p_iE_Extensions + } // End of template mw_securityIndication + + template (present) SecurityIndication.iE_Extensions mw_securityIndication_id_MaximumIntegrityProtectedDataRate_DL( + template (present) MaximumIntegrityProtectedDataRate p_maximumIntegrityProtectedDataRate := ? + ) := { + { + id := id_MaximumIntegrityProtectedDataRate_DL, + criticality := ignore, + extensionValue := { MaximumIntegrityProtectedDataRate := p_maximumIntegrityProtectedDataRate } + } + } // End of template mw_securityIndication_id_MaximumIntegrityProtectedDataRate_DL + + template (present) SecurityResult mw_securityResult( + template (present) IntegrityProtectionResult p_integrityProtectionResult := ?, + template (present) ConfidentialityProtectionResult p_confidentialityProtectionResult := ?, + template SecurityResult.iE_Extensions p_iE_Extensions := * + ) := { + integrityProtectionResult := p_integrityProtectionResult, + confidentialityProtectionResult := p_confidentialityProtectionResult, + iE_Extensions := p_iE_Extensions + } // End of template mw_securityResult + + template (present) SensorMeasurementConfiguration mw_sensorMeasurementConfiguration( + template (present) SensorMeasConfig p_sensorMeasConfig := ?, + template SensorMeasConfigNameList p_sensorMeasConfigNameList := *, + template SensorMeasurementConfiguration.iE_Extensions p_iE_Extensions := * + ) := { + sensorMeasConfig := p_sensorMeasConfig, + sensorMeasConfigNameList := p_sensorMeasConfigNameList, + iE_Extensions := p_iE_Extensions + } // End of template mw_sensorMeasurementConfiguration + + template (present) SensorMeasConfigNameItem mw_sensorMeasConfigNameItem( + template (present) SensorNameConfig p_sensorNameConfig := ?, + template SensorMeasConfigNameItem.iE_Extensions p_iE_Extensions := * + ) := { + sensorNameConfig := p_sensorNameConfig, + iE_Extensions := p_iE_Extensions + } // End of template mw_sensorMeasConfigNameItem + + template (present) SensorMeasConfig mw_sensorMeasConfig(template (present) SensorMeasConfig p_value := setup) := p_value; + + template (present) SensorNameConfig mw_sensorNameConfig_uncompensatedBarometricConfig( + template (present) SensorNameConfig.uncompensatedBarometricConfig p_uncompensatedBarometricConfig := true_ + ) := { + uncompensatedBarometricConfig := p_uncompensatedBarometricConfig + } // End of template mw_sensorNameConfig_uncompensatedBarometricConfig + + template (present) SensorNameConfig mw_sensorNameConfig_ueSpeedConfig( + template (present) SensorNameConfig.ueSpeedConfig p_ueSpeedConfig := true_ + ) := { + ueSpeedConfig := p_ueSpeedConfig + } // End of template mw_sensorNameConfig_ueSpeedConfig + + template (present) SensorNameConfig mw_sensorNameConfig_ueOrientationConfig( + template (present) SensorNameConfig.ueOrientationConfig p_ueOrientationConfig := true_ + ) := { + ueOrientationConfig := p_ueOrientationConfig + } // End of template mw_sensorNameConfig_ueOrientationConfig + + template (present) SensorNameConfig mw_sensorNameConfig_choice_Extensions( + template (present) SensorNameConfig.choice_Extensions p_choice_Extensions + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_sensorNameConfig_choice_Extensions + + template (present) ServedGUAMIItem mw_servedGUAMIItem( + template (present) GUAMI p_gUAMI := ?, + template AMFName p_backupAMFName := *, + template ServedGUAMIItem.iE_Extensions p_iE_Extensions := * + ) := { + gUAMI := p_gUAMI, + backupAMFName := p_backupAMFName, + iE_Extensions := p_iE_Extensions + } // End of template mw_servedGUAMIItem + + template (present) ServedGUAMIItem.iE_Extensions mw_servedGUAMIItemw_id_GUAMIType( + template (present) GUAMIType p_gUAMIType := ? + ) := { + { + id := id_GUAMIType, + criticality := ignore, + extensionValue := { GUAMIType := p_gUAMIType } + } + } // End of template mw_servedGUAMIItemw_id_GUAMIType + + template (present) ServiceAreaInformation_Item mw_serviceAreaInformation_Item( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template AllowedTACs p_allowedTACs := *, + template NotAllowedTACs p_notAllowedTACs := *, + template ServiceAreaInformation_Item.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + allowedTACs := p_allowedTACs, + notAllowedTACs := p_notAllowedTACs, + iE_Extensions := p_iE_Extensions + } // End of template mw_serviceAreaInformation_Item + + template (present) ServiceType mw_serviceType(template (present) ServiceType p_value := streaming) := p_value; + + template (present) SharedNGU_MulticastTNLInformation mw_sharedNGU_MulticastTNLInformation( + template (present) TransportLayerAddress p_iP_MulticastAddress := ?, + template (present) TransportLayerAddress p_iP_SourceAddress := ?, + template (present) GTP_TEID p_gTP_TEID := ?, + template SharedNGU_MulticastTNLInformation.iE_Extensions p_iE_Extensions := * + ) := { + iP_MulticastAddress := p_iP_MulticastAddress, + iP_SourceAddress := p_iP_SourceAddress, + gTP_TEID := p_gTP_TEID, + iE_Extensions := p_iE_Extensions + } // End of template mw_sharedNGU_MulticastTNLInformation + + template (present) SliceOverloadItem mw_sliceOverloadItem( + template (present) S_NSSAI p_s_NSSAI := ?, + template SliceOverloadItem.iE_Extensions p_iE_Extensions := * + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_sliceOverloadItem + + template (present) SliceSupportItem mw_sliceSupportItem( + template (present) S_NSSAI p_s_NSSAI := ?, + template SliceSupportItem.iE_Extensions p_iE_Extensions := * + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_sliceSupportItem + + template (present) SliceSupportQMC_Item mw_sliceSupportQMC_Item( + template (present) S_NSSAI p_s_NSSAI := ?, + template SliceSupportQMC_Item.iE_Extensions p_iE_Extensions := * + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_sliceSupportQMC_Item + + template (present) SNPN_MobilityInformation mw_sNPN_MobilityInformation( + template (present) NID p_serving_NID := ?, + template SNPN_MobilityInformation.iE_Extensions p_iE_Extensions := * + ) := { + serving_NID := p_serving_NID, + iE_Extensions := p_iE_Extensions + } // End of template mw_sNPN_MobilityInformation + + template (present) S_NSSAI mw_s_NSSAI( + template (present) SST p_sST := ?, + template SD p_sD := *, + template S_NSSAI.iE_Extensions p_iE_Extensions := * + ) := { + sST := p_sST, + sD := p_sD, + iE_Extensions := p_iE_Extensions + } // End of template mw_s_NSSAI + + template (present) SONConfigurationTransfer mw_sONConfigurationTransfer( + template (present) TargetRANNodeID_SON p_targetRANNodeID_SON := ?, + template (present) SourceRANNodeID p_sourceRANNodeID := ?, + template (present) SONInformation p_sONInformation := ?, + template XnTNLConfigurationInfo p_xnTNLConfigurationInfo := *, + template SONConfigurationTransfer.iE_Extensions p_iE_Extensions := * + ) := { + targetRANNodeID_SON := p_targetRANNodeID_SON, + sourceRANNodeID := p_sourceRANNodeID, + sONInformation := p_sONInformation, + xnTNLConfigurationInfo := p_xnTNLConfigurationInfo, + // The above IE shall be present if the SON Information IE contains the SON Information Request IE set to “Xn TNL Configuration Info” + iE_Extensions := p_iE_Extensions + } // End of template mw_sONConfigurationTransfer + + template (present) SONInformation mw_sONInformation_sONInformationRequest( + template (present) SONInformationRequest p_sONInformationRequest := ? + ) := { + sONInformationRequest := p_sONInformationRequest + } // End of template mw_sONInformation_sONInformationRequest + + template (present) SONInformation mw_sONInformation_sONInformationReply( + template (present) SONInformationReply p_sONInformationReply := ? + ) := { + sONInformationReply := p_sONInformationReply + } // End of template mw_sONInformation_sONInformationReply + + template (present) SONInformation mw_sONInformation_choice_Extensions( + template (present) SONInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_sONInformation_choice_Extensions + + template (present) SONInformation.choice_Extensions mw_sONInformatio_id_SONInformationReport( + template (present) SONInformationReport p_sONInformationReport := ? + ) := { + id := id_SONInformationReport, + criticality := ignore, + value_ := { SONInformationReport := p_sONInformationReport } + } // End of template mw_sONInformatio_id_SONInformationReport + + template SONInformationReply mw_sONInformationReply( + template XnTNLConfigurationInfo p_xnTNLConfigurationInfo := *, + template SONInformationReply.iE_Extensions p_iE_Extensions := * + ) := { + xnTNLConfigurationInfo := p_xnTNLConfigurationInfo, + iE_Extensions := p_iE_Extensions + } // End of template mw_sONInformationReply + + template (present) SONInformationReport mw_sONInformationReport_failureIndicationInformation( + template (present) FailureIndication p_failureIndicationInformation := ? + ) := { + failureIndicationInformation := p_failureIndicationInformation + } // End of template mw_sONInformationReport_failureIndicationInformation + + template (present) SONInformationReport mw_sONInformationReport_hOReportInformation( + template (present) HOReport p_hOReportInformation := ? + ) := { + hOReportInformation := p_hOReportInformation + } // End of template mw_sONInformationReport_hOReportInformation + + template (present) SONInformationReport mw_sONInformationReport_choice_Extensions( + template (present) SONInformationReport.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_sONInformationReport_choice_Extensions + + template (present) SONInformationReport.choice_Extensions mw_sONInformationReport_id_SONInformationReport( + template (present) SuccessfulHandoverReportList p_successfulHandoverReportList := ? + ) := { + id := id_SONInformationReport, + criticality := ignore, + value_ := { SuccessfulHandoverReportList := p_successfulHandoverReportList } + } // End of template mw_sONInformationReport_id_SONInformationReport + + template (present) SuccessfulHandoverReport_Item mw_successfulHandoverReport_Item( + template (present) octetstring p_successfulHOReportContainer := ?, + template SuccessfulHandoverReport_Item.iE_Extensions p_iE_Extensions := * + ) := { + successfulHOReportContainer := p_successfulHOReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template mw_successfulHandoverReport_Item + + template (present) SONInformationRequest mw_sONInformationRequest(template (present) SONInformationRequest p_value := ?) := p_value; + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer( + template (present) NGRAN_CGI p_targetCell_ID := ?, + template (present) RRCContainer p_rRCContainer := ?, + template (present) UEHistoryInformation p_uEHistoryInformation := ?, + template PDUSessionResourceInformationList p_pDUSessionResourceInformationList := *, + template E_RABInformationList p_e_RABInformationList := *, + template IndexToRFSP p_indexToRFSP := *, + template SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions p_iE_Extensions := * + ):= { + rRCContainer := p_rRCContainer, + pDUSessionResourceInformationList := p_pDUSessionResourceInformationList, + e_RABInformationList := p_e_RABInformationList, + targetCell_ID := p_targetCell_ID, + indexToRFSP := p_indexToRFSP, + uEHistoryInformation := p_uEHistoryInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SgNB_UE_X2AP_ID( + template (present) SgNB_UE_X2AP_ID p_sgNB_UE_X2AP_ID := ? + ) := { + { + id := id_SgNB_UE_X2AP_ID, + criticality := ignore, + extensionValue := { SgNB_UE_X2AP_ID := p_sgNB_UE_X2AP_ID } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SgNB_UE_X2AP_ID + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEHistoryInformationFromTheUE( + template (present) UEHistoryInformationFromTheUE p_uEHistoryInformationFromTheUE := ? + ) := { + { + id := id_UEHistoryInformationFromTheUE, + criticality := ignore, + extensionValue := { UEHistoryInformationFromTheUE := p_uEHistoryInformationFromTheUE } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEHistoryInformationFromTheUE + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SourceNodeID( + template (present) SourceNodeID p_sourceNodeID := ? + ) := { + { + id := id_SourceNodeID, + criticality := ignore, + extensionValue := { SourceNodeID := p_sourceNodeID } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_SourceNodeID + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEContextReferenceAtSource( + template (present) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := ? + ) := { + { + id := id_UEContextReferenceAtSource, + criticality := ignore, + extensionValue := { RAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_UEContextReferenceAtSource + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_SourcetoTargetList( + template (present) MBS_ActiveSessionInformation_SourcetoTargetList p_mBS_ActiveSessionInformation_SourcetoTargetListD := ? + ) := { + { + id := id_MBS_ActiveSessionInformation_SourcetoTargetList, + criticality := ignore, + extensionValue := { MBS_ActiveSessionInformation_SourcetoTargetList := p_mBS_ActiveSessionInformation_SourcetoTargetListD } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_SourcetoTargetList + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_QMCConfigInfo( + template (present) QMCConfigInfo p_qMCConfigInfo := ? + ) := { + { + id := id_QMCConfigInfo, + criticality := ignore, + extensionValue := { QMCConfigInfo := p_qMCConfigInfo } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_QMCConfigInfo + + template (present) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer.iE_Extensions mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_NGAPIESupportInformationRequestList( + template (present) NGAPIESupportInformationRequestList p_nGAPIESupportInformationRequestList := ? + ) := { + { + id := id_NGAPIESupportInformationRequestList, + criticality := ignore, + extensionValue := { NGAPIESupportInformationRequestList := p_nGAPIESupportInformationRequestList } + } + } // End of template mw_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer_id_NGAPIESupportInformationRequestList + + template (present) SourceNodeID mw_sourceNodeID_sourceengNB_ID( + template (present) GlobalGNB_ID p_sourceengNB_ID := ? + ) := { + sourceengNB_ID := p_sourceengNB_ID + } // End of template mw_sourceNodeID_sourceengNB_ID + + template (present) SourceNodeID mw_sourceNodeID_choice_Extensions( + template (present) SourceNodeID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_sourceNodeID_choice_Extensions + + template (present) SourceOfUEActivityBehaviourInformation mw_sourceOfUEActivityBehaviourInformation(template (present) SourceOfUEActivityBehaviourInformation p_value := ?) := p_value; + + template (present) SourceRANNodeID mw_sourceRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) TAI p_selectedTAI := ?, + template SourceRANNodeID.iE_Extensions p_iE_Extensions := * + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_sourceRANNodeID + + // This IE includes a transparent container from the source RAN node to the target RAN node. + // The octets of the OCTET STRING are encoded according to the specifications of the target system. + + template SourceToTarget_AMFInformationReroute mw_sourceToTarget_AMFInformationReroute( + template ConfiguredNSSAI p_configuredNSSAI := *, + template RejectedNSSAIinPLMN p_rejectedNSSAIinPLMN := *, + template RejectedNSSAIinTA p_rejectedNSSAIinTA := *, + template SourceToTarget_AMFInformationReroute.iE_Extensions p_iE_Extensions := * + ) := { + configuredNSSAI := p_configuredNSSAI, + rejectedNSSAIinPLMN := p_rejectedNSSAIinPLMN, + rejectedNSSAIinTA := p_rejectedNSSAIinTA, + iE_Extensions := p_iE_Extensions + } // End of template mw_sourceToTarget_AMFInformationReroute + + // This IE includes information from the source Core node to the target Core node for reroute information provide by NSSF. + // The octets of the OCTET STRING are encoded according to the specifications of the Core network. + + template (present) SRVCCOperationPossible mw_sRVCCOperationPossible(template (present) SRVCCOperationPossible p_value := ?) := p_value; + + template (present) SupportedTAItem mw_supportedTAItem( + template (present) TAC p_tAC := ?, + template (present) BroadcastPLMNList p_broadcastPLMNList := ?, + template SupportedTAItem.iE_Extensions p_iE_Extensions := * + ) := { + tAC := p_tAC, + broadcastPLMNList := p_broadcastPLMNList, + iE_Extensions := p_iE_Extensions + } // End of template mw_supportedTAItem + + template (present) SupportedTAItem.iE_Extensions mw_supportedTAItemw_id_ConfiguredTACIndication( + template (present) ConfiguredTACIndication p_configuredTACIndication := ? + ) := { + { + id := id_ConfiguredTACIndication, + criticality := ignore, + extensionValue := { ConfiguredTACIndication := p_configuredTACIndication } + } + } // End of template mw_supportedTAItemw_id_ConfiguredTACIndication + + template (present) SupportedTAItem.iE_Extensions mw_supportedTAItemw_id_RAT_Information( + template (present) RAT_Information p_rAT_Information := ? + ) := { + { + id := id_RAT_Information, + criticality := reject, + extensionValue := { RAT_Information := p_rAT_Information } + } + } // End of template mw_supportedTAItemw_id_RAT_Information + + template (present) SupportedTAItem.iE_Extensions mw_supportedTAItemw_full( + template (present) ConfiguredTACIndication p_configuredTACIndication := ?, + template (present) RAT_Information p_rAT_Information := ? + ) := { + { + id := id_ConfiguredTACIndication, + criticality := ignore, + extensionValue := { ConfiguredTACIndication := p_configuredTACIndication } + }, + { + id := id_RAT_Information, + criticality := reject, + extensionValue := { RAT_Information := p_rAT_Information } + } + } // End of template mw_supportedTAItemw_full + + template (present) SuspendIndicator mw_suspendIndicator(template (present) SuspendIndicator p_value := true_) := p_value; + + template (present) Suspend_Request_Indication mw_suspend_Request_Indication(template (present) Suspend_Request_Indication p_value := suspend_requested) := p_value; + + template (present) Suspend_Response_Indication mw_suspend_Response_Indication(template (present) Suspend_Response_Indication p_value := suspend_indicated) := p_value; + + template (present) TAI mw_tAI( + template (present) PLMNIdentity p_pLMNIdentity := ?, + template (present) TAC p_tAC := ?, + template TAI.iE_Extensions p_iE_Extensions := * + ) := { + pLMNIdentity := p_pLMNIdentity, + tAC := p_tAC, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAI + + template (present) TAIBroadcastEUTRA_Item mw_tAIBroadcastEUTRA_Item( + template (present) TAI p_tAI := ?, + template (present) CompletedCellsInTAI_EUTRA p_completedCellsInTAI_EUTRA := ?, + template TAIBroadcastEUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + completedCellsInTAI_EUTRA := p_completedCellsInTAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAIBroadcastEUTRA_Item + + template (present) TAIBroadcastNR_Item mw_tAIBroadcastNR_Item( + template (present) TAI p_tAI := ?, + template (present) CompletedCellsInTAI_NR p_completedCellsInTAI_NR := ?, + template TAIBroadcastNR_Item.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + completedCellsInTAI_NR := p_completedCellsInTAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAIBroadcastNR_Item + + template (present) TAICancelledEUTRA_Item mw_tAICancelledEUTRA_Item( + template (present) TAI p_tAI := ?, + template (present) CancelledCellsInTAI_EUTRA p_cancelledCellsInTAI_EUTRA := ?, + template TAICancelledEUTRA_Item.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + cancelledCellsInTAI_EUTRA := p_cancelledCellsInTAI_EUTRA, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAICancelledEUTRA_Item + + template (present) TAICancelledNR_Item mw_tAICancelledNR_Item( + template (present) TAI p_tAI := ?, + template (present) CancelledCellsInTAI_NR p_cancelledCellsInTAI_NR := ?, + template TAICancelledNR_Item.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + cancelledCellsInTAI_NR := p_cancelledCellsInTAI_NR, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAICancelledNR_Item + + template (present) TAIListForInactiveItem mw_tAIListForInactiveItem( + template (present) TAI p_tAI := ?, + template TAIListForInactiveItem.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAIListForInactiveItem + + template (present) TAIListForPagingItem mw_tAIListForPagingItem( + template (present) TAI p_tAI := ?, + template TAIListForPagingItem.iE_Extensions p_iE_Extensions := * + ) := { + tAI := p_tAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAIListForPagingItem + + template (present) TAINSAGSupportItem mw_tAINSAGSupportItem( + template (present) NSAG_ID p_nSAG_ID := ?, + template (present) ExtendedSliceSupportList p_nSAGSliceSupportList := ?, + template TAINSAGSupportItem.iE_Extensions p_iE_Extensions := * + ) := { + nSAG_ID := p_nSAG_ID, + nSAGSliceSupportList := p_nSAGSliceSupportList, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAINSAGSupportItem + + template (present) TargeteNB_ID mw_targeteNB_ID( + template (present) GlobalNgENB_ID p_globalENB_ID := ?, + template (present) EPS_TAI p_selected_EPS_TAI := ?, + template TargeteNB_ID.iE_Extensions p_iE_Extensions := * + ) := { + globalENB_ID := p_globalENB_ID, + selected_EPS_TAI := p_selected_EPS_TAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_targeteNB_ID + + template (present) TargetHomeENB_ID mw_targetHomeENB_ID( + template (present) PLMNIdentity p_pLMNidentity := ?, + template (present) TargetHomeENB_ID.homeENB_ID p_homeENB_ID := ?, + template (present) EPS_TAI p_selected_EPS_TAI := ?, + template TargetHomeENB_ID.iE_Extensions p_iE_Extensions := * + ) := { + pLMNidentity := p_pLMNidentity, + homeENB_ID := p_homeENB_ID, + selected_EPS_TAI := p_selected_EPS_TAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetHomeENB_ID + + template (present) TargetID mw_targetID_targetRANNodeID( + template (present) TargetRANNodeID p_targetRANNodeID := ? + ) := { + targetRANNodeID := p_targetRANNodeID + } // End of template mw_targetID_targetRANNodeID + + template (present) TargetID mw_targetID_targeteNB_ID( + template (present) TargeteNB_ID p_targeteNB_ID := ? + ) := { + targeteNB_ID := p_targeteNB_ID + } // End of template mw_targetID_targeteNB_ID + + template (present) TargetID mw_targetID_choice_Extensions( + template (present) TargetID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_targetID_choice_Extensions + + template (present) TargetID.choice_Extensions mw_targetID_id_TargetRNC_ID( + template (present) TargetRNC_ID p_targetRNC_ID := ? + ) := { + id := id_TargetRNC_ID, + criticality := reject, + value_ := { TargetRNC_ID := p_targetRNC_ID } + } // End of template mw_sONInformationReport_id_SONInformationReport + + template (present) TargetID.choice_Extensions mw_targetID_id_TargetHomeENB_ID( + template (present) TargetHomeENB_ID p_targetHomeENB_ID := ? + ) := { + id := id_TargetHomeENB_ID, + criticality := reject, + value_ := { TargetHomeENB_ID := p_targetHomeENB_ID } + } // End of template mw_sONInformationReport_id_TargetHomeENB_ID + + template (present) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer( + template (present) RRCContainer p_rRCContainer := ?, + template TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions p_iE_Extensions := * + ) := { + rRCContainer := p_rRCContainer, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer + + template (present) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DAPSResponseInfoList( + template (present) DAPSResponseInfoList p_dAPSResponseInfoList := ? + ) := { + { + id := id_ConfiguredTACIndication, + criticality := ignore, + extensionValue := { DAPSResponseInfoList := p_dAPSResponseInfoList } + } + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DAPSResponseInfoList + + template (present) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DirectForwardingPathAvailability( + template (present) DirectForwardingPathAvailability p_directForwardingPathAvailability := ? + ) := { + { + id := id_DirectForwardingPathAvailability, + criticality := ignore, + extensionValue := { DirectForwardingPathAvailability := p_directForwardingPathAvailability } + } + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_DirectForwardingPathAvailability + + template (present) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_TargettoSourceList( + template (present) MBS_ActiveSessionInformation_TargettoSourceList p_mBS_ActiveSessionInformation_TargettoSourceList := ? + ) := { + { + id := id_MBS_ActiveSessionInformation_TargettoSourceList, + criticality := ignore, + extensionValue := { MBS_ActiveSessionInformation_TargettoSourceList := p_mBS_ActiveSessionInformation_TargettoSourceList } + } + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_MBS_ActiveSessionInformation_TargettoSourceList + + template (present) TargetNGRANNode_ToSourceNGRANNode_TransparentContainer.iE_Extensions mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_NGAPIESupportInformationResponseList( + template (present) NGAPIESupportInformationResponseList p_nGAPIESupportInformationResponseList := ? + ) := { + { + id := id_NGAPIESupportInformationResponseList, + criticality := ignore, + extensionValue := { NGAPIESupportInformationResponseList := p_nGAPIESupportInformationResponseList } + } + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_TransparentContainer_id_NGAPIESupportInformationResponseList + + template TargetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer mw_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer( + template Cell_CAGInformation p_cell_CAGInformation := *, + template TargetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer.iE_Extensions p_iE_Extensions := * + ) := { + cell_CAGInformation := p_cell_CAGInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer + + template (present) TargetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer.iE_Extensions mw_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer_id_NGAPIESupportInformationResponseList( + template (present) NGAPIESupportInformationResponseList p_nGAPIESupportInformationResponseList := ? + ) := { + { + id := id_NGAPIESupportInformationResponseList, + criticality := ignore, + extensionValue := { NGAPIESupportInformationResponseList := p_nGAPIESupportInformationResponseList } + } + } // End of template mw_targetNGRANNode_ToSourceNGRANNode_FailureTransparentContainer_id_NGAPIESupportInformationResponseList + + template (present) TargetNSSAI_Item mw_targetNSSAI_Item( + template (present) S_NSSAI p_s_NSSAI := ?, + template TargetNSSAI_Item.iE_Extensions p_iE_Extensions := * + ) := { + s_NSSAI := p_s_NSSAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetNSSAI_Item + + template (present) TargetNSSAIInformation mw_targetNSSAIInformation( + template (present) TargetNSSAI p_targetNSSAI := ?, + template (present) IndexToRFSP p_indexToRFSP := ?, + template TargetNSSAIInformation.iE_Extensions p_iE_Extensions := * + ) := { + targetNSSAI := p_targetNSSAI, + indexToRFSP := p_indexToRFSP, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetNSSAIInformation + + template (present) TargetRANNodeID mw_targetRANNodeID( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) TAI p_selectedTAI := ?, + template TargetRANNodeID.iE_Extensions p_iE_Extensions := * + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetRANNodeID + + template (present) TargetRANNodeID_RIM mw_targetRANNodeID_RIM( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) TAI p_selectedTAI := ?, + template TargetRANNodeID_RIM.iE_Extensions p_iE_Extensions := * + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetRANNodeID_RIM + + template (present) TargetRANNodeID_SON mw_targetRANNodeID_SON( + template (present) GlobalRANNodeID p_globalRANNodeID := ?, + template (present) TAI p_selectedTAI := ?, + template TargetRANNodeID_SON.iE_Extensions p_iE_Extensions := * + ) := { + globalRANNodeID := p_globalRANNodeID, + selectedTAI := p_selectedTAI, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetRANNodeID_SON + + template (present) TargetRANNodeID_SON.iE_Extensions mw_targetRANNodeID_SON_id_NR_CGI( + template (present) NR_CGI p_nR_CGI := ? + ) := { + { + id := id_NR_CGI, + criticality := ignore, + extensionValue := { NR_CGI := p_nR_CGI } + } + } // End of template mw_targetRANNodeID_SON_id_NR_CGI + + template (present) TargetRNC_ID mw_targetRNC_ID( + template (present) LAI p_lAI := ?, + template (present) RNC_ID p_rNC_ID := ?, + template ExtendedRNC_ID p_extendedRNC_ID := *, + template TargetRNC_ID.iE_Extensions p_iE_Extensions := * + ) := { + lAI := p_lAI, + rNC_ID := p_rNC_ID, + extendedRNC_ID := p_extendedRNC_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_targetRNC_ID + + template (present) TimerApproachForGUAMIRemoval mw_timerApproachForGUAMIRemoval(template (present) TimerApproachForGUAMIRemoval p_value := ?) := p_value; + + template (present) TimeSyncAssistanceInfo mw_timeSyncAssistanceInfo( + template (present) TimeSyncAssistanceInfo.timeDistributionIndication p_timeDistributionIndication := enabled, + template TimeSyncAssistanceInfo.uUTimeSyncErrorBudget p_uUTimeSyncErrorBudget := *, + template TimeSyncAssistanceInfo.iE_Extensions p_iE_Extensions := * + ) := { + timeDistributionIndication := p_timeDistributionIndication, + uUTimeSyncErrorBudget := p_uUTimeSyncErrorBudget, + // The above IE shall be present if the Time Distribution Indication IE is set to the value “enabled” + iE_Extensions := p_iE_Extensions + } // End of template mw_timeSyncAssistanceInfo + + template (present) TimeToWait mw_timeToWait(template (present) TimeToWait p_value := ?) := p_value; + + template (present) TNGF_ID mw_tNGF_ID_tNGF_ID( + template (present) TNGF_ID.tNGF_ID p_tNGF_ID := ? + ) := { + tNGF_ID := p_tNGF_ID + } // End of template mw_tNGF_ID_tNGF_ID + + template (present) TNGF_ID mw_tNGF_ID_choice_Extensions( + template (present) TNGF_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_tNGF_ID_choice_Extensions + + template (present) TNLAssociationItem mw_tNLAssociationItem( + template (present) CPTransportLayerInformation p_tNLAssociationAddress := ?, + template (present) Cause p_cause := ?, + template TNLAssociationItem.iE_Extensions p_iE_Extensions := * + ) := { + tNLAssociationAddress := p_tNLAssociationAddress, + cause := p_cause, + iE_Extensions := p_iE_Extensions + } // End of template mw_tNLAssociationItem + + template (present) TNLAssociationUsage mw_TNLAssociationUsage(template (present) TNLAssociationUsage p_value := ?) := p_value; + + template (present) TooearlyIntersystemHO mw_tooearlyIntersystemHO( + template (present) EUTRA_CGI p_sourcecellID := ?, + template (present) NGRAN_CGI p_failurecellID := ?, + template UERLFReportContainer p_uERLFReportContainer := *, + template TooearlyIntersystemHO.iE_Extensions p_iE_Extensions := * + ) := { + sourcecellID := p_sourcecellID, + failurecellID := p_failurecellID, + uERLFReportContainer := p_uERLFReportContainer, + iE_Extensions := p_iE_Extensions + } // End of template mw_tooearlyIntersystemHO + + template (present) TraceActivation mw_traceActivation( + template (present) NGRANTraceID p_nGRANTraceID := ?, + template (present) InterfacesToTrace p_interfacesToTrace := ?, + template (present) TraceDepth p_traceDepth := ?, + template (present) TransportLayerAddress p_traceCollectionEntityIPAddress := ?, + template TraceActivation.iE_Extensions p_iE_Extensions := * + ) := { + nGRANTraceID := p_nGRANTraceID, + interfacesToTrace := p_interfacesToTrace, + traceDepth := p_traceDepth, + traceCollectionEntityIPAddress := p_traceCollectionEntityIPAddress, + iE_Extensions := p_iE_Extensions + } // End of template mw_traceActivation + + template (present) TraceActivation.iE_Extensions mw_traceActivation_id_MDTConfiguration( + template (present) MDT_Configuration p_mDT_Configuration := ? + ) := { + { + id := id_MDTConfiguration, + criticality := ignore, + extensionValue := { MDT_Configuration := p_mDT_Configuration } + } + } // End of template mw_traceActivation_id_MDTConfiguration + + template (present) TraceActivation.iE_Extensions mw_traceActivation_id_TraceCollectionEntityURI( + template (present) URI_address p_uRI_address := ? + ) := { + { + id := id_TraceCollectionEntityURI, + criticality := ignore, + extensionValue := { URI_address := p_uRI_address } + } + } // End of template mw_traceActivation_id_TraceCollectionEntityURI + + template (present) TraceActivation.iE_Extensions mw_traceActivation_full( + template (present) MDT_Configuration p_mDT_Configuration := ?, + template (present) URI_address p_uRI_address := ? + ) := { + { + id := id_MDTConfiguration, + criticality := ignore, + extensionValue := { MDT_Configuration := p_mDT_Configuration } + },{ + id := id_TraceCollectionEntityURI, + criticality := ignore, + extensionValue := { URI_address := p_uRI_address } + } + } // End of template mw_traceActivation_full + + template (present) TraceDepth mw_traceDepth(template (present) TraceDepth p_value := ?) := p_value; + + template (present) TypeOfError mw_typeOfError(template (present) TypeOfError p_value := ?) := p_value; + + template (present) TAIBasedMDT mw_tAIBasedMDT( + template (present) TAIListforMDT p_tAIListforMDT := ?, + template TAIBasedMDT.iE_Extensions p_iE_Extensions := * + ) := { + tAIListforMDT := p_tAIListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAIBasedMDT + + template (present) TAIBasedQMC mw_tAIBasedQMC( + template (present) TAIListforQMC p_tAIListforQMC := ?, + template TAIBasedQMC.iE_Extensions p_iE_Extensions := * + ) := { + tAIListforQMC := p_tAIListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template mw_tAIBasedQMC + + template (present) TABasedQMC mw_tABasedQMC( + template (present) TAListforQMC p_tAListforQMC := ?, + template TABasedQMC.iE_Extensions p_iE_Extensions := * + ) := { + tAListforQMC := p_tAListforQMC, + iE_Extensions := p_iE_Extensions + } // End of template mw_tABasedQMC + + template (present) TABasedMDT mw_tABasedMDT( + template (present) TAListforMDT p_tAListforMDT := ?, + template TABasedMDT.iE_Extensions p_iE_Extensions := * + ) := { + tAListforMDT := p_tAListforMDT, + iE_Extensions := p_iE_Extensions + } // End of template mw_tABasedMDT + + template (present) TimeToTrigger mw_timeToTrigger(template (present) TimeToTrigger p_value := ?) := p_value; + + template (present) TWIF_ID mw_tWIF_ID_tWIF_ID( + template (present) TWIF_ID.tWIF_ID p_tWIF_ID := ? + ) := { + tWIF_ID := p_tWIF_ID + } // End of template mw_tWIF_ID_tWIF_ID + + template (present) TWIF_ID mw_tWIF_ID_choice_Extensions( + template (present) TWIF_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_tWIF_ID_choice_Extensions + + template (present) TSCAssistanceInformation mw_tSCAssistanceInformation( + template (present) Periodicity p_periodicity := ?, + template BurstArrivalTime p_burstArrivalTime := *, + template TSCAssistanceInformation.iE_Extensions p_iE_Extensions := * + ) := { + periodicity := p_periodicity, + burstArrivalTime := p_burstArrivalTime, + iE_Extensions := p_iE_Extensions + } // End of template mw_tSCAssistanceInformation + + template (present) TSCAssistanceInformation.iE_Extensions mw_tSCAssistanceInformation_id_SurvivalTime( + template (present) SurvivalTime p_survivalTime := ? + ) := { + { + id := id_SurvivalTime, + criticality := ignore, + extensionValue := { SurvivalTime := p_survivalTime } + } + } // End of template mw_tSCAssistanceInformation_id_SurvivalTime + + template TSCTrafficCharacteristics mw_tSCTrafficCharacteristics( + template TSCAssistanceInformation p_tSCAssistanceInformationDL := *, + template TSCAssistanceInformation p_tSCAssistanceInformationUL := *, + template TSCTrafficCharacteristics.iE_Extensions p_iE_Extensions := * + ) := { + tSCAssistanceInformationDL := p_tSCAssistanceInformationDL, + tSCAssistanceInformationUL := p_tSCAssistanceInformationUL, + iE_Extensions := p_iE_Extensions + } // End of template mw_tSCTrafficCharacteristics + + template (present) UEAggregateMaximumBitRate mw_uEAggregateMaximumBitRate( + template (present) BitRate p_uEAggregateMaximumBitRateDL := ?, + template (present) BitRate p_uEAggregateMaximumBitRateUL := ?, + template UEAggregateMaximumBitRate.iE_Extensions p_iE_Extensions := * + ) := { + uEAggregateMaximumBitRateDL := p_uEAggregateMaximumBitRateDL, + uEAggregateMaximumBitRateUL := p_uEAggregateMaximumBitRateUL, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEAggregateMaximumBitRate + + template (present) UEAppLayerMeasInfoItem mw_uEAppLayerMeasInfoItem( + template (present) UEAppLayerMeasConfigInfo p_uEAppLayerMeasConfigInfo := ?, + template UEAppLayerMeasInfoItem.iE_Extensions p_iE_Extensions := * + ) := { + uEAppLayerMeasConfigInfo := p_uEAppLayerMeasConfigInfo, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEAppLayerMeasInfoItem + + template (present) UEAppLayerMeasConfigInfo mw_uEAppLayerMeasConfigInfo( + template (present) QoEReference p_qoEReference := ?, + template (present) TransportLayerAddress p_measCollEntityIPAddress := ?, + template ServiceType p_serviceType, + template AreaScopeOfQMC p_areaScopeOfQMC := *, + template UEAppLayerMeasConfigInfo.qoEMeasurementStatus p_qoEMeasurementStatus := *, + template UEAppLayerMeasConfigInfo.containerForAppLayerMeasConfig p_containerForAppLayerMeasConfig := *, + template UEAppLayerMeasConfigInfo.measConfigAppLayerID p_measConfigAppLayerID := *, + template SliceSupportListQMC p_sliceSupportListQMC := *, + template MDT_AlignmentInfo p_mDT_AlignmentInfo := *, + template AvailableRANVisibleQoEMetrics p_availableRANVisibleQoEMetrics := *, + template UEAppLayerMeasConfigInfo.iE_Extensions p_iE_Extensions := * + ) := { + qoEReference := p_qoEReference, + serviceType := p_serviceType, + areaScopeOfQMC := p_areaScopeOfQMC, + measCollEntityIPAddress := p_measCollEntityIPAddress, + qoEMeasurementStatus := p_qoEMeasurementStatus, + containerForAppLayerMeasConfig := p_containerForAppLayerMeasConfig, + measConfigAppLayerID := p_measConfigAppLayerID, + sliceSupportListQMC := p_sliceSupportListQMC, + mDT_AlignmentInfo := p_mDT_AlignmentInfo, + availableRANVisibleQoEMetrics := p_availableRANVisibleQoEMetrics, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEAppLayerMeasConfigInfo + + template UE_associatedLogicalNG_connectionItem mw_uE_associatedLogicalNG_connectionItem( + template AMF_UE_NGAP_ID p_aMF_UE_NGAP_ID := *, + template RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := *, + template UE_associatedLogicalNG_connectionItem.iE_Extensions p_iE_Extensions := * + ) := { + aMF_UE_NGAP_ID := p_aMF_UE_NGAP_ID, + rAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_uE_associatedLogicalNG_connectionItem + + template (present) UECapabilityInfoRequest mw_uECapabilityInfoRequest(template (present) UECapabilityInfoRequest p_value := requested) := p_value; + + template (present) UEContextRequest mw_uEContextRequest(template (present) UEContextRequest p_value := requested) := p_value; + + template UEContextResumeRequestTransfer mw_uEContextResumeRequestTransfer( + template QosFlowListWithCause p_qosFlowFailedToResumeList := *, + template UEContextResumeRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowFailedToResumeList := p_qosFlowFailedToResumeList, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEContextResumeRequestTransfer + + template UEContextResumeResponseTransfer mw_uEContextResumeResponseTransfer( + template QosFlowListWithCause p_qosFlowFailedToResumeList := *, + template UEContextResumeResponseTransfer.iE_Extensions p_iE_Extensions := * + ) := { + qosFlowFailedToResumeList := p_qosFlowFailedToResumeList, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEContextResumeResponseTransfer + + template UEContextSuspendRequestTransfer mw_uEContextSuspendRequestTransfer( + template SuspendIndicator p_suspendIndicator := *, + template UEContextSuspendRequestTransfer.iE_Extensions p_iE_Extensions := * + ) := { + suspendIndicator := p_suspendIndicator, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEContextSuspendRequestTransfer + + template UE_DifferentiationInfo mw_uE_DifferentiationInfo( + template UE_DifferentiationInfo.periodicCommunicationIndicator p_periodicCommunicationIndicator := *, + template UE_DifferentiationInfo.periodicTime p_periodicTime := *, + template UE_DifferentiationInfo.scheduledCommunicationTime p_scheduledCommunicationTime := *, + template UE_DifferentiationInfo.stationaryIndication p_stationaryIndication := *, + template UE_DifferentiationInfo.trafficProfile p_trafficProfile := *, + template UE_DifferentiationInfo.batteryIndication p_batteryIndication := *, + template UE_DifferentiationInfo.iE_Extensions p_iE_Extensions := * + ) := { + periodicCommunicationIndicator := p_periodicCommunicationIndicator, + periodicTime := p_periodicTime, + scheduledCommunicationTime := p_scheduledCommunicationTime, + stationaryIndication := p_stationaryIndication, + trafficProfile := p_trafficProfile, + batteryIndication := p_batteryIndication, + iE_Extensions := p_iE_Extensions + } // End of template mw_uE_DifferentiationInfo + + template (present) UEHistoryInformationFromTheUE mw_uEHistoryInformationFromTheUE_nR( + template (present) NRMobilityHistoryReport p_nR := ? + ) := { + nR := p_nR + } // End of template mw_uEHistoryInformationFromTheUE_nR + + template (present) UEHistoryInformationFromTheUE mw_uEHistoryInformationFromTheUE_choice_Extensions( + template (present) UEHistoryInformationFromTheUE.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_uEHistoryInformationFromTheUE_choice_Extensions + + template (present) UEIdentityIndexValue mw_uEIdentityIndexValue_indexLength10( + template (present) UEIdentityIndexValue.indexLength10 p_indexLength10 := ? + ) := { + indexLength10 := p_indexLength10 + } // End of template mw_uEIdentityIndexValue_indexLength10 + + template (present) UEIdentityIndexValue mw_uEIdentityIndexValue_choice_Extensions( + template (present) UEIdentityIndexValue.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_uEIdentityIndexValue_choice_Extensions + + template (present) UE_NGAP_IDs mw_uE_NGAP_IDs_uE_NGAP_ID_pair( + template (present) UE_NGAP_ID_pair p_uE_NGAP_ID_pair := ? + ) := { + uE_NGAP_ID_pair := p_uE_NGAP_ID_pair + } // End of template mw_uE_NGAP_IDs_uE_NGAP_ID_pair + + template (present) UE_NGAP_IDs mw_uE_NGAP_IDs_aMF_UE_NGAP_ID( + template (present) AMF_UE_NGAP_ID p_aMF_UE_NGAP_ID := ? + ) := { + aMF_UE_NGAP_ID := p_aMF_UE_NGAP_ID + } // End of template mw_uE_NGAP_IDs_aMF_UE_NGAP_ID + + template (present) UE_NGAP_IDs mw_uE_NGAP_IDs_choice_Extensions( + template (present) UE_NGAP_IDs.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_uE_NGAP_IDs_choice_Extensions + + template (present) UE_NGAP_ID_pair mw_uE_NGAP_ID_pair( + template (present) AMF_UE_NGAP_ID p_aMF_UE_NGAP_ID := ?, + template (present) RAN_UE_NGAP_ID p_rAN_UE_NGAP_ID := ?, + template UE_NGAP_ID_pair.iE_Extensions p_iE_Extensions := * + ) := { + aMF_UE_NGAP_ID := p_aMF_UE_NGAP_ID, + rAN_UE_NGAP_ID := p_rAN_UE_NGAP_ID, + iE_Extensions := p_iE_Extensions + } // End of template mw_uE_NGAP_ID_pair + + template (present) UEPagingIdentity mw_uEPagingIdentity_fiveG_S_TMSI( + template (present) FiveG_S_TMSI p_fiveG_S_TMSI := ? + ) := { + fiveG_S_TMSI := p_fiveG_S_TMSI + } // End of template mw_uEPagingIdentity_fiveG_S_TMSI + + template (present) UEPagingIdentity mw_uEPagingIdentity_choice_Extensions( + template (present) UEPagingIdentity.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_uEPagingIdentity_choice_Extensions + + template (present) UEPresence mw_uEPresence(template (present) UEPresence p_value := in_) := p_value; + + template (present) UEPresenceInAreaOfInterestItem mw_uEPresenceInAreaOfInterestItem( + template (present) LocationReportingReferenceID p_locationReportingReferenceID := ?, + template (present) UEPresence p_uEPresence := ?, + template UEPresenceInAreaOfInterestItem.iE_Extensions p_iE_Extensions := * + ) := { + locationReportingReferenceID := p_locationReportingReferenceID, + uEPresence := p_uEPresence, + iE_Extensions := p_iE_Extensions + } // End of template mw_uEPresenceInAreaOfInterestItem + + template UERadioCapabilityForPaging mw_uERadioCapabilityForPaging( + template UERadioCapabilityForPagingOfNR p_uERadioCapabilityForPagingOfNR := *, + template UERadioCapabilityForPagingOfEUTRA p_uERadioCapabilityForPagingOfEUTRA := *, + template UERadioCapabilityForPaging.iE_Extensions p_iE_Extensions := * + ) := { + uERadioCapabilityForPagingOfNR := p_uERadioCapabilityForPagingOfNR, + uERadioCapabilityForPagingOfEUTRA := p_uERadioCapabilityForPagingOfEUTRA, + iE_Extensions := p_iE_Extensions + } // End of template mw_uERadioCapabilityForPaging + + template (present) UERadioCapabilityForPaging.iE_Extensions mw_uERadioCapabilityForPaging_id_UERadioCapabilityForPagingOfNB_IoT( + template (present) UERadioCapabilityForPagingOfNB_IoT p_uERadioCapabilityForPagingOfNB_IoT := ? + ) := { + { + id := id_UERadioCapabilityForPagingOfNB_IoT, + criticality := ignore, + extensionValue := { UERadioCapabilityForPagingOfNB_IoT := p_uERadioCapabilityForPagingOfNB_IoT } + } + } // End of template mw_uERadioCapabilityForPaging_id_UERadioCapabilityForPagingOfNB_IoT + + template (present) UERetentionInformation mw_uERetentionInformation(template (present) UERetentionInformation p_value := ues_retained):= p_value; + + template (present) UERLFReportContainer mw_uERLFReportContainer_nR( + template (present) NRUERLFReportContainer p_nR := ? + ) := { + nR := p_nR + } // End of template mw_uERLFReportContainer_nR + + template (present) UERLFReportContainer mw_uERLFReportContainer_lTE( + template (present) LTEUERLFReportContainer p_lTE := ? + ) := { + lTE := p_lTE + } // End of template mw_uERLFReportContainer_lTE + + template (present) UERLFReportContainer mw_uERLFReportContainer_choice_Extensions( + template (present) UERLFReportContainer.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_uERLFReportContainer_choice_Extensions + + template (present) UESecurityCapabilities mw_uESecurityCapabilities( + template (present) NRencryptionAlgorithms p_nRencryptionAlgorithms := ?, + template (present) NRintegrityProtectionAlgorithms p_nRintegrityProtectionAlgorithms := ?, + template (present) EUTRAencryptionAlgorithms p_eUTRAencryptionAlgorithms := ?, + template (present) EUTRAintegrityProtectionAlgorithms p_eUTRAintegrityProtectionAlgorithms := ?, + template UESecurityCapabilities.iE_Extensions p_iE_Extensions := * + ) := { + nRencryptionAlgorithms := p_nRencryptionAlgorithms, + nRintegrityProtectionAlgorithms := p_nRintegrityProtectionAlgorithms, + eUTRAencryptionAlgorithms := p_eUTRAencryptionAlgorithms, + eUTRAintegrityProtectionAlgorithms := p_eUTRAintegrityProtectionAlgorithms, + iE_Extensions := p_iE_Extensions + } // End of template mw_uESecurityCapabilities + + template (present) UESliceMaximumBitRateItem mw_uESliceMaximumBitRateItem( + template (present) S_NSSAI p_s_NSSAI := ?, + template (present) BitRate p_uESliceMaximumBitRateDL := ?, + template (present) BitRate p_uESliceMaximumBitRateUL := ?, + template UESliceMaximumBitRateItem.iE_Extensions p_iE_Extensions := * + ) := { + s_NSSAI := p_s_NSSAI, + uESliceMaximumBitRateDL := p_uESliceMaximumBitRateDL, + uESliceMaximumBitRateUL := p_uESliceMaximumBitRateUL, + iE_Extensions := p_iE_Extensions + } // End of template mw_uESliceMaximumBitRateItem + + template (present) UE_UP_CIoT_Support mw_uE_UP_CIoT_Support(template (present) UE_UP_CIoT_Support p_value := supported) := p_value; + + template (present) UL_CP_SecurityInformation mw_UL_CP_SecurityInformation( + template (present) UL_NAS_MAC p_ul_NAS_MAC := ?, + template (present) UL_NAS_Count p_ul_NAS_Count := ?, + template UL_CP_SecurityInformation.iE_Extensions p_iE_Extensions := * + ) := { + ul_NAS_MAC := p_ul_NAS_MAC, + ul_NAS_Count := p_ul_NAS_Count, + iE_Extensions := p_iE_Extensions + } // End of template + + template (present) UL_NGU_UP_TNLModifyItem mw_uL_NGU_UP_TNLModifyItem( + template (present) UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := ?, + template (present) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := ?, + template UL_NGU_UP_TNLModifyItem.iE_Extensions p_iE_Extensions := * + ) := { + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_uL_NGU_UP_TNLModifyItem + + template (present) UL_NGU_UP_TNLModifyItem.iE_Extensions mw_uL_NGU_UP_TNLModifyItemw_id_RedundantUL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantUL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_uL_NGU_UP_TNLModifyItemw_id_RedundantUL_NGU_UP_TNLInformation + + template (present) UL_NGU_UP_TNLModifyItem.iE_Extensions mw_uL_NGU_UP_TNLModifyItemw_id_RedundantDL_NGU_UP_TNLInformation( + template (present) UPTransportLayerInformation p_uPTransportLayerInformation := ? + ) := { + { + id := id_RedundantDL_NGU_UP_TNLInformation, + criticality := ignore, + extensionValue := { UPTransportLayerInformation := p_uPTransportLayerInformation } + } + } // End of template mw_uL_NGU_UP_TNLModifyItemw_id_RedundantDL_NGU_UP_TNLInformation + + template (present) UnavailableGUAMIItem mw_unavailableGUAMIItem( + template (present) GUAMI p_gUAMI := ?, + template TimerApproachForGUAMIRemoval p_timerApproachForGUAMIRemoval := *, + template AMFName p_backupAMFName := *, + template UnavailableGUAMIItem.iE_Extensions p_iE_Extensions := * + ) := { + gUAMI := p_gUAMI, + timerApproachForGUAMIRemoval := p_timerApproachForGUAMIRemoval, + backupAMFName := p_backupAMFName, + iE_Extensions := p_iE_Extensions + } // End of template mw_unavailableGUAMIItem + + template (present) ULForwarding mw_uLForwarding(template (present) ULForwarding p_value := ul_forwarding_proposed) := p_value; + + template (present) UPTransportLayerInformation mw_uPTransportLayerInformation_gTPTunnel( + template (present) GTPTunnel p_gTPTunnel := ? + ) := { + gTPTunnel := p_gTPTunnel + } // End of template mw_uPTransportLayerInformation_gTPTunnel + + template (present) UPTransportLayerInformation mw_uPTransportLayerInformation_choice_Extensions( + template (present) UPTransportLayerInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_uPTransportLayerInformation_choice_Extensions + + template (present) UPTransportLayerInformationItem mw_uPTransportLayerInformationItem( + template (present) UPTransportLayerInformation p_nGU_UP_TNLInformation := ?, + template UPTransportLayerInformationItem.iE_Extensions p_iE_Extensions := * + ) := { + nGU_UP_TNLInformation := p_nGU_UP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_uPTransportLayerInformationItem + + template (present) UPTransportLayerInformationItem.iE_Extensions mw_uPTransportLayerInformationItemw_id_CommonNetworkInstance( + template (present) CommonNetworkInstance p_commonNetworkInstance := ? + ) := { + { + id := id_CommonNetworkInstance, + criticality := ignore, + extensionValue := { CommonNetworkInstance := p_commonNetworkInstance } + } + } // End of template mw_uPTransportLayerInformationItemw_id_CommonNetworkInstance + + template (present) UPTransportLayerInformationPairItem mw_uPTransportLayerInformationPairItem( + template (present) UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := ?, + template (present) UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := ?, + template UPTransportLayerInformationPairItem.iE_Extensions p_iE_Extensions := * + ) := { + uL_NGU_UP_TNLInformation := p_uL_NGU_UP_TNLInformation, + dL_NGU_UP_TNLInformation := p_dL_NGU_UP_TNLInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_uPTransportLayerInformationPairItem + + template (present) UserLocationInformation mw_uPTransportLayerInformation_userLocationInformationEUTRA( + template (present) UserLocationInformationEUTRA p_userLocationInformationEUTRA := ? + ) := { + userLocationInformationEUTRA := p_userLocationInformationEUTRA + } // End of template mw_uPTransportLayerInformation_userLocationInformationEUTRA + + template (present) UserLocationInformation mw_uPTransportLayerInformation_userLocationInformationNR( + template (present) UserLocationInformationNR p_userLocationInformationNR := ? + ) := { + userLocationInformationNR := p_userLocationInformationNR + } // End of template mw_uPTransportLayerInformation_userLocationInformationNR + + template (present) UserLocationInformation mw_uPTransportLayerInformation_userLocationInformationN3IWF( + template (present) UserLocationInformationN3IWF p_userLocationInformationN3IWF := ? + ) := { + userLocationInformationN3IWF := p_userLocationInformationN3IWF + } // End of template mw_uPTransportLayerInformation_userLocationInformationN3IWF + + template (present) UserLocationInformation mw_userLocationInformation_choice_Extensions( + template (present) UserLocationInformation.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_userLocationInformation_choice_Extensions + + template (present) UserLocationInformation.choice_Extensions mw_userLocationInformation_id_UserLocationInformationTNGF( + template (present) UserLocationInformationTNGF p_userLocationInformationTNGF := ? + ) := { + id := id_UserLocationInformationTNGF, + criticality := ignore, + value_ := { UserLocationInformationTNGF := p_userLocationInformationTNGF } + } // End of template mw_userLocationInformation_id_UserLocationInformationTNGF + + template (present) UserLocationInformation.choice_Extensions mw_userLocationInformation_id_UserLocationInformationTWIF( + template (present) UserLocationInformationTWIF p_userLocationInformationTWIF := ? + ) := { + id := id_UserLocationInformationTWIF, + criticality := ignore, + value_ := { UserLocationInformationTWIF := p_userLocationInformationTWIF } + } // End of template mw_userLocationInformation_id_UserLocationInformationTWIF + + template (present) UserLocationInformation.choice_Extensions mw_userLocationInformation_id_UserLocationInformationW_AGF( + template (present) UserLocationInformationW_AGF p_userLocationInformationW_AGF := ? + ) := { + id := id_UserLocationInformationW_AGF, + criticality := ignore, + value_ := { UserLocationInformationW_AGF := p_userLocationInformationW_AGF } + } // End of template mw_userLocationInformation_id_UserLocationInformationW_AGF + + template (present) UserLocationInformationEUTRA mw_userLocationInformationEUTRA( + template (present) EUTRA_CGI p_eUTRA_CGI := ?, + template (present) TAI p_tAI := ?, + template TimeStamp p_timeStamp := *, + template UserLocationInformationEUTRA.iE_Extensions p_iE_Extensions := * + ) := { + eUTRA_CGI := p_eUTRA_CGI, + tAI := p_tAI, + timeStamp := p_timeStamp, + iE_Extensions := p_iE_Extensions + } // End of template mw_userLocationInformationEUTRA + + template (present) UserLocationInformationEUTRA.iE_Extensions mw_userLocationInformationEUTRA_id_PSCellInformation( + template (present) NGRAN_CGI p_nGRAN_CGI := ? + ) := { + { + id := id_PSCellInformation, + criticality := ignore, + extensionValue := { NGRAN_CGI := p_nGRAN_CGI } + } + } // End of template mw_userLocationInformationEUTRA_id_PSCellInformation + + template (present) UserLocationInformationN3IWF mw_userLocationInformationN3IWF( + template (present) TransportLayerAddress p_iPAddress := ?, + template (present) PortNumber p_portNumber := ?, + template UserLocationInformationN3IWF.iE_Extensions p_iE_Extensions := * + ) := { + iPAddress := p_iPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template mw_userLocationInformationN3IWF + + template (present) UserLocationInformationN3IWF.iE_Extensions mw_userLocationInformationN3IWF_id_TAI( + template (present) TAI p_tAI := ? + ) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template mw_userLocationInformationN3IWF_id_TAI + + template (present) UserLocationInformationTNGF mw_userLocationInformationTNGF( + template (present) TNAP_ID p_tNAP_ID := ?, + template (present) TransportLayerAddress p_iPAddress := ?, + template (present) PortNumber p_portNumber := ?, + template UserLocationInformationTNGF.iE_Extensions p_iE_Extensions := * + ) := { + tNAP_ID := p_tNAP_ID, + iPAddress := p_iPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template mw_userLocationInformationTNGF + + template (present) UserLocationInformationTNGF.iE_Extensions mw_userLocationInformationTNGF_id_TAI( + template (present) TAI p_tAI := ? + ) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template mw_userLocationInformationTNGF_id_TAI + + template (present) UserLocationInformationTWIF mw_userLocationInformationTWIF( + template (present) TWAP_ID p_tWAP_ID := ?, + template (present) TransportLayerAddress p_iPAddress := ?, + template (present) PortNumber p_portNumber := ?, + template UserLocationInformationTWIF.iE_Extensions p_iE_Extensions := * + ) := { + tWAP_ID := p_tWAP_ID, + iPAddress := p_iPAddress, + portNumber := p_portNumber, + iE_Extensions := p_iE_Extensions + } // End of template mw_userLocationInformationTWIF + + template (present) UserLocationInformationTWIF.iE_Extensions mw_userLocationInformationTWIF_id_TAI( + template (present) TAI p_tAI := ? + ) := { + { + id := id_TAI, + criticality := ignore, + extensionValue := { TAI := p_tAI } + } + } // End of template mw_userLocationInformationTWIF_id_TAI + + template (present) UserLocationInformationW_AGF mw_userLocationInformationW_AGF_globalLine_ID( + template (present) GlobalLine_ID p_globalLine_ID := ? + ) := { + globalLine_ID := p_globalLine_ID + } // End of template mw_userLocationInformationW_AGF_globalLine_ID + + template (present) UserLocationInformationW_AGF mw_userLocationInformationW_AGF_hFCNode_ID( + template (present) HFCNode_ID p_hFCNode_ID := ? + ) := { + hFCNode_ID := p_hFCNode_ID + } // End of template mw_userLocationInformationW_AGF_hFCNode_ID + + template (present) UserLocationInformationW_AGF mw_userLocationInformationW_AGF_choice_Extensions( + template (present) UserLocationInformationW_AGF.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_userLocationInformationW_AGF_choice_Extensions + + template (present) UserLocationInformationW_AGF.choice_Extensions mw_userLocationInformationW_AGF_id_GlobalCable_ID( + template (present) GlobalCable_ID p_globalCable_ID := ? + ) := { + id := id_GlobalCable_ID, + criticality := ignore, + value_ := { GlobalCable_ID := p_globalCable_ID } + } // End of template mw_userLocationInformationW_AGF_id_GlobalCable_ID + + template (present) UserLocationInformationW_AGF.choice_Extensions mw_userLocationInformationW_AGF_id_HFCNode_ID_new( + template (present) HFCNode_ID_new p_hFCNode_ID_new := ? + ) := { + id := id_HFCNode_ID_new, + criticality := ignore, + value_ := { HFCNode_ID_new := p_hFCNode_ID_new } + } // End of template mw_userLocationInformationW_AGF_id_HFCNode_ID_new + + template (present) UserLocationInformationW_AGF.choice_Extensions mw_userLocationInformationW_AGF_id_GlobalCable_ID_new( + template (present) GlobalCable_ID_new p_globalCable_ID_new := ? + ) := { + id := id_GlobalCable_ID_new, + criticality := ignore, + value_ := { GlobalCable_ID_new := p_globalCable_ID_new } + } // End of template mw_userLocationInformationW_AGF_id_GlobalCable_ID_new + + template (present) UserLocationInformationNR mw_userLocationInformationNR( + template (present) NR_CGI p_nR_CGI := ?, + template (present) TAI p_tAI := ?, + template TimeStamp p_timeStamp := *, + template UserLocationInformationNR.iE_Extensions p_iE_Extensions := * + ) := { + nR_CGI := p_nR_CGI, + tAI := p_tAI, + timeStamp := p_timeStamp, + iE_Extensions := p_iE_Extensions + } // End of template mw_userLocationInformationNR + + template (present) UserLocationInformationNR.iE_Extensions mw_userLocationInformationNR_id_PSCellInformation( + template (present) NGRAN_CGI p_nGRAN_CGI := ? + ) := { + { + id := id_PSCellInformation, + criticality := ignore, + extensionValue := { NGRAN_CGI := p_nGRAN_CGI } + } + } // End of template mw_userLocationInformationNR_id_PSCellInformation + + template (present) UserLocationInformationNR.iE_Extensions mw_userLocationInformationNR_id_NID( + template (present) NID p_nID := ? + ) := { + { + id := id_NID, + criticality := reject, + extensionValue := { NID := p_nID } + } + } // End of template mw_userLocationInformationNR_id_NID + + template (present) UserLocationInformationNR.iE_Extensions mw_userLocationInformationNR_id_NRNTNTAIInformation( + template (present) NRNTNTAIInformation p_nRNTNTAIInformation := ? + ) := { + { + id := id_NRNTNTAIInformation, + criticality := ignore, + extensionValue := { NRNTNTAIInformation := p_nRNTNTAIInformation } + } + } // End of template mw_userLocationInformationNR_id_NRNTNTAIInformation + + template (present) UserPlaneSecurityInformation mw_userPlaneSecurityInformation( + template (present) SecurityResult p_securityResult := ?, + template (present) SecurityIndication p_securityIndication := ?, + template UserPlaneSecurityInformation.iE_Extensions p_iE_Extensions := * + ) := { + securityResult := p_securityResult, + securityIndication := p_securityIndication, + iE_Extensions := p_iE_Extensions + } // End of template mw_userPlaneSecurityInformation + + template (present) VolumeTimedReport_Item mw_volumeTimedReport_Item( + template (present) VolumeTimedReport_Item.startTimeStamp p_startTimeStamp := ?, + template (present) VolumeTimedReport_Item.endTimeStamp p_endTimeStamp := ?, + template (present) VolumeTimedReport_Item.usageCountUL p_usageCountUL := ?, + template (present) VolumeTimedReport_Item.usageCountDL p_usageCountDL := ?, + template VolumeTimedReport_Item.iE_Extensions p_iE_Extensions := * + ) := { + startTimeStamp := p_startTimeStamp, + endTimeStamp := p_endTimeStamp, + usageCountUL := p_usageCountUL, + usageCountDL := p_usageCountDL, + iE_Extensions := p_iE_Extensions + } // End of template mw_volumeTimedReport_Item + + template (present) W_AGF_ID mw_w_AGF_ID_w_AGF_ID( + template (present) W_AGF_ID.w_AGF_ID p_w_AGF_ID := ? + ) := { + w_AGF_ID := p_w_AGF_ID + } // End of template mw_w_AGF_ID_w_AGF_ID + + template (present) W_AGF_ID mw_w_AGF_ID_choice_Extensions( + template (present) W_AGF_ID.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_w_AGF_ID_choice_Extensions + + template (present) WarningAreaList mw_warningAreaList_eUTRA_CGIListForWarning( + template (present) EUTRA_CGIListForWarning p_eUTRA_CGIListForWarning := ? + ) := { + eUTRA_CGIListForWarning := p_eUTRA_CGIListForWarning + } // End of template mw_warningAreaList_eUTRA_CGIListForWarning + + template (present) WarningAreaList mw_warningAreaList_nR_CGIListForWarning( + template (present) NR_CGIListForWarning p_nR_CGIListForWarning := ? + ) := { + nR_CGIListForWarning := p_nR_CGIListForWarning + } // End of template mw_warningAreaList_nR_CGIListForWarning + + template (present) WarningAreaList mw_warningAreaList_tAIListForWarning( + template (present) TAIListForWarning p_tAIListForWarning := ? + ) := { + tAIListForWarning := p_tAIListForWarning + } // End of template mw_warningAreaList_tAIListForWarning + + template (present) WarningAreaList mw_warningAreaList_emergencyAreaIDList( + template (present) EmergencyAreaIDList p_emergencyAreaIDList := ? + ) := { + emergencyAreaIDList := p_emergencyAreaIDList + } // End of template mw_warningAreaList_emergencyAreaIDList + + template (present) WarningAreaList mw_warningAreaList_choice_Extensions( + template (present) WarningAreaList.choice_Extensions p_choice_Extensions := ? + ) := { + choice_Extensions := p_choice_Extensions + } // End of template mw_warningAreaList_choice_Extensions + + template (present) WLANMeasurementConfiguration mw_wLANMeasurementConfiguration( + template (present) WLANMeasConfig p_wlanMeasConfig := ?, + template WLANMeasConfigNameList p_wlanMeasConfigNameList := *, + template WLANMeasurementConfiguration.wlan_rssi p_wlan_rssi := *, + template WLANMeasurementConfiguration.wlan_rtt p_wlan_rtt := *, + template WLANMeasurementConfiguration.iE_Extensions p_iE_Extensions := * + ) := { + wlanMeasConfig := p_wlanMeasConfig, + wlanMeasConfigNameList := p_wlanMeasConfigNameList, + wlan_rssi := p_wlan_rssi, + wlan_rtt := p_wlan_rtt, + iE_Extensions := p_iE_Extensions + } // End of template mw_wLANMeasurementConfiguration + + template (present) WLANMeasConfigNameItem mw_wLANMeasConfigNameItem( + template (present) WLANName p_wLANName := ?, + template WLANMeasConfigNameItem.iE_Extensions p_iE_Extensions := * + ) := { + wLANName := p_wLANName, + iE_Extensions := p_iE_Extensions + } // End of template mw_wLANMeasConfigNameItem + + template (present) WLANMeasConfig mw_wLANMeasConfig(template (present) WLANMeasConfig p_value := ?) := p_value; + + template (present) WUS_Assistance_Information mw_wUS_Assistance_Information( + template (present) PagingProbabilityInformation p_pagingProbabilityInformation := ?, + template WUS_Assistance_Information.iE_Extensions p_iE_Extensions := * + ) := { + pagingProbabilityInformation := p_pagingProbabilityInformation, + iE_Extensions := p_iE_Extensions + } // End of template mw_wUS_Assistance_Information + + template (present) XnExtTLA_Item mw_xnExtTLA_Item( + template TransportLayerAddress p_iPsecTLA := *, + template XnGTP_TLAs p_gTP_TLAs := *, + template XnExtTLA_Item.iE_Extensions p_iE_Extensions := * + ) := { + iPsecTLA := p_iPsecTLA, + gTP_TLAs := p_gTP_TLAs, + iE_Extensions := p_iE_Extensions + } // End of template mw_xnExtTLA_Item + + template (present) XnExtTLA_Item.iE_Extensions mw_xnExtTLA_Item_id_SCTP_TLAs( + template (present) SCTP_TLAs p_sCTP_TLAs := ? + ) := { + { + id := id_SCTP_TLAs, + criticality := ignore, + extensionValue := { SCTP_TLAs := p_sCTP_TLAs } + } + } // End of template mw_xnExtTLA_Item_id_SCTP_TLAs + + template (present) XnTNLConfigurationInfo mw_xnTNLConfigurationInfo( + template (present) XnTLAs p_xnTransportLayerAddresses := ?, + template XnExtTLAs p_xnExtendedTransportLayerAddresses := *, + template XnTNLConfigurationInfo.iE_Extensions p_iE_Extensions := * + ) := { + xnTransportLayerAddresses := p_xnTransportLayerAddresses, + xnExtendedTransportLayerAddresses := p_xnExtendedTransportLayerAddresses, + iE_Extensions := p_iE_Extensions + } // End of template mw_xnTNLConfigurationInfo + + template (present) PLMN_List mw_PLMN_List( + template (present) IEI8_Type p_iei := '4A'O, + template (present) Type4Length_Type p_iel := ?, + template (present) NAS_PlmnIdList_Type p_plmnList + ) := { + iei := p_iei, + iel := p_iel, + plmnList := p_plmnList + } // End of template mw_PLMN_List + + } // End of group receive + + } // End of group Information_elements + + } // End of group g_NGAP + + group Functions_For_Templates{ + } // End of group functionsForTemplates + +} // End of module LibNGAP_Templates diff --git a/ttcn/LibNGAP/lib/LibNGAP_TypesAndValues.ttcn b/ttcn/LibNGAP/lib/LibNGAP_TypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c137387b7faba2f999c63b025f2924ed2313c3ee --- /dev/null +++ b/ttcn/LibNGAP/lib/LibNGAP_TypesAndValues.ttcn @@ -0,0 +1,21 @@ +/** + * @author ETSI / TTF033 + * @version $URL$ + * $Id$ + * @desc This module provides TypesAndValues for NGAP protocol. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 138 413 / 3GPP TS 38.413 version 16.12 Release 16 + */ +module LibNGAP_TypesAndValues { + + // LibNGAP + import from NGAP_IEs language "ASN.1:2002" all; + import from NGAP_PDU_Contents language "ASN.1:2002" all; + import from NGAP_PDU_Descriptions language "ASN.1:2002" all; + +} with { + encode "LibNGAP_codec" +} // End of module LibNGAP_TypesAndValues diff --git a/ttcn/LibNGAP/lib/asn1/Makefile.am.asn1convert b/ttcn/LibNGAP/lib/asn1/Makefile.am.asn1convert new file mode 100644 index 0000000000000000000000000000000000000000..849c1296ceb0a1e8a0a9a862cce9db038ec5d5c3 --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/Makefile.am.asn1convert @@ -0,0 +1,14 @@ +include Makefile.am.libasncodec + +bin_PROGRAMS += asn1convert +asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) +asn1convert_CPPFLAGS = -I$(top_srcdir)/-DASN_PDU_COLLECTION +asn1convert_LDADD = libasncodec.la +asn1convert_SOURCES = \ + converter-example.c\ + pdu_collection.c +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c NGAP_CommonDataTypes.asn + diff --git a/ttcn/LibNGAP/lib/asn1/NGAP_CommonDataTypes.asn b/ttcn/LibNGAP/lib/asn1/NGAP_CommonDataTypes.asn new file mode 100644 index 0000000000000000000000000000000000000000..e739dd039bd39622993392cb4649e0429deaa76e --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/NGAP_CommonDataTypes.asn @@ -0,0 +1,34 @@ +-- 3GPP TS 38.413 V17.5.0 (2023-06) +-- 9.4.6 Common Definitions +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +NGAP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-Access (22) modules (3) ngap (1) version1 (1) ngap-CommonDataTypes (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +PrivateIE-ID ::= CHOICE { + local INTEGER (0..65535), + global OBJECT IDENTIFIER +} + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..65535) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome } + +END diff --git a/ttcn/LibNGAP/lib/asn1/NGAP_Constants.asn b/ttcn/LibNGAP/lib/asn1/NGAP_Constants.asn new file mode 100644 index 0000000000000000000000000000000000000000..70f31a86126b3c3aa4501d1e92959b2905a68449 --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/NGAP_Constants.asn @@ -0,0 +1,591 @@ +-- 3GPP TS 38.413 V17.5.0 (2023-06) +-- 9.4.7 Constant Definitions +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +NGAP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-Access (22) modules (3) ngap (1) version1 (1) ngap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + ProcedureCode, + ProtocolIE-ID +FROM NGAP-CommonDataTypes; + + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-AMFConfigurationUpdate ProcedureCode ::= 0 +id-AMFStatusIndication ProcedureCode ::= 1 +id-CellTrafficTrace ProcedureCode ::= 2 +id-DeactivateTrace ProcedureCode ::= 3 +id-DownlinkNASTransport ProcedureCode ::= 4 +id-DownlinkNonUEAssociatedNRPPaTransport ProcedureCode ::= 5 +id-DownlinkRANConfigurationTransfer ProcedureCode ::= 6 +id-DownlinkRANStatusTransfer ProcedureCode ::= 7 +id-DownlinkUEAssociatedNRPPaTransport ProcedureCode ::= 8 +id-ErrorIndication ProcedureCode ::= 9 +id-HandoverCancel ProcedureCode ::= 10 +id-HandoverNotification ProcedureCode ::= 11 +id-HandoverPreparation ProcedureCode ::= 12 +id-HandoverResourceAllocation ProcedureCode ::= 13 +id-InitialContextSetup ProcedureCode ::= 14 +id-InitialUEMessage ProcedureCode ::= 15 +id-LocationReportingControl ProcedureCode ::= 16 +id-LocationReportingFailureIndication ProcedureCode ::= 17 +id-LocationReport ProcedureCode ::= 18 +id-NASNonDeliveryIndication ProcedureCode ::= 19 +id-NGReset ProcedureCode ::= 20 +id-NGSetup ProcedureCode ::= 21 +id-OverloadStart ProcedureCode ::= 22 +id-OverloadStop ProcedureCode ::= 23 +id-Paging ProcedureCode ::= 24 +id-PathSwitchRequest ProcedureCode ::= 25 +id-PDUSessionResourceModify ProcedureCode ::= 26 +id-PDUSessionResourceModifyIndication ProcedureCode ::= 27 +id-PDUSessionResourceRelease ProcedureCode ::= 28 +id-PDUSessionResourceSetup ProcedureCode ::= 29 +id-PDUSessionResourceNotify ProcedureCode ::= 30 +id-PrivateMessage ProcedureCode ::= 31 +id-PWSCancel ProcedureCode ::= 32 +id-PWSFailureIndication ProcedureCode ::= 33 +id-PWSRestartIndication ProcedureCode ::= 34 +id-RANConfigurationUpdate ProcedureCode ::= 35 +id-RerouteNASRequest ProcedureCode ::= 36 +id-RRCInactiveTransitionReport ProcedureCode ::= 37 +id-TraceFailureIndication ProcedureCode ::= 38 +id-TraceStart ProcedureCode ::= 39 +id-UEContextModification ProcedureCode ::= 40 +id-UEContextRelease ProcedureCode ::= 41 +id-UEContextReleaseRequest ProcedureCode ::= 42 +id-UERadioCapabilityCheck ProcedureCode ::= 43 +id-UERadioCapabilityInfoIndication ProcedureCode ::= 44 +id-UETNLABindingRelease ProcedureCode ::= 45 +id-UplinkNASTransport ProcedureCode ::= 46 +id-UplinkNonUEAssociatedNRPPaTransport ProcedureCode ::= 47 +id-UplinkRANConfigurationTransfer ProcedureCode ::= 48 +id-UplinkRANStatusTransfer ProcedureCode ::= 49 +id-UplinkUEAssociatedNRPPaTransport ProcedureCode ::= 50 +id-WriteReplaceWarning ProcedureCode ::= 51 +id-SecondaryRATDataUsageReport ProcedureCode ::= 52 +id-UplinkRIMInformationTransfer ProcedureCode ::= 53 +id-DownlinkRIMInformationTransfer ProcedureCode ::= 54 +id-RetrieveUEInformation ProcedureCode ::= 55 +id-UEInformationTransfer ProcedureCode ::= 56 +id-RANCPRelocationIndication ProcedureCode ::= 57 +id-UEContextResume ProcedureCode ::= 58 +id-UEContextSuspend ProcedureCode ::= 59 +id-UERadioCapabilityIDMapping ProcedureCode ::= 60 +id-HandoverSuccess ProcedureCode ::= 61 +id-UplinkRANEarlyStatusTransfer ProcedureCode ::= 62 +id-DownlinkRANEarlyStatusTransfer ProcedureCode ::= 63 +id-AMFCPRelocationIndication ProcedureCode ::= 64 +id-ConnectionEstablishmentIndication ProcedureCode ::= 65 +id-BroadcastSessionModification ProcedureCode ::= 66 +id-BroadcastSessionRelease ProcedureCode ::= 67 +id-BroadcastSessionSetup ProcedureCode ::= 68 +id-DistributionSetup ProcedureCode ::= 69 +id-DistributionRelease ProcedureCode ::= 70 +id-MulticastSessionActivation ProcedureCode ::= 71 +id-MulticastSessionDeactivation ProcedureCode ::= 72 +id-MulticastSessionUpdate ProcedureCode ::= 73 +id-MulticastGroupPaging ProcedureCode ::= 74 +id-BroadcastSessionReleaseRequired ProcedureCode ::= 75 + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxPrivateIEs INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + + maxnoofAllowedAreas INTEGER ::= 16 + maxnoofAllowedCAGsperPLMN INTEGER ::= 256 + maxnoofAllowedS-NSSAIs INTEGER ::= 8 + maxnoofBluetoothName INTEGER ::= 4 + maxnoofBPLMNs INTEGER ::= 12 + maxnoofCAGSperCell INTEGER ::= 64 + maxnoofCellIDforMDT INTEGER ::= 32 + maxnoofCellIDforWarning INTEGER ::= 65535 + maxnoofCellinAoI INTEGER ::= 256 + maxnoofCellinEAI INTEGER ::= 65535 + maxnoofCellinTAI INTEGER ::= 65535 + maxnoofCellsforMBS INTEGER ::= 8192 + maxnoofCellsingNB INTEGER ::= 16384 + maxnoofCellsinngeNB INTEGER ::= 256 + maxnoofCellsinNGRANNode INTEGER ::= 16384 + maxnoofCellsinUEHistoryInfo INTEGER ::= 16 + maxnoofCellsUEMovingTrajectory INTEGER ::= 16 + maxnoofDRBs INTEGER ::= 32 + maxnoofEmergencyAreaID INTEGER ::= 65535 + maxnoofEAIforRestart INTEGER ::= 256 + maxnoofEPLMNs INTEGER ::= 15 + maxnoofEPLMNsPlusOne INTEGER ::= 16 + maxnoofE-RABs INTEGER ::= 256 + maxnoofErrors INTEGER ::= 256 + maxnoofExtSliceItems INTEGER ::= 65535 + maxnoofForbTACs INTEGER ::= 4096 + maxnoofFreqforMDT INTEGER ::= 8 + maxnoofMBSAreaSessionIDs INTEGER ::= 256 + maxnoofMBSFSAs INTEGER ::= 64 + maxnoofMBSQoSFlows INTEGER ::= 64 + maxnoofMBSSessions INTEGER ::= 32 + maxnoofMBSSessionsofUE INTEGER ::= 256 + maxnoofMBSServiceAreaInformation INTEGER ::= 256 + maxnoofMDTPLMNs INTEGER ::= 16 + maxnoofMRBs INTEGER ::= 32 + maxnoofMultiConnectivity INTEGER ::= 4 + maxnoofMultiConnectivityMinusOne INTEGER ::= 3 + maxnoofNeighPCIforMDT INTEGER ::= 32 + maxnoofNGAPIESupportInfo INTEGER ::= 32 + maxnoofNGConnectionsToReset INTEGER ::= 65536 + maxnoofNRCellBands INTEGER ::= 32 + maxnoofNSAGs INTEGER ::= 256 + maxnoofPagingAreas INTEGER ::= 64 + maxnoofPC5QoSFlows INTEGER ::= 2048 + maxnoofPDUSessions INTEGER ::= 256 + maxnoofPLMNs INTEGER ::= 12 + maxnoofPSCellsPerPrimaryCellinUEHistoryInfo INTEGER ::= 8 + maxnoofQosFlows INTEGER ::= 64 + maxnoofQosParaSets INTEGER ::= 8 + maxnoofRANNodeinAoI INTEGER ::= 64 + maxnoofRecommendedCells INTEGER ::= 16 + maxnoofRecommendedRANNodes INTEGER ::= 16 + maxnoofAoI INTEGER ::= 64 + maxnoofReportedCells INTEGER ::= 256 + maxnoofSensorName INTEGER ::= 3 + maxnoofServedGUAMIs INTEGER ::= 256 + maxnoofSliceItems INTEGER ::= 1024 + maxnoofSuccessfulHOReports INTEGER ::= 64 + maxnoofTACs INTEGER ::= 256 + maxnoofTACsinNTN INTEGER ::= 12 + maxnoofTAforMDT INTEGER ::= 8 + maxnoofTAIforInactive INTEGER ::= 16 + maxnoofTAIforMBS INTEGER ::= 1024 + maxnoofTAIforPaging INTEGER ::= 16 + maxnoofTAIforRestart INTEGER ::= 2048 + maxnoofTAIforWarning INTEGER ::= 65535 + maxnoofTAIinAoI INTEGER ::= 16 + maxnoofTimePeriods INTEGER ::= 2 + maxnoofTNLAssociations INTEGER ::= 32 + maxnoofUEsforPaging INTEGER ::= 4096 + maxnoofWLANName INTEGER ::= 4 + maxnoofXnExtTLAs INTEGER ::= 16 + maxnoofXnGTP-TLAs INTEGER ::= 16 + maxnoofXnTLAs INTEGER ::= 2 + maxnoofCandidateCells INTEGER ::= 32 + maxnoofTargetS-NSSAIs INTEGER ::= 8 + maxNRARFCN INTEGER ::= 3279165 + maxnoofCellIDforQMC INTEGER ::= 32 + maxnoofPLMNforQMC INTEGER ::= 16 + maxnoofUEAppLayerMeas INTEGER ::= 16 + maxnoofSNSSAIforQMC INTEGER ::= 16 + maxnoofTAforQMC INTEGER ::= 8 + maxnoofThresholdsForExcessPacketDelay INTEGER ::= 255 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + + id-AllowedNSSAI ProtocolIE-ID ::= 0 + id-AMFName ProtocolIE-ID ::= 1 + id-AMFOverloadResponse ProtocolIE-ID ::= 2 + id-AMFSetID ProtocolIE-ID ::= 3 + id-AMF-TNLAssociationFailedToSetupList ProtocolIE-ID ::= 4 + id-AMF-TNLAssociationSetupList ProtocolIE-ID ::= 5 + id-AMF-TNLAssociationToAddList ProtocolIE-ID ::= 6 + id-AMF-TNLAssociationToRemoveList ProtocolIE-ID ::= 7 + id-AMF-TNLAssociationToUpdateList ProtocolIE-ID ::= 8 + id-AMFTrafficLoadReductionIndication ProtocolIE-ID ::= 9 + id-AMF-UE-NGAP-ID ProtocolIE-ID ::= 10 + id-AssistanceDataForPaging ProtocolIE-ID ::= 11 + id-BroadcastCancelledAreaList ProtocolIE-ID ::= 12 + id-BroadcastCompletedAreaList ProtocolIE-ID ::= 13 + id-CancelAllWarningMessages ProtocolIE-ID ::= 14 + id-Cause ProtocolIE-ID ::= 15 + id-CellIDListForRestart ProtocolIE-ID ::= 16 + id-ConcurrentWarningMessageInd ProtocolIE-ID ::= 17 + id-CoreNetworkAssistanceInformationForInactive ProtocolIE-ID ::= 18 + id-CriticalityDiagnostics ProtocolIE-ID ::= 19 + id-DataCodingScheme ProtocolIE-ID ::= 20 + id-DefaultPagingDRX ProtocolIE-ID ::= 21 + id-DirectForwardingPathAvailability ProtocolIE-ID ::= 22 + id-EmergencyAreaIDListForRestart ProtocolIE-ID ::= 23 + id-EmergencyFallbackIndicator ProtocolIE-ID ::= 24 + id-EUTRA-CGI ProtocolIE-ID ::= 25 + id-FiveG-S-TMSI ProtocolIE-ID ::= 26 + id-GlobalRANNodeID ProtocolIE-ID ::= 27 + id-GUAMI ProtocolIE-ID ::= 28 + id-HandoverType ProtocolIE-ID ::= 29 + id-IMSVoiceSupportIndicator ProtocolIE-ID ::= 30 + id-IndexToRFSP ProtocolIE-ID ::= 31 + id-InfoOnRecommendedCellsAndRANNodesForPaging ProtocolIE-ID ::= 32 + id-LocationReportingRequestType ProtocolIE-ID ::= 33 + id-MaskedIMEISV ProtocolIE-ID ::= 34 + id-MessageIdentifier ProtocolIE-ID ::= 35 + id-MobilityRestrictionList ProtocolIE-ID ::= 36 + id-NASC ProtocolIE-ID ::= 37 + id-NAS-PDU ProtocolIE-ID ::= 38 + id-NASSecurityParametersFromNGRAN ProtocolIE-ID ::= 39 + id-NewAMF-UE-NGAP-ID ProtocolIE-ID ::= 40 + id-NewSecurityContextInd ProtocolIE-ID ::= 41 + id-NGAP-Message ProtocolIE-ID ::= 42 + id-NGRAN-CGI ProtocolIE-ID ::= 43 + id-NGRANTraceID ProtocolIE-ID ::= 44 + id-NR-CGI ProtocolIE-ID ::= 45 + id-NRPPa-PDU ProtocolIE-ID ::= 46 + id-NumberOfBroadcastsRequested ProtocolIE-ID ::= 47 + id-OldAMF ProtocolIE-ID ::= 48 + id-OverloadStartNSSAIList ProtocolIE-ID ::= 49 + id-PagingDRX ProtocolIE-ID ::= 50 + id-PagingOrigin ProtocolIE-ID ::= 51 + id-PagingPriority ProtocolIE-ID ::= 52 + id-PDUSessionResourceAdmittedList ProtocolIE-ID ::= 53 + id-PDUSessionResourceFailedToModifyListModRes ProtocolIE-ID ::= 54 + id-PDUSessionResourceFailedToSetupListCxtRes ProtocolIE-ID ::= 55 + id-PDUSessionResourceFailedToSetupListHOAck ProtocolIE-ID ::= 56 + id-PDUSessionResourceFailedToSetupListPSReq ProtocolIE-ID ::= 57 + id-PDUSessionResourceFailedToSetupListSURes ProtocolIE-ID ::= 58 + id-PDUSessionResourceHandoverList ProtocolIE-ID ::= 59 + id-PDUSessionResourceListCxtRelCpl ProtocolIE-ID ::= 60 + id-PDUSessionResourceListHORqd ProtocolIE-ID ::= 61 + id-PDUSessionResourceModifyListModCfm ProtocolIE-ID ::= 62 + id-PDUSessionResourceModifyListModInd ProtocolIE-ID ::= 63 + id-PDUSessionResourceModifyListModReq ProtocolIE-ID ::= 64 + id-PDUSessionResourceModifyListModRes ProtocolIE-ID ::= 65 + id-PDUSessionResourceNotifyList ProtocolIE-ID ::= 66 + id-PDUSessionResourceReleasedListNot ProtocolIE-ID ::= 67 + id-PDUSessionResourceReleasedListPSAck ProtocolIE-ID ::= 68 + id-PDUSessionResourceReleasedListPSFail ProtocolIE-ID ::= 69 + id-PDUSessionResourceReleasedListRelRes ProtocolIE-ID ::= 70 + id-PDUSessionResourceSetupListCxtReq ProtocolIE-ID ::= 71 + id-PDUSessionResourceSetupListCxtRes ProtocolIE-ID ::= 72 + id-PDUSessionResourceSetupListHOReq ProtocolIE-ID ::= 73 + id-PDUSessionResourceSetupListSUReq ProtocolIE-ID ::= 74 + id-PDUSessionResourceSetupListSURes ProtocolIE-ID ::= 75 + id-PDUSessionResourceToBeSwitchedDLList ProtocolIE-ID ::= 76 + id-PDUSessionResourceSwitchedList ProtocolIE-ID ::= 77 + id-PDUSessionResourceToReleaseListHOCmd ProtocolIE-ID ::= 78 + id-PDUSessionResourceToReleaseListRelCmd ProtocolIE-ID ::= 79 + id-PLMNSupportList ProtocolIE-ID ::= 80 + id-PWSFailedCellIDList ProtocolIE-ID ::= 81 + id-RANNodeName ProtocolIE-ID ::= 82 + id-RANPagingPriority ProtocolIE-ID ::= 83 + id-RANStatusTransfer-TransparentContainer ProtocolIE-ID ::= 84 + id-RAN-UE-NGAP-ID ProtocolIE-ID ::= 85 + id-RelativeAMFCapacity ProtocolIE-ID ::= 86 + id-RepetitionPeriod ProtocolIE-ID ::= 87 + id-ResetType ProtocolIE-ID ::= 88 + id-RoutingID ProtocolIE-ID ::= 89 + id-RRCEstablishmentCause ProtocolIE-ID ::= 90 + id-RRCInactiveTransitionReportRequest ProtocolIE-ID ::= 91 + id-RRCState ProtocolIE-ID ::= 92 + id-SecurityContext ProtocolIE-ID ::= 93 + id-SecurityKey ProtocolIE-ID ::= 94 + id-SerialNumber ProtocolIE-ID ::= 95 + id-ServedGUAMIList ProtocolIE-ID ::= 96 + id-SliceSupportList ProtocolIE-ID ::= 97 + id-SONConfigurationTransferDL ProtocolIE-ID ::= 98 + id-SONConfigurationTransferUL ProtocolIE-ID ::= 99 + id-SourceAMF-UE-NGAP-ID ProtocolIE-ID ::= 100 + id-SourceToTarget-TransparentContainer ProtocolIE-ID ::= 101 + id-SupportedTAList ProtocolIE-ID ::= 102 + id-TAIListForPaging ProtocolIE-ID ::= 103 + id-TAIListForRestart ProtocolIE-ID ::= 104 + id-TargetID ProtocolIE-ID ::= 105 + id-TargetToSource-TransparentContainer ProtocolIE-ID ::= 106 + id-TimeToWait ProtocolIE-ID ::= 107 + id-TraceActivation ProtocolIE-ID ::= 108 + id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 109 + id-UEAggregateMaximumBitRate ProtocolIE-ID ::= 110 + id-UE-associatedLogicalNG-connectionList ProtocolIE-ID ::= 111 + id-UEContextRequest ProtocolIE-ID ::= 112 + --WS extension + id-Unknown-113 ProtocolIE-ID ::= 113 + id-UE-NGAP-IDs ProtocolIE-ID ::= 114 + id-UEPagingIdentity ProtocolIE-ID ::= 115 + id-UEPresenceInAreaOfInterestList ProtocolIE-ID ::= 116 + id-UERadioCapability ProtocolIE-ID ::= 117 + id-UERadioCapabilityForPaging ProtocolIE-ID ::= 118 + id-UESecurityCapabilities ProtocolIE-ID ::= 119 + id-UnavailableGUAMIList ProtocolIE-ID ::= 120 + id-UserLocationInformation ProtocolIE-ID ::= 121 + id-WarningAreaList ProtocolIE-ID ::= 122 + id-WarningMessageContents ProtocolIE-ID ::= 123 + id-WarningSecurityInfo ProtocolIE-ID ::= 124 + id-WarningType ProtocolIE-ID ::= 125 + id-AdditionalUL-NGU-UP-TNLInformation ProtocolIE-ID ::= 126 + id-DataForwardingNotPossible ProtocolIE-ID ::= 127 + id-DL-NGU-UP-TNLInformation ProtocolIE-ID ::= 128 + id-NetworkInstance ProtocolIE-ID ::= 129 + id-PDUSessionAggregateMaximumBitRate ProtocolIE-ID ::= 130 + id-PDUSessionResourceFailedToModifyListModCfm ProtocolIE-ID ::= 131 + id-PDUSessionResourceFailedToSetupListCxtFail ProtocolIE-ID ::= 132 + id-PDUSessionResourceListCxtRelReq ProtocolIE-ID ::= 133 + id-PDUSessionType ProtocolIE-ID ::= 134 + id-QosFlowAddOrModifyRequestList ProtocolIE-ID ::= 135 + id-QosFlowSetupRequestList ProtocolIE-ID ::= 136 + id-QosFlowToReleaseList ProtocolIE-ID ::= 137 + id-SecurityIndication ProtocolIE-ID ::= 138 + id-UL-NGU-UP-TNLInformation ProtocolIE-ID ::= 139 + id-UL-NGU-UP-TNLModifyList ProtocolIE-ID ::= 140 + id-WarningAreaCoordinates ProtocolIE-ID ::= 141 + id-PDUSessionResourceSecondaryRATUsageList ProtocolIE-ID ::= 142 + id-HandoverFlag ProtocolIE-ID ::= 143 + id-SecondaryRATUsageInformation ProtocolIE-ID ::= 144 + id-PDUSessionResourceReleaseResponseTransfer ProtocolIE-ID ::= 145 + id-RedirectionVoiceFallback ProtocolIE-ID ::= 146 + id-UERetentionInformation ProtocolIE-ID ::= 147 + id-S-NSSAI ProtocolIE-ID ::= 148 + id-PSCellInformation ProtocolIE-ID ::= 149 + id-LastEUTRAN-PLMNIdentity ProtocolIE-ID ::= 150 + id-MaximumIntegrityProtectedDataRate-DL ProtocolIE-ID ::= 151 + id-AdditionalDLForwardingUPTNLInformation ProtocolIE-ID ::= 152 + id-AdditionalDLUPTNLInformationForHOList ProtocolIE-ID ::= 153 + id-AdditionalNGU-UP-TNLInformation ProtocolIE-ID ::= 154 + id-AdditionalDLQosFlowPerTNLInformation ProtocolIE-ID ::= 155 + id-SecurityResult ProtocolIE-ID ::= 156 + id-ENDC-SONConfigurationTransferDL ProtocolIE-ID ::= 157 + id-ENDC-SONConfigurationTransferUL ProtocolIE-ID ::= 158 + id-OldAssociatedQosFlowList-ULendmarkerexpected ProtocolIE-ID ::= 159 + id-CNTypeRestrictionsForEquivalent ProtocolIE-ID ::= 160 + id-CNTypeRestrictionsForServing ProtocolIE-ID ::= 161 + id-NewGUAMI ProtocolIE-ID ::= 162 + id-ULForwarding ProtocolIE-ID ::= 163 + id-ULForwardingUP-TNLInformation ProtocolIE-ID ::= 164 + id-CNAssistedRANTuning ProtocolIE-ID ::= 165 + id-CommonNetworkInstance ProtocolIE-ID ::= 166 + id-NGRAN-TNLAssociationToRemoveList ProtocolIE-ID ::= 167 + id-TNLAssociationTransportLayerAddressNGRAN ProtocolIE-ID ::= 168 + id-EndpointIPAddressAndPort ProtocolIE-ID ::= 169 + id-LocationReportingAdditionalInfo ProtocolIE-ID ::= 170 + id-SourceToTarget-AMFInformationReroute ProtocolIE-ID ::= 171 + id-AdditionalULForwardingUPTNLInformation ProtocolIE-ID ::= 172 + id-SCTP-TLAs ProtocolIE-ID ::= 173 + id-SelectedPLMNIdentity ProtocolIE-ID ::= 174 + id-RIMInformationTransfer ProtocolIE-ID ::= 175 + id-GUAMIType ProtocolIE-ID ::= 176 + id-SRVCCOperationPossible ProtocolIE-ID ::= 177 + id-TargetRNC-ID ProtocolIE-ID ::= 178 + id-RAT-Information ProtocolIE-ID ::= 179 + id-ExtendedRATRestrictionInformation ProtocolIE-ID ::= 180 + id-QosMonitoringRequest ProtocolIE-ID ::= 181 + id-SgNB-UE-X2AP-ID ProtocolIE-ID ::= 182 + id-AdditionalRedundantDL-NGU-UP-TNLInformation ProtocolIE-ID ::= 183 + id-AdditionalRedundantDLQosFlowPerTNLInformation ProtocolIE-ID ::= 184 + id-AdditionalRedundantNGU-UP-TNLInformation ProtocolIE-ID ::= 185 + id-AdditionalRedundantUL-NGU-UP-TNLInformation ProtocolIE-ID ::= 186 + id-CNPacketDelayBudgetDL ProtocolIE-ID ::= 187 + id-CNPacketDelayBudgetUL ProtocolIE-ID ::= 188 + id-ExtendedPacketDelayBudget ProtocolIE-ID ::= 189 + id-RedundantCommonNetworkInstance ProtocolIE-ID ::= 190 + id-RedundantDL-NGU-TNLInformationReused ProtocolIE-ID ::= 191 + id-RedundantDL-NGU-UP-TNLInformation ProtocolIE-ID ::= 192 + id-RedundantDLQosFlowPerTNLInformation ProtocolIE-ID ::= 193 + id-RedundantQosFlowIndicator ProtocolIE-ID ::= 194 + id-RedundantUL-NGU-UP-TNLInformation ProtocolIE-ID ::= 195 + id-TSCTrafficCharacteristics ProtocolIE-ID ::= 196 + id-RedundantPDUSessionInformation ProtocolIE-ID ::= 197 + id-UsedRSNInformation ProtocolIE-ID ::= 198 + id-IAB-Authorized ProtocolIE-ID ::= 199 + id-IAB-Supported ProtocolIE-ID ::= 200 + id-IABNodeIndication ProtocolIE-ID ::= 201 + id-NB-IoT-PagingDRX ProtocolIE-ID ::= 202 + id-NB-IoT-Paging-eDRXInfo ProtocolIE-ID ::= 203 + id-NB-IoT-DefaultPagingDRX ProtocolIE-ID ::= 204 + id-Enhanced-CoverageRestriction ProtocolIE-ID ::= 205 + id-Extended-ConnectedTime ProtocolIE-ID ::= 206 + id-PagingAssisDataforCEcapabUE ProtocolIE-ID ::= 207 + id-WUS-Assistance-Information ProtocolIE-ID ::= 208 + id-UE-DifferentiationInfo ProtocolIE-ID ::= 209 + id-NB-IoT-UEPriority ProtocolIE-ID ::= 210 + id-UL-CP-SecurityInformation ProtocolIE-ID ::= 211 + id-DL-CP-SecurityInformation ProtocolIE-ID ::= 212 + id-TAI ProtocolIE-ID ::= 213 + id-UERadioCapabilityForPagingOfNB-IoT ProtocolIE-ID ::= 214 + id-LTEV2XServicesAuthorized ProtocolIE-ID ::= 215 + id-NRV2XServicesAuthorized ProtocolIE-ID ::= 216 + id-LTEUESidelinkAggregateMaximumBitrate ProtocolIE-ID ::= 217 + id-NRUESidelinkAggregateMaximumBitrate ProtocolIE-ID ::= 218 + id-PC5QoSParameters ProtocolIE-ID ::= 219 + id-AlternativeQoSParaSetList ProtocolIE-ID ::= 220 + id-CurrentQoSParaSetIndex ProtocolIE-ID ::= 221 + id-CEmodeBrestricted ProtocolIE-ID ::= 222 + id-EUTRA-PagingeDRXInformation ProtocolIE-ID ::= 223 + id-CEmodeBSupport-Indicator ProtocolIE-ID ::= 224 + id-LTEM-Indication ProtocolIE-ID ::= 225 + id-EndIndication ProtocolIE-ID ::= 226 + id-EDT-Session ProtocolIE-ID ::= 227 + id-UECapabilityInfoRequest ProtocolIE-ID ::= 228 + id-PDUSessionResourceFailedToResumeListRESReq ProtocolIE-ID ::= 229 + id-PDUSessionResourceFailedToResumeListRESRes ProtocolIE-ID ::= 230 + id-PDUSessionResourceSuspendListSUSReq ProtocolIE-ID ::= 231 + id-PDUSessionResourceResumeListRESReq ProtocolIE-ID ::= 232 + id-PDUSessionResourceResumeListRESRes ProtocolIE-ID ::= 233 + id-UE-UP-CIoT-Support ProtocolIE-ID ::= 234 + id-Suspend-Request-Indication ProtocolIE-ID ::= 235 + id-Suspend-Response-Indication ProtocolIE-ID ::= 236 + id-RRC-Resume-Cause ProtocolIE-ID ::= 237 + id-RGLevelWirelineAccessCharacteristics ProtocolIE-ID ::= 238 + id-W-AGFIdentityInformation ProtocolIE-ID ::= 239 + id-GlobalTNGF-ID ProtocolIE-ID ::= 240 + id-GlobalTWIF-ID ProtocolIE-ID ::= 241 + id-GlobalW-AGF-ID ProtocolIE-ID ::= 242 + id-UserLocationInformationW-AGF ProtocolIE-ID ::= 243 + id-UserLocationInformationTNGF ProtocolIE-ID ::= 244 + id-AuthenticatedIndication ProtocolIE-ID ::= 245 + id-TNGFIdentityInformation ProtocolIE-ID ::= 246 + id-TWIFIdentityInformation ProtocolIE-ID ::= 247 + id-UserLocationInformationTWIF ProtocolIE-ID ::= 248 + id-DataForwardingResponseERABList ProtocolIE-ID ::= 249 + id-IntersystemSONConfigurationTransferDL ProtocolIE-ID ::= 250 + id-IntersystemSONConfigurationTransferUL ProtocolIE-ID ::= 251 + id-SONInformationReport ProtocolIE-ID ::= 252 + id-UEHistoryInformationFromTheUE ProtocolIE-ID ::= 253 + id-ManagementBasedMDTPLMNList ProtocolIE-ID ::= 254 + id-MDTConfiguration ProtocolIE-ID ::= 255 + id-PrivacyIndicator ProtocolIE-ID ::= 256 + id-TraceCollectionEntityURI ProtocolIE-ID ::= 257 + id-NPN-Support ProtocolIE-ID ::= 258 + id-NPN-AccessInformation ProtocolIE-ID ::= 259 + id-NPN-PagingAssistanceInformation ProtocolIE-ID ::= 260 + id-NPN-MobilityInformation ProtocolIE-ID ::= 261 + id-TargettoSource-Failure-TransparentContainer ProtocolIE-ID ::= 262 + id-NID ProtocolIE-ID ::= 263 + id-UERadioCapabilityID ProtocolIE-ID ::= 264 + id-UERadioCapability-EUTRA-Format ProtocolIE-ID ::= 265 + id-DAPSRequestInfo ProtocolIE-ID ::= 266 + id-DAPSResponseInfoList ProtocolIE-ID ::= 267 + id-EarlyStatusTransfer-TransparentContainer ProtocolIE-ID ::= 268 + id-NotifySourceNGRANNode ProtocolIE-ID ::= 269 + id-ExtendedSliceSupportList ProtocolIE-ID ::= 270 + id-ExtendedTAISliceSupportList ProtocolIE-ID ::= 271 + id-ConfiguredTACIndication ProtocolIE-ID ::= 272 + id-Extended-RANNodeName ProtocolIE-ID ::= 273 + id-Extended-AMFName ProtocolIE-ID ::= 274 + id-GlobalCable-ID ProtocolIE-ID ::= 275 + id-QosMonitoringReportingFrequency ProtocolIE-ID ::= 276 + id-QosFlowParametersList ProtocolIE-ID ::= 277 + id-QosFlowFeedbackList ProtocolIE-ID ::= 278 + id-BurstArrivalTimeDownlink ProtocolIE-ID ::= 279 + id-ExtendedUEIdentityIndexValue ProtocolIE-ID ::= 280 + id-PduSessionExpectedUEActivityBehaviour ProtocolIE-ID ::= 281 + id-MicoAllPLMN ProtocolIE-ID ::= 282 + id-QosFlowFailedToSetupList ProtocolIE-ID ::= 283 + id-SourceTNLAddrInfo ProtocolIE-ID ::= 284 + id-ExtendedReportIntervalMDT ProtocolIE-ID ::= 285 + id-SourceNodeID ProtocolIE-ID ::= 286 + id-NRNTNTAIInformation ProtocolIE-ID ::= 287 + id-UEContextReferenceAtSource ProtocolIE-ID ::= 288 + id-LastVisitedPSCellList ProtocolIE-ID ::= 289 + id-IntersystemSONInformationRequest ProtocolIE-ID ::= 290 + id-IntersystemSONInformationReply ProtocolIE-ID ::= 291 + id-EnergySavingIndication ProtocolIE-ID ::= 292 + id-IntersystemResourceStatusUpdate ProtocolIE-ID ::= 293 + id-SuccessfulHandoverReportList ProtocolIE-ID ::= 294 + id-MBS-AreaSessionID ProtocolIE-ID ::= 295 + id-MBS-QoSFlowsToBeSetupList ProtocolIE-ID ::= 296 + id-MBS-QoSFlowsToBeSetupModList ProtocolIE-ID ::= 297 + id-MBS-ServiceArea ProtocolIE-ID ::= 298 + id-MBS-SessionID ProtocolIE-ID ::= 299 + id-MBS-DistributionReleaseRequestTransfer ProtocolIE-ID ::= 300 + id-MBS-DistributionSetupRequestTransfer ProtocolIE-ID ::= 301 + id-MBS-DistributionSetupResponseTransfer ProtocolIE-ID ::= 302 + id-MBS-DistributionSetupUnsuccessfulTransfer ProtocolIE-ID ::= 303 + id-MulticastSessionActivationRequestTransfer ProtocolIE-ID ::= 304 + id-MulticastSessionDeactivationRequestTransfer ProtocolIE-ID ::= 305 + id-MulticastSessionUpdateRequestTransfer ProtocolIE-ID ::= 306 + id-MulticastGroupPagingAreaList ProtocolIE-ID ::= 307 + --WS extension + id-Unknown-308 ProtocolIE-ID ::= 308 + id-MBS-SupportIndicator ProtocolIE-ID ::= 309 + id-MBSSessionFailedtoSetupList ProtocolIE-ID ::= 310 + id-MBSSessionFailedtoSetuporModifyList ProtocolIE-ID ::= 311 + id-MBSSessionSetupResponseList ProtocolIE-ID ::= 312 + id-MBSSessionSetuporModifyResponseList ProtocolIE-ID ::= 313 + id-MBSSessionSetupFailureTransfer ProtocolIE-ID ::= 314 + id-MBSSessionSetupRequestTransfer ProtocolIE-ID ::= 315 + id-MBSSessionSetupResponseTransfer ProtocolIE-ID ::= 316 + id-MBSSessionToReleaseList ProtocolIE-ID ::= 317 + id-MBSSessionSetupRequestList ProtocolIE-ID ::= 318 + id-MBSSessionSetuporModifyRequestList ProtocolIE-ID ::= 319 + --WS extension + id-Unknown-320 ProtocolIE-ID ::= 320 + id-Unknown-321 ProtocolIE-ID ::= 321 + id-Unknown-322 ProtocolIE-ID ::= 322 + id-MBS-ActiveSessionInformation-SourcetoTargetList ProtocolIE-ID ::= 323 + id-MBS-ActiveSessionInformation-TargettoSourceList ProtocolIE-ID ::= 324 + id-OnboardingSupport ProtocolIE-ID ::= 325 + id-TimeSyncAssistanceInfo ProtocolIE-ID ::= 326 + id-SurvivalTime ProtocolIE-ID ::= 327 + id-QMCConfigInfo ProtocolIE-ID ::= 328 + id-QMCDeactivation ProtocolIE-ID ::= 329 + --WS extension + id-Unknown-330 ProtocolIE-ID ::= 330 + id-PDUSessionPairID ProtocolIE-ID ::= 331 + id-NR-PagingeDRXInformation ProtocolIE-ID ::= 332 + id-RedCapIndication ProtocolIE-ID ::= 333 + id-TargetNSSAIInformation ProtocolIE-ID ::= 334 + id-UESliceMaximumBitRateList ProtocolIE-ID ::= 335 + id-M4ReportAmount ProtocolIE-ID ::= 336 + id-M5ReportAmount ProtocolIE-ID ::= 337 + id-M6ReportAmount ProtocolIE-ID ::= 338 + id-M7ReportAmount ProtocolIE-ID ::= 339 + id-IncludeBeamMeasurementsIndication ProtocolIE-ID ::= 340 + id-ExcessPacketDelayThresholdConfiguration ProtocolIE-ID ::= 341 + id-PagingCause ProtocolIE-ID ::= 342 + id-PagingCauseIndicationForVoiceService ProtocolIE-ID ::= 343 + id-PEIPSassistanceInformation ProtocolIE-ID ::= 344 + id-FiveG-ProSeAuthorized ProtocolIE-ID ::= 345 + id-FiveG-ProSeUEPC5AggregateMaximumBitRate ProtocolIE-ID ::= 346 + id-FiveG-ProSePC5QoSParameters ProtocolIE-ID ::= 347 + id-MBSSessionModificationFailureTransfer ProtocolIE-ID ::= 348 + id-MBSSessionModificationRequestTransfer ProtocolIE-ID ::= 349 + id-MBSSessionModificationResponseTransfer ProtocolIE-ID ::= 350 + id-MBS-QoSFlowToReleaseList ProtocolIE-ID ::= 351 + id-MBS-SessionTNLInfo5GC ProtocolIE-ID ::= 352 + id-TAINSAGSupportList ProtocolIE-ID ::= 353 + id-SourceNodeTNLAddrInfo ProtocolIE-ID ::= 354 + id-NGAPIESupportInformationRequestList ProtocolIE-ID ::= 355 + id-NGAPIESupportInformationResponseList ProtocolIE-ID ::= 356 + id-MBS-SessionFSAIDList ProtocolIE-ID ::= 357 + id-MBSSessionReleaseResponseTransfer ProtocolIE-ID ::= 358 + id-ManagementBasedMDTPLMNModificationList ProtocolIE-ID ::= 359 + id-EarlyMeasurement ProtocolIE-ID ::= 360 + id-BeamMeasurementsReportConfiguration ProtocolIE-ID ::= 361 + id-HFCNode-ID-new ProtocolIE-ID ::= 362 + id-GlobalCable-ID-new ProtocolIE-ID ::= 363 + id-TargetHomeENB-ID ProtocolIE-ID ::= 364 + id-HashedUEIdentityIndexValue ProtocolIE-ID ::= 365 + + +END diff --git a/ttcn/LibNGAP/lib/asn1/NGAP_Containers.asn b/ttcn/LibNGAP/lib/asn1/NGAP_Containers.asn new file mode 100644 index 0000000000000000000000000000000000000000..fdf612bef26f2985ea78f3dea1d1cbe6f72686ef --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/NGAP_Containers.asn @@ -0,0 +1,200 @@ +-- 3GPP TS 38.413 V17.5.0 (2023-06) +-- 9.4.8 Container Definitions +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +NGAP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-Access (22) modules (3) ngap (1) version1 (1) ngap-Containers (5) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + Criticality, + Presence, + PrivateIE-ID, + ProtocolExtensionID, + ProtocolIE-ID +FROM NGAP-CommonDataTypes + + maxPrivateIEs, + maxProtocolExtensions, + maxProtocolIEs +FROM NGAP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +NGAP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +NGAP-PROTOCOL-IES-PAIR ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &firstCriticality Criticality, + &FirstValue, + &secondCriticality Criticality, + &SecondValue, + &presence Presence +} +WITH SYNTAX { + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +NGAP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + +NGAP-PRIVATE-IES ::= CLASS { + &id PrivateIE-ID, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {NGAP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer {NGAP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {NGAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id NGAP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality NGAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value NGAP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair {NGAP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair {NGAP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id NGAP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality NGAP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue NGAP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality NGAP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue NGAP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, NGAP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-SingleContainer {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, NGAP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer {NGAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField {NGAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id NGAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality NGAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue NGAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Private IEs +-- +-- ************************************************************** + +PrivateIE-Container {NGAP-PRIVATE-IES : IEsSetParam } ::= + SEQUENCE (SIZE (1..maxPrivateIEs)) OF + PrivateIE-Field {{IEsSetParam}} + +PrivateIE-Field {NGAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE { + id NGAP-PRIVATE-IES.&id ({IEsSetParam}), + criticality NGAP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}), + value NGAP-PRIVATE-IES.&Value ({IEsSetParam}{@id}) +} + +END diff --git a/ttcn/LibNGAP/lib/asn1/NGAP_IEs.asn b/ttcn/LibNGAP/lib/asn1/NGAP_IEs.asn new file mode 100644 index 0000000000000000000000000000000000000000..d0af009244238da73210ba0290d82fa1150c71b7 --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/NGAP_IEs.asn @@ -0,0 +1,6990 @@ +-- 3GPP TS 38.413 V17.5.0 (2023-06) +-- 9.4.5 Information Element Definitions +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +NGAP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-Access (22) modules (3) ngap (1) version1 (1) ngap-IEs (2) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + + id-AdditionalDLForwardingUPTNLInformation, + id-AdditionalULForwardingUPTNLInformation, + id-AdditionalDLQosFlowPerTNLInformation, + id-AdditionalDLUPTNLInformationForHOList, + id-AdditionalNGU-UP-TNLInformation, + id-AdditionalRedundantDL-NGU-UP-TNLInformation, + id-AdditionalRedundantDLQosFlowPerTNLInformation, + id-AdditionalRedundantNGU-UP-TNLInformation, + id-AdditionalRedundantUL-NGU-UP-TNLInformation, + id-AdditionalUL-NGU-UP-TNLInformation, + id-AlternativeQoSParaSetList, + id-BurstArrivalTimeDownlink, + id-Cause, + id-CNPacketDelayBudgetDL, + id-CNPacketDelayBudgetUL, + id-CNTypeRestrictionsForEquivalent, + id-CNTypeRestrictionsForServing, + id-CommonNetworkInstance, + id-ConfiguredTACIndication, + id-CurrentQoSParaSetIndex, + id-DAPSRequestInfo, + id-DAPSResponseInfoList, + id-DataForwardingNotPossible, + id-DataForwardingResponseERABList, + id-DirectForwardingPathAvailability, + id-DL-NGU-UP-TNLInformation, + id-EndpointIPAddressAndPort, + id-EnergySavingIndication, + id-ExtendedPacketDelayBudget, + id-ExtendedRATRestrictionInformation, + id-ExtendedReportIntervalMDT, + id-ExtendedSliceSupportList, + id-ExtendedTAISliceSupportList, + id-ExtendedUEIdentityIndexValue, + id-EUTRA-PagingeDRXInformation, + id-GlobalCable-ID, + id-GlobalRANNodeID, + id-GlobalTNGF-ID, + id-GlobalTWIF-ID, + id-GlobalW-AGF-ID, + id-GUAMIType, +id-HashedUEIdentityIndexValue, + id-IncludeBeamMeasurementsIndication, + id-IntersystemSONInformationRequest, + id-IntersystemSONInformationReply, + id-IntersystemResourceStatusUpdate, + id-LastEUTRAN-PLMNIdentity, + id-LastVisitedPSCellList, + id-LocationReportingAdditionalInfo, + id-M4ReportAmount, + id-M5ReportAmount, + id-M6ReportAmount, + id-ExcessPacketDelayThresholdConfiguration, + id-M7ReportAmount, + id-MaximumIntegrityProtectedDataRate-DL, + id-MBS-AreaSessionID, + id-MBS-QoSFlowsToBeSetupList, + id-MBS-QoSFlowsToBeSetupModList, + id-MBS-QoSFlowToReleaseList, + id-MBS-ServiceArea, + id-MBS-SessionFSAIDList, + id-MBS-SessionID, + id-MBS-ActiveSessionInformation-SourcetoTargetList, + id-MBS-ActiveSessionInformation-TargettoSourceList, + id-MBS-SessionTNLInfo5GC, + id-MBS-SupportIndicator, + id-MBSSessionFailedtoSetupList, + id-MBSSessionFailedtoSetuporModifyList, + id-MBSSessionSetupResponseList, + id-MBSSessionSetuporModifyResponseList, + id-MBSSessionToReleaseList, + id-MBSSessionSetupRequestList, + id-MBSSessionSetuporModifyRequestList, + id-MDTConfiguration, + id-MicoAllPLMN, + id-NetworkInstance, + id-NGAPIESupportInformationRequestList, + id-NGAPIESupportInformationResponseList, + id-NID, + id-NR-CGI, + id-NRNTNTAIInformation, + id-NPN-MobilityInformation, + id-NPN-PagingAssistanceInformation, + id-NPN-Support, + id-NR-PagingeDRXInformation, + id-OldAssociatedQosFlowList-ULendmarkerexpected, + id-OnboardingSupport, + id-PagingAssisDataforCEcapabUE, + id-PagingCauseIndicationForVoiceService, + id-PDUSessionAggregateMaximumBitRate, + id-PduSessionExpectedUEActivityBehaviour, + id-PDUSessionPairID, + id-PDUSessionResourceFailedToSetupListCxtFail, + id-PDUSessionResourceReleaseResponseTransfer, + id-PDUSessionType, + id-PEIPSassistanceInformation, + id-PSCellInformation, + id-QMCConfigInfo, + id-QosFlowAddOrModifyRequestList, + id-QosFlowFailedToSetupList, + id-QosFlowFeedbackList, + id-QosFlowParametersList, + id-QosFlowSetupRequestList, + id-QosFlowToReleaseList, + id-QosMonitoringRequest, + id-QosMonitoringReportingFrequency, + id-SuccessfulHandoverReportList, + id-UEContextReferenceAtSource, + id-RAT-Information, + id-RedundantCommonNetworkInstance, + id-RedundantDL-NGU-TNLInformationReused, + id-RedundantDL-NGU-UP-TNLInformation, + id-RedundantDLQosFlowPerTNLInformation, + id-RedundantPDUSessionInformation, + id-RedundantQosFlowIndicator, + id-RedundantUL-NGU-UP-TNLInformation, + id-SCTP-TLAs, + id-SecondaryRATUsageInformation, + id-SecurityIndication, + id-SecurityResult, + id-SgNB-UE-X2AP-ID, + id-S-NSSAI, + id-SONInformationReport, + id-SourceNodeID, + id-SourceNodeTNLAddrInfo, + id-SourceTNLAddrInfo, + id-SurvivalTime, + id-TNLAssociationTransportLayerAddressNGRAN, + id-TAINSAGSupportList, + id-TargetHomeENB-ID, + id-TargetRNC-ID, + id-TraceCollectionEntityURI, + id-TSCTrafficCharacteristics, + id-UEHistoryInformationFromTheUE, + id-UERadioCapabilityForPaging, + id-UERadioCapabilityForPagingOfNB-IoT, + id-UL-NGU-UP-TNLInformation, + id-UL-NGU-UP-TNLModifyList, + id-ULForwarding, + id-ULForwardingUP-TNLInformation, + id-UsedRSNInformation, + id-UserLocationInformationTNGF, + id-UserLocationInformationTWIF, + id-UserLocationInformationW-AGF, + id-EarlyMeasurement, + id-BeamMeasurementsReportConfiguration, + id-TAI, + id-HFCNode-ID-new, + id-GlobalCable-ID-new, + maxnoofAllowedAreas, + maxnoofAllowedCAGsperPLMN, + maxnoofAllowedS-NSSAIs, + maxnoofBluetoothName, + maxnoofBPLMNs, + maxnoofCAGSperCell, + maxnoofCandidateCells, + maxnoofCellIDforMDT, + maxnoofCellIDforQMC, + maxnoofCellIDforWarning, + maxnoofCellinAoI, + maxnoofCellinEAI, + maxnoofCellsforMBS, + maxnoofCellsingNB, + maxnoofCellsinngeNB, + maxnoofCellsinNGRANNode, + maxnoofCellinTAI, + maxnoofCellsinUEHistoryInfo, + maxnoofCellsUEMovingTrajectory, + maxnoofDRBs, + maxnoofEmergencyAreaID, + maxnoofEAIforRestart, + maxnoofEPLMNs, + maxnoofEPLMNsPlusOne, + maxnoofE-RABs, + maxnoofErrors, + maxnoofExtSliceItems, + maxnoofForbTACs, + maxnoofFreqforMDT, + maxnoofMBSFSAs, + maxnoofMBSQoSFlows, + maxnoofMBSServiceAreaInformation, + maxnoofMBSAreaSessionIDs, + maxnoofMBSSessions, + maxnoofMBSSessionsofUE, + maxnoofMDTPLMNs, + maxnoofMRBs, + maxnoofMultiConnectivity, + maxnoofMultiConnectivityMinusOne, + maxnoofNeighPCIforMDT, + maxnoofNGAPIESupportInfo, + maxnoofNGConnectionsToReset, + maxNRARFCN, + maxnoofNRCellBands, + maxnoofNSAGs, + maxnoofPagingAreas, + maxnoofPC5QoSFlows, + maxnoofPDUSessions, + maxnoofPLMNs, + maxnoofPLMNforQMC, + maxnoofQosFlows, + maxnoofQosParaSets, + maxnoofRANNodeinAoI, + maxnoofRecommendedCells, + maxnoofRecommendedRANNodes, + maxnoofAoI, + maxnoofPSCellsPerPrimaryCellinUEHistoryInfo, + maxnoofReportedCells, + maxnoofSensorName, + maxnoofServedGUAMIs, + maxnoofSliceItems, + maxnoofSNSSAIforQMC, + maxnoofSuccessfulHOReports, + maxnoofTACs, + maxnoofTACsinNTN, + maxnoofTAforMDT, + maxnoofTAforQMC, + maxnoofTAIforInactive, + maxnoofTAIforMBS, + maxnoofTAIforPaging, + maxnoofTAIforRestart, + maxnoofTAIforWarning, + maxnoofTAIinAoI, + maxnoofTargetS-NSSAIs, + maxnoofTimePeriods, + maxnoofTNLAssociations, + maxnoofUEAppLayerMeas, + maxnoofUEsforPaging, + maxnoofWLANName, + maxnoofXnExtTLAs, + maxnoofXnGTP-TLAs, + maxnoofXnTLAs, + maxnoofThresholdsForExcessPacketDelay + +FROM NGAP-Constants + + Criticality, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage +FROM NGAP-CommonDataTypes + + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + NGAP-PROTOCOL-EXTENSION, + ProtocolIE-SingleContainer{}, + NGAP-PROTOCOL-IES +FROM NGAP-Containers; + +-- A + +AdditionalDLUPTNLInformationForHOList ::= SEQUENCE (SIZE(1..maxnoofMultiConnectivityMinusOne)) OF AdditionalDLUPTNLInformationForHOItem + +AdditionalDLUPTNLInformationForHOItem ::= SEQUENCE { + additionalDL-NGU-UP-TNLInformation UPTransportLayerInformation, + additionalQosFlowSetupResponseList QosFlowListWithDataForwarding, + additionalDLForwardingUPTNLInformation UPTransportLayerInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AdditionalDLUPTNLInformationForHOItem-ExtIEs} } OPTIONAL, + ... +} + +AdditionalDLUPTNLInformationForHOItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalRedundantDL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }, + ... +} + +AdditionalQosFlowInformation ::= ENUMERATED { + more-likely, + ... +} + +AllocationAndRetentionPriority ::= SEQUENCE { + priorityLevelARP PriorityLevelARP, + pre-emptionCapability Pre-emptionCapability, + pre-emptionVulnerability Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL, + ... +} + +AllocationAndRetentionPriority-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +Allowed-CAG-List-per-PLMN ::= SEQUENCE (SIZE(1..maxnoofAllowedCAGsperPLMN)) OF CAG-ID + +AllowedNSSAI ::= SEQUENCE (SIZE(1..maxnoofAllowedS-NSSAIs)) OF AllowedNSSAI-Item + +AllowedNSSAI-Item ::= SEQUENCE { + s-NSSAI S-NSSAI, + iE-Extensions ProtocolExtensionContainer { {AllowedNSSAI-Item-ExtIEs} } OPTIONAL, + ... +} + +AllowedNSSAI-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +Allowed-PNI-NPN-List ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF Allowed-PNI-NPN-Item + +Allowed-PNI-NPN-Item ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + pNI-NPN-restricted ENUMERATED {restricted, not-restricted, ...}, + allowed-CAG-List-per-PLMN Allowed-CAG-List-per-PLMN, + iE-Extensions ProtocolExtensionContainer { {Allowed-PNI-NPN-Item-ExtIEs} } OPTIONAL, + ... +} + +Allowed-PNI-NPN-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AllowedTACs ::= SEQUENCE (SIZE(1..maxnoofAllowedAreas)) OF TAC + +AlternativeQoSParaSetIndex ::= INTEGER (1..8, ...) + +AlternativeQoSParaSetNotifyIndex ::= INTEGER (0..8, ...) + +AlternativeQoSParaSetList ::= SEQUENCE (SIZE(1..maxnoofQosParaSets)) OF AlternativeQoSParaSetItem + +AlternativeQoSParaSetItem ::= SEQUENCE { + alternativeQoSParaSetIndex AlternativeQoSParaSetIndex, + guaranteedFlowBitRateDL BitRate OPTIONAL, + guaranteedFlowBitRateUL BitRate OPTIONAL, + packetDelayBudget PacketDelayBudget OPTIONAL, + packetErrorRate PacketErrorRate OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {AlternativeQoSParaSetItem-ExtIEs} } OPTIONAL, + ... +} + +AlternativeQoSParaSetItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AMFName ::= PrintableString (SIZE(1..150, ...)) + +AMFNameVisibleString ::= VisibleString (SIZE(1..150, ...)) + +AMFNameUTF8String ::= UTF8String (SIZE(1..150, ...)) + +AMFPagingTarget ::= CHOICE { + globalRANNodeID GlobalRANNodeID, + tAI TAI, + choice-Extensions ProtocolIE-SingleContainer { {AMFPagingTarget-ExtIEs} } +} + +AMFPagingTarget-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +AMFPointer ::= BIT STRING (SIZE(6)) + +AMFRegionID ::= BIT STRING (SIZE(8)) + +AMFSetID ::= BIT STRING (SIZE(10)) + +AMF-TNLAssociationSetupList ::= SEQUENCE (SIZE(1..maxnoofTNLAssociations)) OF AMF-TNLAssociationSetupItem + +AMF-TNLAssociationSetupItem ::= SEQUENCE { + aMF-TNLAssociationAddress CPTransportLayerInformation, + iE-Extensions ProtocolExtensionContainer { {AMF-TNLAssociationSetupItem-ExtIEs} } OPTIONAL, + ... +} + +AMF-TNLAssociationSetupItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AMF-TNLAssociationToAddList ::= SEQUENCE (SIZE(1..maxnoofTNLAssociations)) OF AMF-TNLAssociationToAddItem + +AMF-TNLAssociationToAddItem ::= SEQUENCE { + aMF-TNLAssociationAddress CPTransportLayerInformation, + tNLAssociationUsage TNLAssociationUsage OPTIONAL, + tNLAddressWeightFactor TNLAddressWeightFactor, + iE-Extensions ProtocolExtensionContainer { {AMF-TNLAssociationToAddItem-ExtIEs} } OPTIONAL, + ... +} + +AMF-TNLAssociationToAddItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AMF-TNLAssociationToRemoveList ::= SEQUENCE (SIZE(1..maxnoofTNLAssociations)) OF AMF-TNLAssociationToRemoveItem + +AMF-TNLAssociationToRemoveItem ::= SEQUENCE { + aMF-TNLAssociationAddress CPTransportLayerInformation, + iE-Extensions ProtocolExtensionContainer { {AMF-TNLAssociationToRemoveItem-ExtIEs} } OPTIONAL, + ... +} + +AMF-TNLAssociationToRemoveItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-TNLAssociationTransportLayerAddressNGRAN CRITICALITY reject EXTENSION CPTransportLayerInformation PRESENCE optional}, + ... +} + +AMF-TNLAssociationToUpdateList ::= SEQUENCE (SIZE(1..maxnoofTNLAssociations)) OF AMF-TNLAssociationToUpdateItem + +AMF-TNLAssociationToUpdateItem ::= SEQUENCE { + aMF-TNLAssociationAddress CPTransportLayerInformation, + tNLAssociationUsage TNLAssociationUsage OPTIONAL, + tNLAddressWeightFactor TNLAddressWeightFactor OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {AMF-TNLAssociationToUpdateItem-ExtIEs} } OPTIONAL, + ... +} + +AMF-TNLAssociationToUpdateItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AMF-UE-NGAP-ID ::= INTEGER (0..1099511627775) + +AreaOfInterest ::= SEQUENCE { + areaOfInterestTAIList AreaOfInterestTAIList OPTIONAL, + areaOfInterestCellList AreaOfInterestCellList OPTIONAL, + areaOfInterestRANNodeList AreaOfInterestRANNodeList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {AreaOfInterest-ExtIEs} } OPTIONAL, + ... +} + +AreaOfInterest-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaOfInterestCellList ::= SEQUENCE (SIZE(1..maxnoofCellinAoI)) OF AreaOfInterestCellItem + +AreaOfInterestCellItem ::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {AreaOfInterestCellItem-ExtIEs} } OPTIONAL, + ... +} + +AreaOfInterestCellItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaOfInterestList ::= SEQUENCE (SIZE(1..maxnoofAoI)) OF AreaOfInterestItem + +AreaOfInterestItem ::= SEQUENCE { + areaOfInterest AreaOfInterest, + locationReportingReferenceID LocationReportingReferenceID, + iE-Extensions ProtocolExtensionContainer { {AreaOfInterestItem-ExtIEs} } OPTIONAL, + ... +} + +AreaOfInterestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaOfInterestRANNodeList ::= SEQUENCE (SIZE(1..maxnoofRANNodeinAoI)) OF AreaOfInterestRANNodeItem + +AreaOfInterestRANNodeItem ::= SEQUENCE { + globalRANNodeID GlobalRANNodeID, + iE-Extensions ProtocolExtensionContainer { {AreaOfInterestRANNodeItem-ExtIEs} } OPTIONAL, + ... +} + +AreaOfInterestRANNodeItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaOfInterestTAIList ::= SEQUENCE (SIZE(1..maxnoofTAIinAoI)) OF AreaOfInterestTAIItem + +AreaOfInterestTAIItem ::= SEQUENCE { + tAI TAI, + iE-Extensions ProtocolExtensionContainer { {AreaOfInterestTAIItem-ExtIEs} } OPTIONAL, + ... +} + +AreaOfInterestTAIItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForPaging ::= SEQUENCE { + assistanceDataForRecommendedCells AssistanceDataForRecommendedCells OPTIONAL, + pagingAttemptInformation PagingAttemptInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {AssistanceDataForPaging-ExtIEs} } OPTIONAL, + ... +} + +AssistanceDataForPaging-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-NPN-PagingAssistanceInformation CRITICALITY ignore EXTENSION NPN-PagingAssistanceInformation PRESENCE optional }| + { ID id-PagingAssisDataforCEcapabUE CRITICALITY ignore EXTENSION PagingAssisDataforCEcapabUE PRESENCE optional }, + ... +} + +AssistanceDataForRecommendedCells ::= SEQUENCE { + recommendedCellsForPaging RecommendedCellsForPaging, + iE-Extensions ProtocolExtensionContainer { {AssistanceDataForRecommendedCells-ExtIEs} } OPTIONAL, + ... +} + +AssistanceDataForRecommendedCells-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AssociatedMBSQosFlowSetupRequestList ::= SEQUENCE (SIZE(1..maxnoofMBSQoSFlows)) OF AssociatedMBSQosFlowSetupRequestItem + +AssociatedMBSQosFlowSetupRequestItem ::= SEQUENCE { + mBS-QosFlowIdentifier QosFlowIdentifier, + associatedUnicastQosFlowIdentifier QosFlowIdentifier, + iE-Extensions ProtocolExtensionContainer { { AssociatedMBSQosFlowSetupRequestItem-ExtIEs} } OPTIONAL, + ... +} + +AssociatedMBSQosFlowSetupRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AssociatedMBSQosFlowSetuporModifyRequestList ::= SEQUENCE (SIZE(1..maxnoofMBSQoSFlows)) OF AssociatedMBSQosFlowSetuporModifyRequestItem + +AssociatedMBSQosFlowSetuporModifyRequestItem ::= SEQUENCE { + mBS-QosFlowIdentifier QosFlowIdentifier, + associatedUnicastQosFlowIdentifier QosFlowIdentifier, + iE-Extensions ProtocolExtensionContainer { { AssociatedMBSQosFlowSetuporModifyRequestItem-ExtIEs} } OPTIONAL, + ... +} + +AssociatedMBSQosFlowSetuporModifyRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AssociatedQosFlowList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF AssociatedQosFlowItem + +AssociatedQosFlowItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + qosFlowMappingIndication ENUMERATED {ul, dl, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {AssociatedQosFlowItem-ExtIEs} } OPTIONAL, + ... +} + +AssociatedQosFlowItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CurrentQoSParaSetIndex CRITICALITY ignore EXTENSION AlternativeQoSParaSetIndex PRESENCE optional }, + ... +} + +AuthenticatedIndication ::= ENUMERATED {true, ...} + +AveragingWindow ::= INTEGER (0..4095, ...) + +AreaScopeOfMDT-NR ::= CHOICE { + cellBased CellBasedMDT-NR, + tABased TABasedMDT, + pLMNWide NULL, + tAIBased TAIBasedMDT, + choice-Extensions ProtocolIE-SingleContainer { {AreaScopeOfMDT-NR-ExtIEs} } +} + +AreaScopeOfMDT-NR-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +AreaScopeOfMDT-EUTRA ::= CHOICE { + cellBased CellBasedMDT-EUTRA, + tABased TABasedMDT, + pLMNWide NULL, + tAIBased TAIBasedMDT, + choice-Extensions ProtocolIE-SingleContainer { {AreaScopeOfMDT-EUTRA-ExtIEs} } +} + +AreaScopeOfMDT-EUTRA-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +AreaScopeOfNeighCellsList ::= SEQUENCE (SIZE(1..maxnoofFreqforMDT)) OF AreaScopeOfNeighCellsItem +AreaScopeOfNeighCellsItem ::= SEQUENCE { + nrFrequencyInfo NRFrequencyInfo, + pciListForMDT PCIListForMDT OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AreaScopeOfNeighCellsItem-ExtIEs} } OPTIONAL, + ... +} + +AreaScopeOfNeighCellsItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaScopeOfQMC ::= CHOICE { + cellBased CellBasedQMC, + tABased TABasedQMC, + tAIBased TAIBasedQMC, + pLMNAreaBased PLMNAreaBasedQMC, + choice-Extensions ProtocolIE-SingleContainer { { AreaScopeOfQMC-ExtIEs} } +} + +AreaScopeOfQMC-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +AvailableRANVisibleQoEMetrics ::= SEQUENCE { + applicationLayerBufferLevelList ENUMERATED {true, ...} OPTIONAL, + playoutDelayForMediaStartup ENUMERATED {true, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AvailableRANVisibleQoEMetrics-ExtIEs} } OPTIONAL, + ... +} + +AvailableRANVisibleQoEMetrics-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- B + +BeamMeasurementsReportConfiguration ::= SEQUENCE { + beamMeasurementsReportQuantity BeamMeasurementsReportQuantity OPTIONAL, + maxNrofRS-IndexesToReport MaxNrofRS-IndexesToReport OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { BeamMeasurementsReportConfiguration-ExtIEs} } OPTIONAL, + ... +} + +BeamMeasurementsReportConfiguration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +BeamMeasurementsReportQuantity ::= SEQUENCE { + rSRP ENUMERATED {true, ...}, + rSRQ ENUMERATED {true, ...}, + sINR ENUMERATED {true, ...}, + iE-Extensions ProtocolExtensionContainer { { BeamMeasurementsReportQuantity-ExtIEs} } OPTIONAL, + ... +} + +BeamMeasurementsReportQuantity-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +BitRate ::= INTEGER (0..4000000000000, ...) + +BroadcastCancelledAreaList ::= CHOICE { + cellIDCancelledEUTRA CellIDCancelledEUTRA, + tAICancelledEUTRA TAICancelledEUTRA, + emergencyAreaIDCancelledEUTRA EmergencyAreaIDCancelledEUTRA, + cellIDCancelledNR CellIDCancelledNR, + tAICancelledNR TAICancelledNR, + emergencyAreaIDCancelledNR EmergencyAreaIDCancelledNR, + choice-Extensions ProtocolIE-SingleContainer { {BroadcastCancelledAreaList-ExtIEs} } +} + +BroadcastCancelledAreaList-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +BroadcastCompletedAreaList ::= CHOICE { + cellIDBroadcastEUTRA CellIDBroadcastEUTRA, + tAIBroadcastEUTRA TAIBroadcastEUTRA, + emergencyAreaIDBroadcastEUTRA EmergencyAreaIDBroadcastEUTRA, + cellIDBroadcastNR CellIDBroadcastNR, + tAIBroadcastNR TAIBroadcastNR, + emergencyAreaIDBroadcastNR EmergencyAreaIDBroadcastNR, + choice-Extensions ProtocolIE-SingleContainer { {BroadcastCompletedAreaList-ExtIEs} } +} + +BroadcastCompletedAreaList-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +BroadcastPLMNList ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF BroadcastPLMNItem + +BroadcastPLMNItem ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + tAISliceSupportList SliceSupportList, + iE-Extensions ProtocolExtensionContainer { {BroadcastPLMNItem-ExtIEs} } OPTIONAL, + ... +} + +BroadcastPLMNItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-NPN-Support CRITICALITY reject EXTENSION NPN-Support PRESENCE optional}| + {ID id-ExtendedTAISliceSupportList CRITICALITY reject EXTENSION ExtendedSliceSupportList PRESENCE optional}| + {ID id-TAINSAGSupportList CRITICALITY ignore EXTENSION TAINSAGSupportList PRESENCE optional}, + ... +} + +BluetoothMeasurementConfiguration ::= SEQUENCE { + bluetoothMeasConfig BluetoothMeasConfig, + bluetoothMeasConfigNameList BluetoothMeasConfigNameList OPTIONAL, + bt-rssi ENUMERATED {true, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { BluetoothMeasurementConfiguration-ExtIEs } } OPTIONAL, + ... +} + +BluetoothMeasurementConfiguration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +BluetoothMeasConfigNameList ::= SEQUENCE (SIZE(1..maxnoofBluetoothName)) OF BluetoothMeasConfigNameItem + +BluetoothMeasConfigNameItem ::= SEQUENCE { + bluetoothName BluetoothName, + iE-Extensions ProtocolExtensionContainer { { BluetoothMeasConfigNameItem-ExtIEs } } OPTIONAL, + ... +} + +BluetoothMeasConfigNameItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +BluetoothMeasConfig::= ENUMERATED {setup,...} + +BluetoothName ::= OCTET STRING (SIZE (1..248)) + +BurstArrivalTime ::= OCTET STRING + +-- C + +CAG-ID ::= BIT STRING (SIZE(32)) + +CancelAllWarningMessages ::= ENUMERATED { + true, + ... +} + +CancelledCellsInEAI-EUTRA ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CancelledCellsInEAI-EUTRA-Item + +CancelledCellsInEAI-EUTRA-Item ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellsInEAI-EUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellsInEAI-EUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CancelledCellsInEAI-NR ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CancelledCellsInEAI-NR-Item + +CancelledCellsInEAI-NR-Item ::= SEQUENCE { + nR-CGI NR-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellsInEAI-NR-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellsInEAI-NR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CancelledCellsInTAI-EUTRA ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CancelledCellsInTAI-EUTRA-Item + +CancelledCellsInTAI-EUTRA-Item ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellsInTAI-EUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellsInTAI-EUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CancelledCellsInTAI-NR ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CancelledCellsInTAI-NR-Item + +CancelledCellsInTAI-NR-Item ::= SEQUENCE{ + nR-CGI NR-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellsInTAI-NR-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellsInTAI-NR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CandidateCellList ::= SEQUENCE (SIZE(1.. maxnoofCandidateCells)) OF CandidateCellItem + +CandidateCellItem ::= SEQUENCE{ + candidateCell CandidateCell, + iE-Extensions ProtocolExtensionContainer { {CandidateCellItem-ExtIEs} } OPTIONAL, + ... +} + +CandidateCellItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CandidateCell::= CHOICE { + candidateCGI CandidateCellID, + candidatePCI CandidatePCI, + choice-Extensions ProtocolIE-SingleContainer { { CandidateCell-ExtIEs} } +} + +CandidateCell-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + + +CandidateCellID::= SEQUENCE { + candidateCellID NR-CGI, + iE-Extensions ProtocolExtensionContainer { { CandidateCellID-ExtIEs} } OPTIONAL, + ... +} + +CandidateCellID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CandidatePCI::= SEQUENCE { + candidatePCI INTEGER (0..1007, ...), + candidateNRARFCN INTEGER (0..maxNRARFCN), + iE-Extensions ProtocolExtensionContainer { { CandidatePCI-ExtIEs} } OPTIONAL, + ... +} + +CandidatePCI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +Cause ::= CHOICE { + radioNetwork CauseRadioNetwork, + transport CauseTransport, + nas CauseNas, + protocol CauseProtocol, + misc CauseMisc, + choice-Extensions ProtocolIE-SingleContainer { {Cause-ExtIEs} } +} + +Cause-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + not-enough-user-plane-processing-resources, + hardware-failure, + om-intervention, + unknown-PLMN-or-SNPN, + unspecified, + ... +} + +CauseNas ::= ENUMERATED { + normal-release, + authentication-failure, + deregister, + unspecified, + ..., + uE-not-in-PLMN-serving-area +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + abstract-syntax-error-falsely-constructed-message, + unspecified, + ... +} + +CauseRadioNetwork ::= ENUMERATED { + unspecified, + txnrelocoverall-expiry, + successful-handover, + release-due-to-ngran-generated-reason, + release-due-to-5gc-generated-reason, + handover-cancelled, + partial-handover, + ho-failure-in-target-5GC-ngran-node-or-target-system, + ho-target-not-allowed, + tngrelocoverall-expiry, + tngrelocprep-expiry, + cell-not-available, + unknown-targetID, + no-radio-resources-available-in-target-cell, + unknown-local-UE-NGAP-ID, + inconsistent-remote-UE-NGAP-ID, + handover-desirable-for-radio-reason, + time-critical-handover, + resource-optimisation-handover, + reduce-load-in-serving-cell, + user-inactivity, + radio-connection-with-ue-lost, + radio-resources-not-available, + invalid-qos-combination, + failure-in-radio-interface-procedure, + interaction-with-other-procedure, + unknown-PDU-session-ID, + unkown-qos-flow-ID, + multiple-PDU-session-ID-instances, + multiple-qos-flow-ID-instances, + encryption-and-or-integrity-protection-algorithms-not-supported, + ng-intra-system-handover-triggered, + ng-inter-system-handover-triggered, + xn-handover-triggered, + not-supported-5QI-value, + ue-context-transfer, + ims-voice-eps-fallback-or-rat-fallback-triggered, + up-integrity-protection-not-possible, + up-confidentiality-protection-not-possible, + slice-not-supported, + ue-in-rrc-inactive-state-not-reachable, + redirection, + resources-not-available-for-the-slice, + ue-max-integrity-protected-data-rate-reason, + release-due-to-cn-detected-mobility, + ..., + n26-interface-not-available, + release-due-to-pre-emption, + multiple-location-reporting-reference-ID-instances, + rsn-not-available-for-the-up, + npn-access-denied, + cag-only-access-denied, + insufficient-ue-capabilities, + redcap-ue-not-supported, + unknown-MBS-Session-ID, + indicated-MBS-session-area-information-not-served-by-the-gNB, + inconsistent-slice-info-for-the-session, + misaligned-association-for-multicast-unicast +} + +CauseTransport ::= ENUMERATED { + transport-resource-unavailable, + unspecified, + ... +} + +Cell-CAGInformation ::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + cellCAGList CellCAGList, + iE-Extensions ProtocolExtensionContainer { {Cell-CAGInformation-ExtIEs} } OPTIONAL, + ... +} + +Cell-CAGInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +CellCAGList ::= SEQUENCE (SIZE(1..maxnoofCAGSperCell)) OF CAG-ID + +CellIDBroadcastEUTRA ::= SEQUENCE (SIZE(1..maxnoofCellIDforWarning)) OF CellIDBroadcastEUTRA-Item + +CellIDBroadcastEUTRA-Item ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + iE-Extensions ProtocolExtensionContainer { {CellIDBroadcastEUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +CellIDBroadcastEUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIDBroadcastNR ::= SEQUENCE (SIZE(1..maxnoofCellIDforWarning)) OF CellIDBroadcastNR-Item + +CellIDBroadcastNR-Item ::= SEQUENCE { + nR-CGI NR-CGI, + iE-Extensions ProtocolExtensionContainer { {CellIDBroadcastNR-Item-ExtIEs} } OPTIONAL, + ... +} + +CellIDBroadcastNR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIDCancelledEUTRA ::= SEQUENCE (SIZE(1..maxnoofCellIDforWarning)) OF CellIDCancelledEUTRA-Item + +CellIDCancelledEUTRA-Item ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CellIDCancelledEUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +CellIDCancelledEUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIDCancelledNR ::= SEQUENCE (SIZE(1..maxnoofCellIDforWarning)) OF CellIDCancelledNR-Item + +CellIDCancelledNR-Item ::= SEQUENCE { + nR-CGI NR-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CellIDCancelledNR-Item-ExtIEs} } OPTIONAL, + ... +} + +CellIDCancelledNR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIDListForRestart ::= CHOICE { + eUTRA-CGIListforRestart EUTRA-CGIList, + nR-CGIListforRestart NR-CGIList, + choice-Extensions ProtocolIE-SingleContainer { {CellIDListForRestart-ExtIEs} } +} + +CellIDListForRestart-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +CellSize ::= ENUMERATED {verysmall, small, medium, large, ...} + + +CellType ::= SEQUENCE { + cellSize CellSize, + iE-Extensions ProtocolExtensionContainer { {CellType-ExtIEs} } OPTIONAL, + ... +} + +CellType-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CEmodeBSupport-Indicator ::= ENUMERATED {supported,...} + + +CEmodeBrestricted ::= ENUMERATED { + restricted, + not-restricted, + ... +} + +CNAssistedRANTuning ::= SEQUENCE { + expectedUEBehaviour ExpectedUEBehaviour OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CNAssistedRANTuning-ExtIEs} } OPTIONAL, + ... +} + +CNAssistedRANTuning-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CNsubgroupID ::= INTEGER (0..7, ...) + +CNTypeRestrictionsForEquivalent ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF CNTypeRestrictionsForEquivalentItem + +CNTypeRestrictionsForEquivalentItem ::= SEQUENCE { + plmnIdentity PLMNIdentity, + cn-Type ENUMERATED {epc-forbidden, fiveGC-forbidden, ...}, + iE-Extensions ProtocolExtensionContainer { {CNTypeRestrictionsForEquivalentItem-ExtIEs} } OPTIONAL, + ... +} + +CNTypeRestrictionsForEquivalentItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::={ + ... +} + +CNTypeRestrictionsForServing ::= ENUMERATED { + epc-forbidden, + ... +} + +CommonNetworkInstance ::= OCTET STRING + +CompletedCellsInEAI-EUTRA ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CompletedCellsInEAI-EUTRA-Item + +CompletedCellsInEAI-EUTRA-Item ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellsInEAI-EUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellsInEAI-EUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CompletedCellsInEAI-NR ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CompletedCellsInEAI-NR-Item + +CompletedCellsInEAI-NR-Item ::= SEQUENCE { + nR-CGI NR-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellsInEAI-NR-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellsInEAI-NR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CompletedCellsInTAI-EUTRA ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CompletedCellsInTAI-EUTRA-Item + +CompletedCellsInTAI-EUTRA-Item ::= SEQUENCE{ + eUTRA-CGI EUTRA-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellsInTAI-EUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellsInTAI-EUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CompletedCellsInTAI-NR ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CompletedCellsInTAI-NR-Item + +CompletedCellsInTAI-NR-Item ::= SEQUENCE{ + nR-CGI NR-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellsInTAI-NR-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellsInTAI-NR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ConcurrentWarningMessageInd ::= ENUMERATED { + true, + ... +} + +ConfidentialityProtectionIndication ::= ENUMERATED { + required, + preferred, + not-needed, + ... +} + +ConfidentialityProtectionResult ::= ENUMERATED { + performed, + not-performed, + ... +} + +ConfiguredTACIndication ::= ENUMERATED { + true, + ... +} + +CoreNetworkAssistanceInformationForInactive ::= SEQUENCE { + uEIdentityIndexValue UEIdentityIndexValue, + uESpecificDRX PagingDRX OPTIONAL, + periodicRegistrationUpdateTimer PeriodicRegistrationUpdateTimer, + mICOModeIndication MICOModeIndication OPTIONAL, + tAIListForInactive TAIListForInactive, + expectedUEBehaviour ExpectedUEBehaviour OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CoreNetworkAssistanceInformationForInactive-ExtIEs} } OPTIONAL, + ... +} + +CoreNetworkAssistanceInformationForInactive-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-EUTRA-PagingeDRXInformation CRITICALITY ignore EXTENSION EUTRA-PagingeDRXInformation PRESENCE optional }| + { ID id-ExtendedUEIdentityIndexValue CRITICALITY ignore EXTENSION ExtendedUEIdentityIndexValue PRESENCE optional }| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore EXTENSION UERadioCapabilityForPaging PRESENCE optional }| + { ID id-MicoAllPLMN CRITICALITY ignore EXTENSION MicoAllPLMN PRESENCE optional }| + { ID id-NR-PagingeDRXInformation CRITICALITY ignore EXTENSION NR-PagingeDRXInformation PRESENCE optional }| + { ID id-PagingCauseIndicationForVoiceService CRITICALITY ignore EXTENSION PagingCauseIndicationForVoiceService PRESENCE optional }| + { ID id-PEIPSassistanceInformation CRITICALITY ignore EXTENSION PEIPSassistanceInformation PRESENCE optional }| + { ID id-HashedUEIdentityIndexValue CRITICALITY ignore EXTENSION HashedUEIdentityIndexValue PRESENCE optional }, + ... +} + +COUNTValueForPDCP-SN12 ::= SEQUENCE { + pDCP-SN12 INTEGER (0..4095), + hFN-PDCP-SN12 INTEGER (0..1048575), + iE-Extensions ProtocolExtensionContainer { {COUNTValueForPDCP-SN12-ExtIEs} } OPTIONAL, + ... +} + +COUNTValueForPDCP-SN12-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +COUNTValueForPDCP-SN18 ::= SEQUENCE { + pDCP-SN18 INTEGER (0..262143), + hFN-PDCP-SN18 INTEGER (0..16383), + iE-Extensions ProtocolExtensionContainer { {COUNTValueForPDCP-SN18-ExtIEs} } OPTIONAL, + ... +} + +COUNTValueForPDCP-SN18-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CoverageEnhancementLevel ::= OCTET STRING + +CPTransportLayerInformation ::= CHOICE { + endpointIPAddress TransportLayerAddress, + choice-Extensions ProtocolIE-SingleContainer { {CPTransportLayerInformation-ExtIEs} } +} + +CPTransportLayerInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-EndpointIPAddressAndPort CRITICALITY reject TYPE EndpointIPAddressAndPort PRESENCE mandatory }, + ... +} + +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE(1..maxnoofErrors)) OF CriticalityDiagnostics-IE-Item + +CriticalityDiagnostics-IE-Item ::= SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellBasedMDT-NR::= SEQUENCE { + cellIdListforMDT CellIdListforMDT-NR, + iE-Extensions ProtocolExtensionContainer { {CellBasedMDT-NR-ExtIEs} } OPTIONAL, + ... +} + +CellBasedMDT-NR-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIdListforMDT-NR ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF NR-CGI + + +CellBasedMDT-EUTRA::= SEQUENCE { + cellIdListforMDT CellIdListforMDT-EUTRA, + iE-Extensions ProtocolExtensionContainer { {CellBasedMDT-EUTRA-ExtIEs} } OPTIONAL, + ... +} + +CellBasedMDT-EUTRA-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellBasedQMC ::= SEQUENCE { + cellIdListforQMC CellIdListforQMC, + iE-Extensions ProtocolExtensionContainer { {CellBasedQMC-ExtIEs} } OPTIONAL, + ... +} + +CellBasedQMC-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIdListforQMC ::= SEQUENCE (SIZE(1..maxnoofCellIDforQMC)) OF NGRAN-CGI + +CellIdListforMDT-EUTRA ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF EUTRA-CGI + + +-- D + +DataCodingScheme ::= BIT STRING (SIZE(8)) + +DataForwardingAccepted ::= ENUMERATED { + data-forwarding-accepted, + ... +} + +DataForwardingNotPossible ::= ENUMERATED { + data-forwarding-not-possible, + ... +} + +DataForwardingResponseDRBList ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF DataForwardingResponseDRBItem + +DataForwardingResponseDRBItem ::= SEQUENCE { + dRB-ID DRB-ID, + dLForwardingUP-TNLInformation UPTransportLayerInformation OPTIONAL, + uLForwardingUP-TNLInformation UPTransportLayerInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{DataForwardingResponseDRBItem-ExtIEs}} OPTIONAL, + ... +} + +DataForwardingResponseDRBItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DAPSRequestInfo ::= SEQUENCE { + dAPSIndicator ENUMERATED {daps-ho-required, ...}, + iE-Extensions ProtocolExtensionContainer { {DAPSRequestInfo-ExtIEs} } OPTIONAL, + ... +} + +DAPSRequestInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DAPSResponseInfoList ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DAPSResponseInfoItem + +DAPSResponseInfoItem ::= SEQUENCE { + dRB-ID DRB-ID, + dAPSResponseInfo DAPSResponseInfo, + iE-Extension ProtocolExtensionContainer { {DAPSResponseInfoItem-ExtIEs} } OPTIONAL, + ... +} + +DAPSResponseInfoItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DAPSResponseInfo ::= SEQUENCE { + dapsresponseindicator ENUMERATED {daps-ho-accepted, daps-ho-not-accepted, ...}, + iE-Extensions ProtocolExtensionContainer { { DAPSResponseInfo-ExtIEs} } OPTIONAL, + ... +} + +DAPSResponseInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +DataForwardingResponseERABList ::= SEQUENCE (SIZE(1..maxnoofE-RABs)) OF DataForwardingResponseERABListItem + +DataForwardingResponseERABListItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dLForwardingUP-TNLInformation UPTransportLayerInformation, + iE-Extensions ProtocolExtensionContainer { {DataForwardingResponseERABListItem-ExtIEs} } OPTIONAL, + ... +} + +DataForwardingResponseERABListItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DelayCritical ::= ENUMERATED { + delay-critical, + non-delay-critical, + ... +} + +DL-CP-SecurityInformation ::= SEQUENCE { + dl-NAS-MAC DL-NAS-MAC, + iE-Extensions ProtocolExtensionContainer { { DL-CP-SecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +DL-CP-SecurityInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DL-NAS-MAC ::= BIT STRING (SIZE (16)) + +DLForwarding ::= ENUMERATED { + dl-forwarding-proposed, + ... +} + +DL-NGU-TNLInformationReused ::= ENUMERATED { + true, + ... +} + +DirectForwardingPathAvailability ::= ENUMERATED { + direct-path-available, + ... +} + +DRB-ID ::= INTEGER (1..32, ...) + +DRBsSubjectToStatusTransferList ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF DRBsSubjectToStatusTransferItem + +DRBsSubjectToStatusTransferItem ::= SEQUENCE { + dRB-ID DRB-ID, + dRBStatusUL DRBStatusUL, + dRBStatusDL DRBStatusDL, + iE-Extension ProtocolExtensionContainer { {DRBsSubjectToStatusTransferItem-ExtIEs} } OPTIONAL, + ... +} + +DRBsSubjectToStatusTransferItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-OldAssociatedQosFlowList-ULendmarkerexpected CRITICALITY ignore EXTENSION AssociatedQosFlowList PRESENCE optional }, + ... +} + +DRBStatusDL ::= CHOICE { + dRBStatusDL12 DRBStatusDL12, + dRBStatusDL18 DRBStatusDL18, + choice-Extensions ProtocolIE-SingleContainer { {DRBStatusDL-ExtIEs} } +} + +DRBStatusDL-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +DRBStatusDL12 ::= SEQUENCE { + dL-COUNTValue COUNTValueForPDCP-SN12, + iE-Extension ProtocolExtensionContainer { {DRBStatusDL12-ExtIEs} } OPTIONAL, + ... +} + +DRBStatusDL12-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DRBStatusDL18 ::= SEQUENCE { + dL-COUNTValue COUNTValueForPDCP-SN18, + iE-Extension ProtocolExtensionContainer { {DRBStatusDL18-ExtIEs} } OPTIONAL, + ... +} + +DRBStatusDL18-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DRBStatusUL ::= CHOICE { + dRBStatusUL12 DRBStatusUL12, + dRBStatusUL18 DRBStatusUL18, + choice-Extensions ProtocolIE-SingleContainer { {DRBStatusUL-ExtIEs} } +} + +DRBStatusUL-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +DRBStatusUL12 ::= SEQUENCE { + uL-COUNTValue COUNTValueForPDCP-SN12, + receiveStatusOfUL-PDCP-SDUs BIT STRING (SIZE(1..2048)) OPTIONAL, + iE-Extension ProtocolExtensionContainer { {DRBStatusUL12-ExtIEs} } OPTIONAL, + ... +} + +DRBStatusUL12-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DRBStatusUL18 ::= SEQUENCE { + uL-COUNTValue COUNTValueForPDCP-SN18, + receiveStatusOfUL-PDCP-SDUs BIT STRING (SIZE(1..131072)) OPTIONAL, + iE-Extension ProtocolExtensionContainer { {DRBStatusUL18-ExtIEs} } OPTIONAL, + ... +} + +DRBStatusUL18-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DRBsToQosFlowsMappingList ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF DRBsToQosFlowsMappingItem + +DRBsToQosFlowsMappingItem ::= SEQUENCE { + dRB-ID DRB-ID, + associatedQosFlowList AssociatedQosFlowList, + iE-Extensions ProtocolExtensionContainer { {DRBsToQosFlowsMappingItem-ExtIEs} } OPTIONAL, + ... +} + +DRBsToQosFlowsMappingItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-DAPSRequestInfo CRITICALITY ignore EXTENSION DAPSRequestInfo PRESENCE optional }, + ... +} + +Dynamic5QIDescriptor ::= SEQUENCE { + priorityLevelQos PriorityLevelQos, + packetDelayBudget PacketDelayBudget, + packetErrorRate PacketErrorRate, + fiveQI FiveQI OPTIONAL, + delayCritical DelayCritical OPTIONAL, +-- The above IE shall be present in case of GBR QoS flow + averagingWindow AveragingWindow OPTIONAL, +-- The above IE shall be present in case of GBR QoS flow + maximumDataBurstVolume MaximumDataBurstVolume OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {Dynamic5QIDescriptor-ExtIEs} } OPTIONAL, + ... +} + +Dynamic5QIDescriptor-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-ExtendedPacketDelayBudget CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }| + { ID id-CNPacketDelayBudgetDL CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }| + { ID id-CNPacketDelayBudgetUL CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }, + ... +} + +-- E + +EarlyMeasurement ::= ENUMERATED {true, ...} + +EarlyStatusTransfer-TransparentContainer ::= SEQUENCE { + procedureStage ProcedureStageChoice, + iE-Extensions ProtocolExtensionContainer { {EarlyStatusTransfer-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +EarlyStatusTransfer-TransparentContainer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ProcedureStageChoice ::= CHOICE { + first-dl-count FirstDLCount, + choice-Extensions ProtocolIE-SingleContainer { {ProcedureStageChoice-ExtIEs} } +} + +ProcedureStageChoice-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +FirstDLCount ::= SEQUENCE { + dRBsSubjectToEarlyStatusTransfer DRBsSubjectToEarlyStatusTransfer-List, + iE-Extension ProtocolExtensionContainer { {FirstDLCount-ExtIEs} } OPTIONAL, + ... +} + +FirstDLCount-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +DRBsSubjectToEarlyStatusTransfer-List ::= SEQUENCE (SIZE (1.. maxnoofDRBs)) OF DRBsSubjectToEarlyStatusTransfer-Item + +DRBsSubjectToEarlyStatusTransfer-Item ::= SEQUENCE { + dRB-ID DRB-ID, + firstDLCOUNT DRBStatusDL, + iE-Extension ProtocolExtensionContainer { { DRBsSubjectToEarlyStatusTransfer-Item-ExtIEs} } OPTIONAL, + ... +} + +DRBsSubjectToEarlyStatusTransfer-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +EDT-Session ::= ENUMERATED { + true, + ... +} + +EmergencyAreaID ::= OCTET STRING (SIZE(3)) + +EmergencyAreaIDBroadcastEUTRA ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaIDBroadcastEUTRA-Item + +EmergencyAreaIDBroadcastEUTRA-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + completedCellsInEAI-EUTRA CompletedCellsInEAI-EUTRA, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaIDBroadcastEUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaIDBroadcastEUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaIDBroadcastNR ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaIDBroadcastNR-Item + +EmergencyAreaIDBroadcastNR-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + completedCellsInEAI-NR CompletedCellsInEAI-NR, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaIDBroadcastNR-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaIDBroadcastNR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaIDCancelledEUTRA ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaIDCancelledEUTRA-Item + +EmergencyAreaIDCancelledEUTRA-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + cancelledCellsInEAI-EUTRA CancelledCellsInEAI-EUTRA, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaIDCancelledEUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaIDCancelledEUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaIDCancelledNR ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaIDCancelledNR-Item + +EmergencyAreaIDCancelledNR-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + cancelledCellsInEAI-NR CancelledCellsInEAI-NR, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaIDCancelledNR-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaIDCancelledNR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaIDList ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID + +EmergencyAreaIDListForRestart ::= SEQUENCE (SIZE(1..maxnoofEAIforRestart)) OF EmergencyAreaID + +EmergencyFallbackIndicator ::= SEQUENCE { + emergencyFallbackRequestIndicator EmergencyFallbackRequestIndicator, + emergencyServiceTargetCN EmergencyServiceTargetCN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {EmergencyFallbackIndicator-ExtIEs} } OPTIONAL, + ... +} + +EmergencyFallbackIndicator-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyFallbackRequestIndicator ::= ENUMERATED { + emergency-fallback-requested, + ... +} + +EmergencyServiceTargetCN ::= ENUMERATED { + fiveGC, + epc, + ... +} + +ENB-ID ::= CHOICE { + macroENB-ID BIT STRING (SIZE(20)), + homeENB-ID BIT STRING (SIZE(28)), + short-macroENB-ID BIT STRING (SIZE(18)), + long-macroENB-ID BIT STRING (SIZE(21)), + choice-Extensions ProtocolIE-SingleContainer { { ENB-ID-ExtIEs} } +} + +ENB-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + + +Enhanced-CoverageRestriction ::= ENUMERATED {restricted, ... } + + +Extended-ConnectedTime ::= INTEGER (0..255) + +EN-DCSONConfigurationTransfer ::= OCTET STRING + +EndpointIPAddressAndPort ::=SEQUENCE { + endpointIPAddress TransportLayerAddress, + portNumber PortNumber, + iE-Extensions ProtocolExtensionContainer { { EndpointIPAddressAndPort-ExtIEs} } OPTIONAL +} + +EndIndication ::= ENUMERATED { + no-further-data, + further-data-exists, + ... +} + +EndpointIPAddressAndPort-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EquivalentPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMNIdentity + +EPS-TAC ::= OCTET STRING (SIZE(2)) + +EPS-TAI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + ePS-TAC EPS-TAC, + iE-Extensions ProtocolExtensionContainer { {EPS-TAI-ExtIEs} } OPTIONAL, + ... +} + +EPS-TAI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RAB-ID ::= INTEGER (0..15, ...) + +E-RABInformationList ::= SEQUENCE (SIZE(1..maxnoofE-RABs)) OF E-RABInformationItem + +E-RABInformationItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dLForwarding DLForwarding OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABInformationItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABInformationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-SourceTNLAddrInfo CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}| + {ID id-SourceNodeTNLAddrInfo CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}, + ... +} + +EUTRACellIdentity ::= BIT STRING (SIZE(28)) + +EUTRA-CGI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + eUTRACellIdentity EUTRACellIdentity, + iE-Extensions ProtocolExtensionContainer { {EUTRA-CGI-ExtIEs} } OPTIONAL, + ... +} + +EUTRA-CGI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRA-CGIList ::= SEQUENCE (SIZE(1..maxnoofCellsinngeNB)) OF EUTRA-CGI + +EUTRA-CGIListForWarning ::= SEQUENCE (SIZE(1..maxnoofCellIDforWarning)) OF EUTRA-CGI + +EUTRA-PagingeDRXInformation ::= SEQUENCE { + eUTRA-paging-eDRX-Cycle EUTRA-Paging-eDRX-Cycle, + eUTRA-paging-Time-Window EUTRA-Paging-Time-Window OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {EUTRA-PagingeDRXInformation-ExtIEs} } OPTIONAL, + ... +} + +EUTRA-PagingeDRXInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRA-Paging-eDRX-Cycle ::= ENUMERATED { + hfhalf, hf1, hf2, hf4, hf6, + hf8, hf10, hf12, hf14, hf16, + hf32, hf64, hf128, hf256, + ... +} + +EUTRA-Paging-Time-Window ::= ENUMERATED { + s1, s2, s3, s4, s5, + s6, s7, s8, s9, s10, + s11, s12, s13, s14, s15, s16, + ... +} + +EUTRAencryptionAlgorithms ::= BIT STRING (SIZE(16, ...)) + +EUTRAintegrityProtectionAlgorithms ::= BIT STRING (SIZE(16, ...)) + +EventType ::= ENUMERATED { + direct, + change-of-serve-cell, + ue-presence-in-area-of-interest, + stop-change-of-serve-cell, + stop-ue-presence-in-area-of-interest, + cancel-location-reporting-for-the-ue, + ... +} + +ExcessPacketDelayThresholdConfiguration ::= SEQUENCE (SIZE(1..maxnoofThresholdsForExcessPacketDelay)) OF ExcessPacketDelayThresholdItem + +ExcessPacketDelayThresholdItem ::= SEQUENCE { + fiveQi FiveQI, + excessPacketDelayThresholdValue ExcessPacketDelayThresholdValue, + iE-Extensions ProtocolExtensionContainer { { ExcessPacketDelayThresholdItem-ExtIEs} } OPTIONAL, + ... +} + +ExcessPacketDelayThresholdItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ExcessPacketDelayThresholdValue ::= ENUMERATED { +ms0dot25, ms0dot5, ms1, ms2, ms4, ms5, ms10, ms20, ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, + ... +} + +ExpectedActivityPeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181, ...) + +ExpectedHOInterval ::= ENUMERATED { + sec15, sec30, sec60, sec90, sec120, sec180, long-time, + ... +} + +ExpectedIdlePeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181, ...) + +ExpectedUEActivityBehaviour ::= SEQUENCE { + expectedActivityPeriod ExpectedActivityPeriod OPTIONAL, + expectedIdlePeriod ExpectedIdlePeriod OPTIONAL, + sourceOfUEActivityBehaviourInformation SourceOfUEActivityBehaviourInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ExpectedUEActivityBehaviour-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEActivityBehaviour-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ExpectedUEBehaviour ::= SEQUENCE { + expectedUEActivityBehaviour ExpectedUEActivityBehaviour OPTIONAL, + expectedHOInterval ExpectedHOInterval OPTIONAL, + expectedUEMobility ExpectedUEMobility OPTIONAL, + expectedUEMovingTrajectory ExpectedUEMovingTrajectory OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ExpectedUEBehaviour-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEBehaviour-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ExpectedUEMobility ::= ENUMERATED { + stationary, + mobile, + ... +} + +ExpectedUEMovingTrajectory ::= SEQUENCE (SIZE(1..maxnoofCellsUEMovingTrajectory)) OF ExpectedUEMovingTrajectoryItem + +ExpectedUEMovingTrajectoryItem ::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + timeStayedInCell INTEGER (0..4095) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ExpectedUEMovingTrajectoryItem-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEMovingTrajectoryItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +Extended-AMFName ::= SEQUENCE { + aMFNameVisibleString AMFNameVisibleString OPTIONAL, + aMFNameUTF8String AMFNameUTF8String OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Extended-AMFName-ExtIEs } } OPTIONAL, + ... +} + +Extended-AMFName-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ExtendedPacketDelayBudget ::= INTEGER (1..65535, ..., 65536..109999) + + +Extended-RANNodeName ::= SEQUENCE { + rANNodeNameVisibleString RANNodeNameVisibleString OPTIONAL, + rANNodeNameUTF8String RANNodeNameUTF8String OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Extended-RANNodeName-ExtIEs } } OPTIONAL, ... +} + +Extended-RANNodeName-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ExtendedRATRestrictionInformation ::= SEQUENCE { + primaryRATRestriction BIT STRING (SIZE(8, ...)), + secondaryRATRestriction BIT STRING (SIZE(8, ...)), + iE-Extensions ProtocolExtensionContainer { {ExtendedRATRestrictionInformation-ExtIEs} } OPTIONAL, + ... +} + +ExtendedRATRestrictionInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ExtendedRNC-ID ::= INTEGER (4096..65535) + +ExtendedSliceSupportList ::= SEQUENCE (SIZE(1..maxnoofExtSliceItems)) OF SliceSupportItem + +ExtendedUEIdentityIndexValue ::= BIT STRING (SIZE(16)) + +EventTrigger::= CHOICE { + outOfCoverage ENUMERATED {true, ...}, + eventL1LoggedMDTConfig EventL1LoggedMDTConfig, + choice-Extensions ProtocolIE-SingleContainer { { EventTrigger-ExtIEs} } +} + +EventTrigger-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +EventL1LoggedMDTConfig ::= SEQUENCE { + l1Threshold MeasurementThresholdL1LoggedMDT, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + iE-Extensions ProtocolExtensionContainer { { EventL1LoggedMDTConfig-ExtIEs} } OPTIONAL, + ... +} + +EventL1LoggedMDTConfig-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MeasurementThresholdL1LoggedMDT ::= CHOICE { + threshold-RSRP Threshold-RSRP, + threshold-RSRQ Threshold-RSRQ, + choice-Extensions ProtocolIE-SingleContainer { { MeasurementThresholdL1LoggedMDT-ExtIEs} } +} + +MeasurementThresholdL1LoggedMDT-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +-- F + +FailureIndication ::= SEQUENCE { + uERLFReportContainer UERLFReportContainer, + iE-Extensions ProtocolExtensionContainer { { FailureIndication-ExtIEs} } OPTIONAL, + ... +} + +FailureIndication-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +FiveG-ProSeAuthorized ::= SEQUENCE { + fiveGProSeDirectDiscovery FiveGProSeDirectDiscovery OPTIONAL, + fiveGProSeDirectCommunication FiveGProSeDirectCommunication OPTIONAL, + fiveGProSeLayer2UEtoNetworkRelay FiveGProSeLayer2UEtoNetworkRelay OPTIONAL, + fiveGProSeLayer3UEtoNetworkRelay FiveGProSeLayer3UEtoNetworkRelay OPTIONAL, + fiveGProSeLayer2RemoteUE FiveGProSeLayer2RemoteUE OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {FiveG-ProSeAuthorized-ExtIEs} } OPTIONAL, + ... +} + +FiveG-ProSeAuthorized-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +FiveGProSeDirectDiscovery ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +FiveGProSeDirectCommunication ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +FiveGProSeLayer2UEtoNetworkRelay ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +FiveGProSeLayer3UEtoNetworkRelay ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +FiveGProSeLayer2RemoteUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + + + +FiveG-ProSePC5QoSParameters ::= SEQUENCE { + fiveGProSepc5QoSFlowList FiveGProSePC5QoSFlowList, + fiveGProSepc5LinkAggregateBitRates BitRate OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { FiveG-ProSePC5QoSParameters-ExtIEs} } OPTIONAL, + ... +} + +FiveG-ProSePC5QoSParameters-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +FiveGProSePC5QoSFlowList ::= SEQUENCE (SIZE(1..maxnoofPC5QoSFlows)) OF FiveGProSePC5QoSFlowItem + +FiveGProSePC5QoSFlowItem ::= SEQUENCE { + fiveGproSepQI FiveQI, + fiveGproSepc5FlowBitRates FiveGProSePC5FlowBitRates OPTIONAL, + fiveGproSerange Range OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { FiveGProSePC5QoSFlowItem-ExtIEs} } OPTIONAL, + ... +} + +FiveGProSePC5QoSFlowItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +FiveGProSePC5FlowBitRates ::= SEQUENCE { + fiveGproSeguaranteedFlowBitRate BitRate, + fiveGproSemaximumFlowBitRate BitRate, + iE-Extensions ProtocolExtensionContainer { { FiveGProSePC5FlowBitRates-ExtIEs} } OPTIONAL, + ... +} + +FiveGProSePC5FlowBitRates-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +FiveG-S-TMSI ::= SEQUENCE { + aMFSetID AMFSetID, + aMFPointer AMFPointer, + fiveG-TMSI FiveG-TMSI, + iE-Extensions ProtocolExtensionContainer { {FiveG-S-TMSI-ExtIEs} } OPTIONAL, + ... +} + +FiveG-S-TMSI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +FiveG-TMSI ::= OCTET STRING (SIZE(4)) + +FiveQI ::= INTEGER (0..255, ...) + +ForbiddenAreaInformation ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenAreaInformation-Item + +ForbiddenAreaInformation-Item ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + forbiddenTACs ForbiddenTACs, + iE-Extensions ProtocolExtensionContainer { {ForbiddenAreaInformation-Item-ExtIEs} } OPTIONAL, + ... +} + +ForbiddenAreaInformation-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ForbiddenTACs ::= SEQUENCE (SIZE(1..maxnoofForbTACs)) OF TAC + +FromEUTRANtoNGRAN ::= SEQUENCE { + sourceeNBID IntersystemSONeNBID, + targetNGRANnodeID IntersystemSONNGRANnodeID, + iE-Extensions ProtocolExtensionContainer { { FromEUTRANtoNGRAN-ExtIEs} } OPTIONAL +} + +FromEUTRANtoNGRAN-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +FromNGRANtoEUTRAN ::= SEQUENCE { + sourceNGRANnodeID IntersystemSONNGRANnodeID, + targeteNBID IntersystemSONeNBID, + iE-Extensions ProtocolExtensionContainer { { FromNGRANtoEUTRAN-ExtIEs} } OPTIONAL +} + +FromNGRANtoEUTRAN-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- G + +GBR-QosInformation ::= SEQUENCE { + maximumFlowBitRateDL BitRate, + maximumFlowBitRateUL BitRate, + guaranteedFlowBitRateDL BitRate, + guaranteedFlowBitRateUL BitRate, + notificationControl NotificationControl OPTIONAL, + maximumPacketLossRateDL PacketLossRate OPTIONAL, + maximumPacketLossRateUL PacketLossRate OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {GBR-QosInformation-ExtIEs} } OPTIONAL, + ... +} + +GBR-QosInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AlternativeQoSParaSetList CRITICALITY ignore EXTENSION AlternativeQoSParaSetList PRESENCE optional }, + ... +} + +GlobalCable-ID ::= OCTET STRING + +GlobalCable-ID-new ::= SEQUENCE { + globalCable-ID GlobalCable-ID, + tAI TAI, + iE-Extensions ProtocolExtensionContainer { { GlobalCable-ID-new-ExtIEs} } OPTIONAL, + ... +} + +GlobalCable-ID-new-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GlobalENB-ID ::= SEQUENCE { + pLMNidentity PLMNIdentity, + eNB-ID ENB-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalENB-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +GlobalGNB-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + gNB-ID GNB-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalGNB-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalGNB-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GlobalN3IWF-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + n3IWF-ID N3IWF-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalN3IWF-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalN3IWF-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GlobalLine-ID ::= SEQUENCE { + globalLineIdentity GlobalLineIdentity, + lineType LineType OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {GlobalLine-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalLine-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-TAI CRITICALITY ignore EXTENSION TAI PRESENCE optional }, + ... +} + +GlobalLineIdentity ::= OCTET STRING + +GlobalNgENB-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + ngENB-ID NgENB-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalNgENB-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalNgENB-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GlobalRANNodeID ::= CHOICE { + globalGNB-ID GlobalGNB-ID, + globalNgENB-ID GlobalNgENB-ID, + globalN3IWF-ID GlobalN3IWF-ID, + choice-Extensions ProtocolIE-SingleContainer { {GlobalRANNodeID-ExtIEs} } +} + +GlobalRANNodeID-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-GlobalTNGF-ID CRITICALITY reject TYPE GlobalTNGF-ID PRESENCE mandatory }| + { ID id-GlobalTWIF-ID CRITICALITY reject TYPE GlobalTWIF-ID PRESENCE mandatory }| + { ID id-GlobalW-AGF-ID CRITICALITY reject TYPE GlobalW-AGF-ID PRESENCE mandatory }, + ... +} + +GlobalTNGF-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + tNGF-ID TNGF-ID, + iE-Extensions ProtocolExtensionContainer { { GlobalTNGF-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalTNGF-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +GlobalTWIF-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + tWIF-ID TWIF-ID, + iE-Extensions ProtocolExtensionContainer { { GlobalTWIF-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalTWIF-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +GlobalW-AGF-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + w-AGF-ID W-AGF-ID, + iE-Extensions ProtocolExtensionContainer { { GlobalW-AGF-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalW-AGF-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GNB-ID ::= CHOICE { + gNB-ID BIT STRING (SIZE(22..32)), + choice-Extensions ProtocolIE-SingleContainer { {GNB-ID-ExtIEs} } +} + +GNB-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +GTP-TEID ::= OCTET STRING (SIZE(4)) + +GTPTunnel ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {GTPTunnel-ExtIEs} } OPTIONAL, + ... +} + +GTPTunnel-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GUAMI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + aMFRegionID AMFRegionID, + aMFSetID AMFSetID, + aMFPointer AMFPointer, + iE-Extensions ProtocolExtensionContainer { {GUAMI-ExtIEs} } OPTIONAL, + ... +} + +GUAMI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GUAMIType ::= ENUMERATED {native, mapped, ...} + +-- H + +HandoverCommandTransfer ::= SEQUENCE { + dLForwardingUP-TNLInformation UPTransportLayerInformation OPTIONAL, + qosFlowToBeForwardedList QosFlowToBeForwardedList OPTIONAL, + dataForwardingResponseDRBList DataForwardingResponseDRBList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {HandoverCommandTransfer-ExtIEs} } OPTIONAL, + ... +} + +HandoverCommandTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalDLForwardingUPTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformationList PRESENCE optional }| + { ID id-ULForwardingUP-TNLInformation CRITICALITY reject EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-AdditionalULForwardingUPTNLInformation CRITICALITY reject EXTENSION UPTransportLayerInformationList PRESENCE optional }| + { ID id-DataForwardingResponseERABList CRITICALITY ignore EXTENSION DataForwardingResponseERABList PRESENCE optional }| + { ID id-QosFlowFailedToSetupList CRITICALITY ignore EXTENSION QosFlowListWithCause PRESENCE optional }, + ... +} + +HandoverFlag ::= ENUMERATED { + handover-preparation, + ... +} + +HandoverPreparationUnsuccessfulTransfer ::= SEQUENCE { + cause Cause, + iE-Extensions ProtocolExtensionContainer { {HandoverPreparationUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +HandoverPreparationUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +HandoverRequestAcknowledgeTransfer ::= SEQUENCE { + dL-NGU-UP-TNLInformation UPTransportLayerInformation, + dLForwardingUP-TNLInformation UPTransportLayerInformation OPTIONAL, + securityResult SecurityResult OPTIONAL, + qosFlowSetupResponseList QosFlowListWithDataForwarding, + qosFlowFailedToSetupList QosFlowListWithCause OPTIONAL, + dataForwardingResponseDRBList DataForwardingResponseDRBList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {HandoverRequestAcknowledgeTransfer-ExtIEs} } OPTIONAL, + ... +} + +HandoverRequestAcknowledgeTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalDLUPTNLInformationForHOList CRITICALITY ignore EXTENSION AdditionalDLUPTNLInformationForHOList PRESENCE optional }| + { ID id-ULForwardingUP-TNLInformation CRITICALITY reject EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-AdditionalULForwardingUPTNLInformation CRITICALITY reject EXTENSION UPTransportLayerInformationList PRESENCE optional }| + { ID id-DataForwardingResponseERABList CRITICALITY ignore EXTENSION DataForwardingResponseERABList PRESENCE optional }| + { ID id-RedundantDL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-UsedRSNInformation CRITICALITY ignore EXTENSION RedundantPDUSessionInformation PRESENCE optional }| + { ID id-GlobalRANNodeID CRITICALITY ignore EXTENSION GlobalRANNodeID PRESENCE optional }| + { ID id-MBS-SupportIndicator CRITICALITY ignore EXTENSION MBS-SupportIndicator PRESENCE optional }, + ... +} + +HandoverRequiredTransfer ::= SEQUENCE { + directForwardingPathAvailability DirectForwardingPathAvailability OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {HandoverRequiredTransfer-ExtIEs} } OPTIONAL, + ... +} + +HandoverRequiredTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +HandoverResourceAllocationUnsuccessfulTransfer ::= SEQUENCE { + cause Cause, + criticalityDiagnostics CriticalityDiagnostics OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {HandoverResourceAllocationUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +HandoverResourceAllocationUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +HandoverType ::= ENUMERATED { + intra5gs, + fivegs-to-eps, + eps-to-5gs, + ..., + fivegs-to-utran +} + +HashedUEIdentityIndexValue ::= BIT STRING (SIZE(13, ...)) + + +HFCNode-ID ::= OCTET STRING + +HFCNode-ID-new ::= SEQUENCE { + hFCNode-ID HFCNode-ID, + tAI TAI, + iE-Extensions ProtocolExtensionContainer { { HFCNode-ID-new-ExtIEs} } OPTIONAL, + ... +} + +HFCNode-ID-new-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +HOReport::= SEQUENCE { + handoverReportType ENUMERATED {ho-too-early, ho-to-wrong-cell, intersystem-ping-pong, ...}, + handoverCause Cause, + sourcecellCGI NGRAN-CGI, + targetcellCGI NGRAN-CGI, + reestablishmentcellCGI NGRAN-CGI OPTIONAL, + -- The above IE shall be present if the Handover Report Type IE is set to the value "HO to wrong cell" -- + sourcecellC-RNTI BIT STRING (SIZE(16)) OPTIONAL, + targetcellinE-UTRAN EUTRA-CGI OPTIONAL, + -- The above IE shall be present if the Handover Report Type IE is set to the value "Inter System ping-pong" -- + mobilityInformation MobilityInformation OPTIONAL, + uERLFReportContainer UERLFReportContainer OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { HOReport-ExtIEs} } OPTIONAL, + ... +} + +HOReport-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +Hysteresis ::= INTEGER (0..30) + +-- I + +IAB-Authorized ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +IAB-Supported ::= ENUMERATED { + true, + ... +} + +IABNodeIndication ::= ENUMERATED { + true, + ... +} + +IMSVoiceSupportIndicator ::= ENUMERATED { + supported, + not-supported, + ... +} + +IndexToRFSP ::= INTEGER (1..256, ...) + +InfoOnRecommendedCellsAndRANNodesForPaging ::= SEQUENCE { + recommendedCellsForPaging RecommendedCellsForPaging, + recommendRANNodesForPaging RecommendedRANNodesForPaging, + iE-Extensions ProtocolExtensionContainer { {InfoOnRecommendedCellsAndRANNodesForPaging-ExtIEs} } OPTIONAL, + ... +} + +InfoOnRecommendedCellsAndRANNodesForPaging-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +IntegrityProtectionIndication ::= ENUMERATED { + required, + preferred, + not-needed, + ... +} + +IntegrityProtectionResult ::= ENUMERATED { + performed, + not-performed, + ... +} + +IntendedNumberOfPagingAttempts ::= INTEGER (1..16, ...) + +InterfacesToTrace ::= BIT STRING (SIZE(8)) + +ImmediateMDTNr ::= SEQUENCE { + measurementsToActivate MeasurementsToActivate, + m1Configuration M1Configuration OPTIONAL, +-- The above IE shall be present if the Measurements to Activate IE has the first bit set to “1” + m4Configuration M4Configuration OPTIONAL, +-- The above IE shall be present if the Measurements to Activate IE has the third bit set to “1” + m5Configuration M5Configuration OPTIONAL, +-- The above IE shall be present if the Measurements to Activate IE has the fourth bit set to “1” + m6Configuration M6Configuration OPTIONAL, +-- The above IE shall be present if the Measurements to Activate IE has the fifth bit set to “1” + m7Configuration M7Configuration OPTIONAL, +-- The above IE shall be present if the Measurements to Activate IE has the sixth bit set to “1” + bluetoothMeasurementConfiguration BluetoothMeasurementConfiguration OPTIONAL, + wLANMeasurementConfiguration WLANMeasurementConfiguration OPTIONAL, + mDT-Location-Info MDT-Location-Info OPTIONAL, + sensorMeasurementConfiguration SensorMeasurementConfiguration OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ImmediateMDTNr-ExtIEs} } OPTIONAL, + ... +} + +ImmediateMDTNr-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +InterSystemFailureIndication ::= SEQUENCE { + uERLFReportContainer UERLFReportContainer OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { InterSystemFailureIndication-ExtIEs} } OPTIONAL, + ... +} + +InterSystemFailureIndication-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +IntersystemSONConfigurationTransfer ::= SEQUENCE { + transferType IntersystemSONTransferType, + intersystemSONInformation IntersystemSONInformation, + iE-Extensions ProtocolExtensionContainer { { IntersystemSONConfigurationTransfer-ExtIEs} } OPTIONAL, + ... +} + +IntersystemSONConfigurationTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +IntersystemSONTransferType ::= CHOICE { + fromEUTRANtoNGRAN FromEUTRANtoNGRAN, + fromNGRANtoEUTRAN FromNGRANtoEUTRAN, + choice-Extensions ProtocolIE-SingleContainer { { IntersystemSONTransferType-ExtIEs} } +} +IntersystemSONTransferType-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +IntersystemSONeNBID ::= SEQUENCE { + globaleNBID GlobalENB-ID, + selectedEPSTAI EPS-TAI, + iE-Extensions ProtocolExtensionContainer { { IntersystemSONeNBID-ExtIEs} } OPTIONAL, + ... +} + +IntersystemSONeNBID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +IntersystemSONNGRANnodeID ::= SEQUENCE { + globalRANNodeID GlobalRANNodeID, + selectedTAI TAI, + iE-Extensions ProtocolExtensionContainer { { IntersystemSONNGRANnodeID-ExtIEs} } OPTIONAL, + ... +} + +IntersystemSONNGRANnodeID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +IntersystemSONInformation ::= CHOICE { + intersystemSONInformationReport IntersystemSONInformationReport, + choice-Extensions ProtocolIE-SingleContainer { { IntersystemSONInformation-ExtIEs} } +} + +IntersystemSONInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-IntersystemSONInformationRequest CRITICALITY ignore TYPE IntersystemSONInformationRequest PRESENCE mandatory }| + { ID id-IntersystemSONInformationReply CRITICALITY ignore TYPE IntersystemSONInformationReply PRESENCE mandatory }, + ... +} + +-- -------------------------------------------------------------------- +-- INTER SYSTEM SON INFORMATION REQUEST +-- -------------------------------------------------------------------- + +IntersystemSONInformationRequest ::= CHOICE { + nGRAN-CellActivation IntersystemCellActivationRequest, + resourceStatus IntersystemResourceStatusRequest, + choice-Extensions ProtocolIE-SingleContainer { { IntersystemSONInformationRequest-ExtIEs} } +} + +IntersystemSONInformationRequest-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +IntersystemCellActivationRequest ::= SEQUENCE { + activationID INTEGER (0..16384, ...), + cellsToActivateList CellsToActivateList, + iE-Extensions ProtocolExtensionContainer { { IntersystemCellActivationRequest-ExtIEs} } OPTIONAL, + ... +} + +IntersystemCellActivationRequest-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CellsToActivateList ::= SEQUENCE (SIZE(1..maxnoofCellsinNGRANNode)) OF NGRAN-CGI + + +-- -------------------------------------------------------------------- +-- Inter System Resource Status Request +-- -------------------------------------------------------------------- + +IntersystemResourceStatusRequest ::= SEQUENCE { + reportingSystem ReportingSystem, + reportCharacteristics ReportCharacteristics, + reportType ReportType, + iE-Extensions ProtocolExtensionContainer { { IntersystemResourceStatusRequest-ExtIEs} } OPTIONAL, + ... +} + +IntersystemResourceStatusRequest-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ReportingSystem ::= CHOICE { + eUTRAN EUTRAN-ReportingSystemIEs, + nGRAN NGRAN-ReportingSystemIEs, + noReporting NULL, + choice-Extensions ProtocolIE-SingleContainer { { ReportingSystem-ExtIEs}} +} + +ReportingSystem-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +EUTRAN-ReportingSystemIEs::= SEQUENCE { + eUTRAN-CellToReportList EUTRAN-CellToReportList, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-ReportingSystemIEs-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-ReportingSystemIEs-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NGRAN-ReportingSystemIEs ::= SEQUENCE { + nGRAN-CellToReportList NGRAN-CellToReportList, + iE-Extensions ProtocolExtensionContainer { {NGRAN-ReportingSystemIEs-ExtIEs} } OPTIONAL, + ... +} + +NGRAN-ReportingSystemIEs-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRAN-CellToReportList ::= SEQUENCE (SIZE(1..maxnoofReportedCells)) OF EUTRAN-CellToReportItem + +EUTRAN-CellToReportItem::= SEQUENCE { + eCGI EUTRA-CGI, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-CellToReportItem-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-CellToReportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +NGRAN-CellToReportList ::= SEQUENCE (SIZE(1.. maxnoofReportedCells)) OF NGRAN-CellToReportItem + +NGRAN-CellToReportItem::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {NGRAN-CellToReportItem-ExtIEs} } OPTIONAL, + ... +} + +NGRAN-CellToReportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ReportCharacteristics ::= BIT STRING(SIZE(32)) + +ReportType ::= CHOICE { + eventBasedReporting EventBasedReportingIEs, + periodicReporting PeriodicReportingIEs, + choice-Extensions ProtocolIE-SingleContainer { { ReportType-ExtIEs}} +} + +ReportType-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +EventBasedReportingIEs ::= SEQUENCE { + intersystemResourceThresholdLow IntersystemResourceThreshold, + intersystemResourceThresholdHigh IntersystemResourceThreshold, + numberOfMeasurementReportingLevels NumberOfMeasurementReportingLevels, + iE-Extensions ProtocolExtensionContainer { {EventBasedReportingIEs-ExtIEs} } OPTIONAL, + ... +} +EventBasedReportingIEs-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +IntersystemResourceThreshold ::= INTEGER(0..100) + +NumberOfMeasurementReportingLevels ::= ENUMERATED {n2, n3, n4, n5, n10, ...} + +PeriodicReportingIEs ::= SEQUENCE { + reportingPeriodicity ReportingPeriodicity, + iE-Extensions ProtocolExtensionContainer { {PeriodicReportingIEs-ExtIEs} } OPTIONAL, + ... +} + +PeriodicReportingIEs-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ReportingPeriodicity ::= ENUMERATED { + stop, + single, + ms1000, + ms2000, + ms5000, + ms10000, + ... +} + + +-- -------------------------------------------------------------------- +-- INTER SYSTEM SON INFORMATION REPLY +-- -------------------------------------------------------------------- + +IntersystemSONInformationReply ::= CHOICE { + nGRAN-CellActivation IntersystemCellActivationReply, + resourceStatus IntersystemResourceStatusReply, + choice-Extensions ProtocolIE-SingleContainer { { IntersystemSONInformationReply-ExtIEs} } +} + +IntersystemSONInformationReply-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +IntersystemCellActivationReply ::= SEQUENCE { + activatedCellList ActivatedCellList, + activation-ID INTEGER(0..16384, ...), + iE-Extensions ProtocolExtensionContainer { { IntersystemCellActivationReply-ExtIEs} } OPTIONAL, + ... +} + +IntersystemCellActivationReply-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ActivatedCellList ::= SEQUENCE (SIZE(1..maxnoofCellsinNGRANNode)) OF NGRAN-CGI + + +-- -------------------------------------------------------------------- +-- Inter System Resource Status Reply +-- -------------------------------------------------------------------- + +IntersystemResourceStatusReply ::= SEQUENCE { + reportingsystem ReportingSystem, + iE-Extensions ProtocolExtensionContainer { { IntersystemResourceStatusReply-ExtIEs} } OPTIONAL, + ... +} + +IntersystemResourceStatusReply-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- -------------------------------------------------------------------- +-- INTER SYSTEM SON INFORMATION REPORT +-- -------------------------------------------------------------------- + +IntersystemSONInformationReport::= CHOICE { + hOReportInformation InterSystemHOReport, + failureIndicationInformation InterSystemFailureIndication, + choice-Extensions ProtocolIE-SingleContainer { { IntersystemSONInformationReport-ExtIEs} } +} + +IntersystemSONInformationReport-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-EnergySavingIndication CRITICALITY ignore TYPE IntersystemCellStateIndication PRESENCE mandatory }| + { ID id-IntersystemResourceStatusUpdate CRITICALITY ignore TYPE IntersystemResourceStatusReport PRESENCE mandatory }, + ... +} + +IntersystemCellStateIndication ::= SEQUENCE { + notificationCellList NotificationCellList, + iE-Extensions ProtocolExtensionContainer { { IntersystemCellStateIndication-ExtIEs} } OPTIONAL, + ... +} + +IntersystemCellStateIndication-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NotificationCellList ::= SEQUENCE (SIZE(1.. maxnoofCellsinNGRANNode)) OF NotificationCell-Item + +NotificationCell-Item ::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + notifyFlag ENUMERATED {activated, deactivated, ...}, + iE-Extensions ProtocolExtensionContainer { { NotificationCell-Item-ExtIEs} } OPTIONAL, + ... +} + +NotificationCell-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- -------------------------------------------------------------------- +-- Inter System Resource Status Report +-- -------------------------------------------------------------------- + +IntersystemResourceStatusReport ::= SEQUENCE { + reportingSystem ResourceStatusReportingSystem, + iE-Extensions ProtocolExtensionContainer { { IntersystemResourceStatusReport-ExtIEs} } OPTIONAL, + ... +} + +IntersystemResourceStatusReport-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ResourceStatusReportingSystem ::= CHOICE { + eUTRAN-ReportingStatus EUTRAN-ReportingStatusIEs, + nGRAN-ReportingStatus NGRAN-ReportingStatusIEs, + choice-Extensions ProtocolIE-SingleContainer { { ResourceStatusReportingSystem-ExtIEs}} +} + +ResourceStatusReportingSystem-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +EUTRAN-ReportingStatusIEs::= SEQUENCE { + eUTRAN-CellReportList EUTRAN-CellReportList, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-ReportingStatusIEs-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-ReportingStatusIEs-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRAN-CellReportList ::= SEQUENCE (SIZE(1..maxnoofReportedCells)) OF EUTRAN-CellReportItem + +EUTRAN-CellReportItem ::= SEQUENCE { + eCGI EUTRA-CGI, + eUTRAN-CompositeAvailableCapacityGroup EUTRAN-CompositeAvailableCapacityGroup, + eUTRAN-NumberOfActiveUEs EUTRAN-NumberOfActiveUEs OPTIONAL, + eUTRAN-NoofRRCConnections NGRAN-NoofRRCConnections OPTIONAL, + eUTRAN-RadioResourceStatus EUTRAN-RadioResourceStatus OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-CellReportItem-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-CellReportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +EUTRAN-CompositeAvailableCapacityGroup ::= SEQUENCE { + dL-CompositeAvailableCapacity CompositeAvailableCapacity, + uL-CompositeAvailableCapacity CompositeAvailableCapacity, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-CompositeAvailableCapacityGroup-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-CompositeAvailableCapacityGroup-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +CompositeAvailableCapacity ::= SEQUENCE { + cellCapacityClassValue INTEGER (1..100, ...) OPTIONAL, + capacityValue INTEGER (0..100), + iE-Extensions ProtocolExtensionContainer { {CompositeAvailableCapacity-ExtIEs} } OPTIONAL, + ... +} + +CompositeAvailableCapacity-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRAN-NumberOfActiveUEs ::= INTEGER (0..16777215, ...) + +EUTRAN-RadioResourceStatus ::= SEQUENCE { + dL-GBR-PRB-usage INTEGER (0..100), + uL-GBR-PRB-usage INTEGER (0..100), + dL-non-GBR-PRB-usage INTEGER (0..100), + uL-non-GBR-PRB-usage INTEGER (0..100), + dL-Total-PRB-usage INTEGER (0..100), + uL-Total-PRB-usage INTEGER (0..100), + dL-scheduling-PDCCH-CCE-usage INTEGER (0..100) OPTIONAL, + uL-scheduling-PDCCH-CCE-usage INTEGER (0..100) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-RadioResourceStatus-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-RadioResourceStatus-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NGRAN-ReportingStatusIEs ::= SEQUENCE { + nGRAN-CellReportList NGRAN-CellReportList, + iE-Extensions ProtocolExtensionContainer { {NGRAN-ReportingStatusIEs-ExtIEs} } OPTIONAL, + ... +} + +NGRAN-ReportingStatusIEs-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NGRAN-CellReportList ::= SEQUENCE (SIZE(1..maxnoofReportedCells)) OF NGRAN-CellReportItem + +NGRAN-CellReportItem ::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + nGRAN-CompositeAvailableCapacityGroup EUTRAN-CompositeAvailableCapacityGroup, + nGRAN-NumberOfActiveUEs NGRAN-NumberOfActiveUEs OPTIONAL, + nGRAN-NoofRRCConnections NGRAN-NoofRRCConnections OPTIONAL, + nGRAN-RadioResourceStatus NGRAN-RadioResourceStatus OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {NGRAN-CellReportItem-ExtIEs} } OPTIONAL, + ... +} + +NGRAN-CellReportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +NGRAN-NumberOfActiveUEs ::= INTEGER (0..16777215, ...) + +NGRAN-NoofRRCConnections ::= INTEGER (1..65536, ...) + +NGRAN-RadioResourceStatus ::= SEQUENCE { + dL-GBR-PRB-usage-for-MIMO INTEGER (0..100), + uL-GBR-PRB-usage-for-MIMO INTEGER (0..100), + dL-non-GBR-PRB-usage-for-MIMO INTEGER (0..100), + uL-non-GBR-PRB-usage-for-MIMO INTEGER (0..100), + dL-Total-PRB-usage-for-MIMO INTEGER (0..100), + uL-Total-PRB-usage-for-MIMO INTEGER (0..100), + iE-Extensions ProtocolExtensionContainer { { NGRAN-RadioResourceStatus-ExtIEs} } OPTIONAL, + ... +} + +NGRAN-RadioResourceStatus-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +InterSystemHOReport ::= SEQUENCE { + handoverReportType InterSystemHandoverReportType, + iE-Extensions ProtocolExtensionContainer { { InterSystemHOReport-ExtIEs} } OPTIONAL, + ... +} + +InterSystemHOReport-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +InterSystemHandoverReportType ::= CHOICE { + tooearlyIntersystemHO TooearlyIntersystemHO, + intersystemUnnecessaryHO IntersystemUnnecessaryHO, + choice-Extensions ProtocolIE-SingleContainer { { InterSystemHandoverReportType-ExtIEs} } +} + +InterSystemHandoverReportType-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +IntersystemUnnecessaryHO ::= SEQUENCE { + sourcecellID NGRAN-CGI, + targetcellID EUTRA-CGI, + earlyIRATHO ENUMERATED {true, false, ...}, + candidateCellList CandidateCellList, + iE-Extensions ProtocolExtensionContainer { { IntersystemUnnecessaryHO-ExtIEs} } OPTIONAL, + ... +} + +IntersystemUnnecessaryHO-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- J +-- K +-- L + +LAC ::= OCTET STRING (SIZE (2)) + +LAI ::= SEQUENCE { + pLMNidentity PLMNIdentity, + lAC LAC, + iE-Extensions ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL, + ... +} + +LAI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +LastVisitedCellInformation ::= CHOICE { + nGRANCell LastVisitedNGRANCellInformation, + eUTRANCell LastVisitedEUTRANCellInformation, + uTRANCell LastVisitedUTRANCellInformation, + gERANCell LastVisitedGERANCellInformation, + choice-Extensions ProtocolIE-SingleContainer { {LastVisitedCellInformation-ExtIEs} } +} + +LastVisitedCellInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +LastVisitedCellItem ::= SEQUENCE { + lastVisitedCellInformation LastVisitedCellInformation, + iE-Extensions ProtocolExtensionContainer { {LastVisitedCellItem-ExtIEs} } OPTIONAL, + ... +} + +LastVisitedCellItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +LastVisitedEUTRANCellInformation ::= OCTET STRING + +LastVisitedGERANCellInformation ::= OCTET STRING + +LastVisitedNGRANCellInformation::= SEQUENCE { + globalCellID NGRAN-CGI, + cellType CellType, + timeUEStayedInCell TimeUEStayedInCell, + timeUEStayedInCellEnhancedGranularity TimeUEStayedInCellEnhancedGranularity OPTIONAL, + hOCauseValue Cause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {LastVisitedNGRANCellInformation-ExtIEs} } OPTIONAL, + ... +} + +LastVisitedNGRANCellInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-LastVisitedPSCellList CRITICALITY ignore EXTENSION LastVisitedPSCellList PRESENCE optional }, + ... +} + +LastVisitedPSCellList ::= SEQUENCE (SIZE(1..maxnoofPSCellsPerPrimaryCellinUEHistoryInfo)) OF LastVisitedPSCellInformation + +LastVisitedPSCellInformation ::= SEQUENCE { + pSCellID NGRAN-CGI OPTIONAL, + timeStay INTEGER (0..40950), + iE-Extensions ProtocolExtensionContainer { {LastVisitedPSCellInformation-ExtIEs} } OPTIONAL, + ... +} + +LastVisitedPSCellInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +LastVisitedUTRANCellInformation ::= OCTET STRING + +LineType ::= ENUMERATED { + dsl, + pon, + ... +} + + +LocationReportingAdditionalInfo ::= ENUMERATED { + includePSCell, + ... +} + +LocationReportingReferenceID ::= INTEGER (1..64, ...) + +LocationReportingRequestType ::= SEQUENCE { + eventType EventType, + reportArea ReportArea, + areaOfInterestList AreaOfInterestList OPTIONAL, + locationReportingReferenceIDToBeCancelled LocationReportingReferenceID OPTIONAL, +-- The above IE shall be present if the event type is set to “stop reporting UE presence in the area of interest” + iE-Extensions ProtocolExtensionContainer { {LocationReportingRequestType-ExtIEs} } OPTIONAL, + ... +} + +LocationReportingRequestType-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-LocationReportingAdditionalInfo CRITICALITY ignore EXTENSION LocationReportingAdditionalInfo PRESENCE optional }, + ... +} + +LoggedMDTNr ::= SEQUENCE { + loggingInterval LoggingInterval, + loggingDuration LoggingDuration, + loggedMDTTrigger LoggedMDTTrigger, + bluetoothMeasurementConfiguration BluetoothMeasurementConfiguration OPTIONAL, + wLANMeasurementConfiguration WLANMeasurementConfiguration OPTIONAL, + sensorMeasurementConfiguration SensorMeasurementConfiguration OPTIONAL, + areaScopeOfNeighCellsList AreaScopeOfNeighCellsList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {LoggedMDTNr-ExtIEs} } OPTIONAL, + ... +} + +LoggedMDTNr-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-EarlyMeasurement CRITICALITY ignore EXTENSION EarlyMeasurement PRESENCE optional }, + ... +} + +LoggingInterval ::= ENUMERATED { + ms320, ms640, ms1280, ms2560, ms5120, ms10240, ms20480, ms30720, ms40960, ms61440, + infinity, + ... +} + +LoggingDuration ::= ENUMERATED {m10, m20, m40, m60, m90, m120, ...} + +Links-to-log ::= ENUMERATED { + uplink, + downlink, + both-uplink-and-downlink, + ... +} + +LoggedMDTTrigger ::= CHOICE{ + periodical NULL, + eventTrigger EventTrigger, + choice-Extensions ProtocolIE-SingleContainer { {LoggedMDTTrigger-ExtIEs} } +} + +LoggedMDTTrigger-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +LTEM-Indication ::= ENUMERATED {lte-m,...} + +LTEUERLFReportContainer ::= OCTET STRING + +LTEV2XServicesAuthorized ::= SEQUENCE { + vehicleUE VehicleUE OPTIONAL, + pedestrianUE PedestrianUE OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {LTEV2XServicesAuthorized-ExtIEs} } OPTIONAL, + ... +} + +LTEV2XServicesAuthorized-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +LTEUESidelinkAggregateMaximumBitrate ::= SEQUENCE { + uESidelinkAggregateMaximumBitRate BitRate, + iE-Extensions ProtocolExtensionContainer { {LTEUE-Sidelink-Aggregate-MaximumBitrates-ExtIEs} } OPTIONAL, + ... +} + +LTEUE-Sidelink-Aggregate-MaximumBitrates-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- M + +MaskedIMEISV ::= BIT STRING (SIZE(64)) + +MaximumDataBurstVolume ::= INTEGER (0..4095, ..., 4096.. 2000000) + +MessageIdentifier ::= BIT STRING (SIZE(16)) + +MaximumIntegrityProtectedDataRate ::= ENUMERATED { + bitrate64kbs, + maximum-UE-rate, + ... +} + + +MBS-AreaSessionID ::= INTEGER (0..65535, ...) + +MBS-DataForwardingResponseMRBList ::= SEQUENCE (SIZE(1..maxnoofMRBs)) OF MBS-DataForwardingResponseMRBItem + +MBS-DataForwardingResponseMRBItem ::= SEQUENCE { + mRB-ID MRB-ID, + dL-Forwarding-UPTNLInformation UPTransportLayerInformation, + mRB-ProgressInformation MRB-ProgressInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBS-DataForwardingResponseMRBItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-DataForwardingResponseMRBItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-MappingandDataForwardingRequestList ::= SEQUENCE (SIZE(1..maxnoofMRBs)) OF MBS-MappingandDataForwardingRequestItem + +MBS-MappingandDataForwardingRequestItem ::= SEQUENCE { + mRB-ID MRB-ID, + mBS-QoSFlowList MBS-QoSFlowList, + mRB-ProgressInformation MRB-ProgressInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBS-MappingandDataForwardingRequestItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-MappingandDataForwardingRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-QoSFlowList ::= SEQUENCE (SIZE(1..maxnoofMBSQoSFlows)) OF QosFlowIdentifier + +MRB-ProgressInformation ::= CHOICE { + pDCP-SN-Length12 INTEGER (0..4095), + pDCP-SN-Length18 INTEGER (0..262143), + choice-Extensions ProtocolIE-SingleContainer { { MRB-ProgressInformation-ExtIEs} } +} + +MRB-ProgressInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +MBS-QoSFlowsToBeSetupList ::= SEQUENCE (SIZE(1.. maxnoofMBSQoSFlows)) OF MBS-QoSFlowsToBeSetupItem + +MBS-QoSFlowsToBeSetupItem ::= SEQUENCE { + mBSqosFlowIdentifier QosFlowIdentifier, + mBSqosFlowLevelQosParameters QosFlowLevelQosParameters, + iE-Extensions ProtocolExtensionContainer { {MBS-QoSFlowsToBeSetupItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-QoSFlowsToBeSetupItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +MBS-ServiceArea ::= CHOICE { + locationindependent MBS-ServiceAreaInformation, + locationdependent MBS-ServiceAreaInformationList, + choice-Extensions ProtocolIE-SingleContainer { {MBS-ServiceArea-ExtIEs} } +} + +MBS-ServiceArea-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +MBS-ServiceAreaInformationList ::= SEQUENCE (SIZE(1..maxnoofMBSServiceAreaInformation)) OF MBS-ServiceAreaInformationItem + + +MBS-ServiceAreaInformationItem ::= SEQUENCE { + mBS-AreaSessionID MBS-AreaSessionID, + mBS-ServiceAreaInformation MBS-ServiceAreaInformation, + iE-Extensions ProtocolExtensionContainer { {MBS-ServiceAreaInformationItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-ServiceAreaInformationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-ServiceAreaInformation ::= SEQUENCE { + mBS-ServiceAreaCellList MBS-ServiceAreaCellList OPTIONAL, + mBS-ServiceAreaTAIList MBS-ServiceAreaTAIList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MBS-ServiceAreaInformation-ExtIEs} } OPTIONAL, + ... +} + +MBS-ServiceAreaInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-ServiceAreaCellList ::= SEQUENCE (SIZE(1.. maxnoofCellsforMBS)) OF NR-CGI + +MBS-ServiceAreaTAIList ::= SEQUENCE (SIZE(1.. maxnoofTAIforMBS)) OF TAI + +MBS-SessionID ::= SEQUENCE { + tMGI TMGI, + nID NID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MBS-SessionID-ExtIEs} } OPTIONAL, + ... +} + +MBS-SessionID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionFailedtoSetupList ::= SEQUENCE (SIZE(1.. maxnoofMBSSessions)) OF MBSSessionFailedtoSetupItem + +MBSSessionFailedtoSetupItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { MBSSessionFailedtoSetupItem-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionFailedtoSetupItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-ActiveSessionInformation-SourcetoTargetList ::= SEQUENCE (SIZE(1..maxnoofMBSSessionsofUE)) OF MBS-ActiveSessionInformation-SourcetoTargetItem + +MBS-ActiveSessionInformation-SourcetoTargetItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + mBS-ServiceArea MBS-ServiceArea OPTIONAL, + mBS-QoSFlowsToBeSetupList MBS-QoSFlowsToBeSetupList, + mBS-MappingandDataForwardingRequestList MBS-MappingandDataForwardingRequestList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBS-ActiveSessionInformation-SourcetoTargetItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-ActiveSessionInformation-SourcetoTargetItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-ActiveSessionInformation-TargettoSourceList ::= SEQUENCE (SIZE(1..maxnoofMBSSessionsofUE)) OF MBS-ActiveSessionInformation-TargettoSourceItem + +MBS-ActiveSessionInformation-TargettoSourceItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-DataForwardingResponseMRBList MBS-DataForwardingResponseMRBList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBS-ActiveSessionInformation-TargettoSourceItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-ActiveSessionInformation-TargettoSourceItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionSetupOrModFailureTransfer ::= SEQUENCE { + cause Cause, + criticalityDiagnostics CriticalityDiagnostics OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBSSessionSetupOrModFailureTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionSetupOrModFailureTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionSetupResponseList ::= SEQUENCE (SIZE(1.. maxnoofMBSSessions)) OF MBSSessionSetupResponseItem + +MBSSessionSetupResponseItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBSSessionSetupResponseItem-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionSetupResponseItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionSetupOrModRequestTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MBSSessionSetupOrModRequestTransferIEs} }, + ... +} + +MBSSessionSetupOrModRequestTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionTNLInfo5GC CRITICALITY reject TYPE MBS-SessionTNLInfo5GC PRESENCE optional }| + { ID id-MBS-QoSFlowsToBeSetupModList CRITICALITY reject TYPE MBS-QoSFlowsToBeSetupList PRESENCE mandatory }| + { ID id-MBS-SessionFSAIDList CRITICALITY ignore TYPE MBS-SessionFSAIDList PRESENCE optional }, + ... +} + +MBS-SessionFSAIDList ::= SEQUENCE (SIZE(1.. maxnoofMBSFSAs)) OF MBS-SessionFSAID + +MBS-SessionFSAID ::= OCTET STRING (SIZE(3)) + +MBSSessionReleaseResponseTransfer ::= SEQUENCE { + mBS-SessionTNLInfoNGRAN MBS-SessionTNLInfoNGRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MBSSessionReleaseResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionReleaseResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionSetupOrModResponseTransfer ::= SEQUENCE { + mBS-SessionTNLInfoNGRAN MBS-SessionTNLInfoNGRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MBSSessionSetupOrModResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionSetupOrModResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-SupportIndicator ::= ENUMERATED { + true, + ... +} + +MBS-SessionTNLInfo5GC ::= CHOICE { + locationindependent SharedNGU-MulticastTNLInformation, + locationdependent MBS-SessionTNLInfo5GCList, + choice-Extensions ProtocolIE-SingleContainer { {MBS-SessionTNLInfo5GC-ExtIEs} } +} + +MBS-SessionTNLInfo5GC-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +MBS-SessionTNLInfo5GCList ::= SEQUENCE (SIZE(1..maxnoofMBSServiceAreaInformation)) OF MBS-SessionTNLInfo5GCItem + +MBS-SessionTNLInfo5GCItem ::= SEQUENCE { + mBS-AreaSessionID MBS-AreaSessionID, + sharedNGU-MulticastTNLInformation SharedNGU-MulticastTNLInformation, + iE-Extensions ProtocolExtensionContainer { {MBS-SessionTNLInfo5GCItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-SessionTNLInfo5GCItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-SessionTNLInfoNGRAN ::= CHOICE { + locationindependent UPTransportLayerInformation, + locationdependent MBS-SessionTNLInfoNGRANList, + choice-Extensions ProtocolIE-SingleContainer { {MBS-SessionTNLInfoNGRAN-ExtIEs} } +} + +MBS-SessionTNLInfoNGRAN-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +MBS-SessionTNLInfoNGRANList ::= SEQUENCE (SIZE(1..maxnoofMBSServiceAreaInformation)) OF MBS-SessionTNLInfoNGRANItem + +MBS-SessionTNLInfoNGRANItem ::= SEQUENCE { + mBS-AreaSessionID MBS-AreaSessionID, + sharedNGU-UnicastTNLInformation UPTransportLayerInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MBS-SessionTNLInfoNGRANItem-ExtIEs} } OPTIONAL, + ... +} + +MBS-SessionTNLInfoNGRANItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-DistributionReleaseRequestTransfer ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + sharedNGU-UnicastTNLInformation UPTransportLayerInformation OPTIONAL, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { MBS-DistributionReleaseRequesTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBS-DistributionReleaseRequesTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-DistributionSetupRequestTransfer ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + sharedNGU-UnicastTNLInformation UPTransportLayerInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBS-DistributionSetupRequestTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBS-DistributionSetupRequestTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-DistributionSetupResponseTransfer ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + sharedNGU-MulticastTNLInformation MBS-SessionTNLInfo5GCItem OPTIONAL, + mBS-QoSFlowsToBeSetupList MBS-QoSFlowsToBeSetupList, + mBSSessionStatus MBSSessionStatus, + mBS-ServiceArea MBS-ServiceArea OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MBS-DistributionSetupResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBS-DistributionSetupResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +MBS-DistributionSetupUnsuccessfulTransfer ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + cause Cause, + criticalityDiagnostics CriticalityDiagnostics OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBS-DistributionSetupUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +MBS-DistributionSetupUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionSetupRequestList ::= SEQUENCE (SIZE(1..maxnoofMBSSessions)) OF MBSSessionSetupRequestItem + +MBSSessionSetupRequestItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + associatedMBSQosFlowSetupRequestList AssociatedMBSQosFlowSetupRequestList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MBSSessionSetupRequestItem-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionSetupRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionSetuporModifyRequestList ::= SEQUENCE (SIZE(1..maxnoofMBSSessions)) OF MBSSessionSetuporModifyRequestItem + +MBSSessionSetuporModifyRequestItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + mBS-AreaSessionID MBS-AreaSessionID OPTIONAL, + associatedMBSQosFlowSetuporModifyRequestList AssociatedMBSQosFlowSetuporModifyRequestList OPTIONAL, + mBS-QosFlowToReleaseList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{MBSSessionSetuporModifyRequestItem-ExtIEs}} OPTIONAL, + ... +} + +MBSSessionSetuporModifyRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +MBSSessionToReleaseList ::= SEQUENCE (SIZE(1..maxnoofMBSSessions)) OF MBSSessionToReleaseItem + +MBSSessionToReleaseItem ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { MBSSessionToReleaseItem-ExtIEs} } OPTIONAL, + ... +} + +MBSSessionToReleaseItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBSSessionStatus ::= ENUMERATED { + activated, + deactivated, + ... +} + +MicoAllPLMN ::= ENUMERATED { + true, + ... +} + + +MICOModeIndication ::= ENUMERATED { + true, + ... +} + +MobilityInformation ::= BIT STRING (SIZE(16)) + +MobilityRestrictionList ::= SEQUENCE { + servingPLMN PLMNIdentity, + equivalentPLMNs EquivalentPLMNs OPTIONAL, + rATRestrictions RATRestrictions OPTIONAL, + forbiddenAreaInformation ForbiddenAreaInformation OPTIONAL, + serviceAreaInformation ServiceAreaInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MobilityRestrictionList-ExtIEs} } OPTIONAL, + ... +} + +MobilityRestrictionList-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-LastEUTRAN-PLMNIdentity CRITICALITY ignore EXTENSION PLMNIdentity PRESENCE optional }| + { ID id-CNTypeRestrictionsForServing CRITICALITY ignore EXTENSION CNTypeRestrictionsForServing PRESENCE optional }| + { ID id-CNTypeRestrictionsForEquivalent CRITICALITY ignore EXTENSION CNTypeRestrictionsForEquivalent PRESENCE optional }| + { ID id-NPN-MobilityInformation CRITICALITY reject EXTENSION NPN-MobilityInformation PRESENCE optional }, + ... +} + +MDT-AlignmentInfo ::= CHOICE { + s-basedMDT NGRANTraceID, + choice-Extensions ProtocolIE-SingleContainer { { MDT-AlignmentInfo-ExtIEs} } +} + +MDT-AlignmentInfo-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +MDTPLMNList ::= SEQUENCE (SIZE(1..maxnoofMDTPLMNs)) OF PLMNIdentity + +MDTPLMNModificationList ::= SEQUENCE (SIZE(0..maxnoofMDTPLMNs)) OF PLMNIdentity + +MDT-Configuration ::= SEQUENCE { + mdt-Config-NR MDT-Configuration-NR OPTIONAL, + mdt-Config-EUTRA MDT-Configuration-EUTRA OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL, + ... +} + +MDT-Configuration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MDT-Configuration-NR ::= SEQUENCE { + mdt-Activation MDT-Activation, + areaScopeOfMDT AreaScopeOfMDT-NR, + mDTModeNr MDTModeNr, + signallingBasedMDTPLMNList MDTPLMNList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MDT-Configuration-NR-ExtIEs} } OPTIONAL, + ... +} + +MDT-Configuration-NR-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MDT-Configuration-EUTRA ::= SEQUENCE { + mdt-Activation MDT-Activation, + areaScopeOfMDT AreaScopeOfMDT-EUTRA, + mDTMode MDTModeEutra, + signallingBasedMDTPLMNList MDTPLMNList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MDT-Configuration-EUTRA-ExtIEs} } OPTIONAL, + ... +} + +MDT-Configuration-EUTRA-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MDT-Activation ::= ENUMERATED { + immediate-MDT-only, + logged-MDT-only, + immediate-MDT-and-Trace, + ... +} + +MDTModeNr ::= CHOICE { + immediateMDTNr ImmediateMDTNr, + loggedMDTNr LoggedMDTNr, + choice-Extensions ProtocolIE-SingleContainer { {MDTModeNr-ExtIEs} } +} + +MDTModeNr-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +MDTModeEutra ::= OCTET STRING + +MeasurementsToActivate ::= BIT STRING(SIZE(8)) + +MRB-ID ::= INTEGER (1..512, ...) + +MulticastSessionActivationRequestTransfer ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + iE-Extensions ProtocolExtensionContainer { { MulticastSessionActivationRequestTransfer-ExtIEs} } OPTIONAL, + ... +} + +MulticastSessionActivationRequestTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MulticastSessionDeactivationRequestTransfer ::= SEQUENCE { + mBS-SessionID MBS-SessionID, + iE-Extensions ProtocolExtensionContainer { { MulticastSessionDeactivationRequestTransfer-ExtIEs} } OPTIONAL, + ... +} + +MulticastSessionDeactivationRequestTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MulticastSessionUpdateRequestTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionUpdateRequestTransferIEs} }, + ... +} + +MulticastSessionUpdateRequestTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-ServiceArea CRITICALITY reject TYPE MBS-ServiceArea PRESENCE optional }| + { ID id-MBS-QoSFlowsToBeSetupModList CRITICALITY reject TYPE MBS-QoSFlowsToBeSetupList PRESENCE optional }| + { ID id-MBS-QoSFlowToReleaseList CRITICALITY reject TYPE QosFlowListWithCause PRESENCE optional }| + { ID id-MBS-SessionTNLInfo5GC CRITICALITY reject TYPE MBS-SessionTNLInfo5GC PRESENCE optional }, + ... +} + + +MulticastGroupPagingAreaList ::= SEQUENCE (SIZE(1..maxnoofPagingAreas)) OF MulticastGroupPagingAreaItem + +MulticastGroupPagingAreaItem ::= SEQUENCE { + multicastGroupPagingArea MulticastGroupPagingArea, + uE-PagingList UE-PagingList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MulticastGroupPagingAreaItem-ExtIEs} } OPTIONAL, + ... +} + +MulticastGroupPagingAreaItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MBS-AreaTAIList ::= SEQUENCE (SIZE(1..maxnoofTAIforPaging)) OF TAI + +MulticastGroupPagingArea ::= SEQUENCE { + mBS-AreaTAIList MBS-AreaTAIList, + iE-Extensions ProtocolExtensionContainer { { MulticastGroupPagingArea-ExtIEs} } OPTIONAL, + ... +} + +MulticastGroupPagingArea-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UE-PagingList ::= SEQUENCE (SIZE(1..maxnoofUEsforPaging)) OF UE-PagingItem + +UE-PagingItem ::= SEQUENCE { + uEIdentityIndexValue UEIdentityIndexValue, + pagingDRX PagingDRX OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UE-PagingItem-ExtIEs} } OPTIONAL, + ... +} + +UE-PagingItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +M1Configuration ::= SEQUENCE { + m1reportingTrigger M1ReportingTrigger, + m1thresholdEventA2 M1ThresholdEventA2 OPTIONAL, +-- The above IE shall be present if the M1 Reporting Trigger IE is set to “A2event-triggered” or “A2event-triggered periodic” + m1periodicReporting M1PeriodicReporting OPTIONAL, +-- The above IE shall be present if the M1 Reporting Trigger IE is set to “periodic” or “A2event-triggered periodic” + iE-Extensions ProtocolExtensionContainer { { M1Configuration-ExtIEs} } OPTIONAL, + ... +} + +M1Configuration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-IncludeBeamMeasurementsIndication CRITICALITY ignore EXTENSION IncludeBeamMeasurementsIndication PRESENCE optional }| + { ID id-BeamMeasurementsReportConfiguration CRITICALITY ignore EXTENSION BeamMeasurementsReportConfiguration PRESENCE conditional }, +-- The above IE shall be present if the IncludeBeamMeasurementsIndication IE is set to “true” + ... +} + +IncludeBeamMeasurementsIndication ::= ENUMERATED { + true, + ... +} + +MaxNrofRS-IndexesToReport ::= INTEGER (1..64, ...) + +M1ReportingTrigger ::= ENUMERATED { + periodic, + a2eventtriggered, + a2eventtriggered-periodic, + ... +} + +M1ThresholdEventA2 ::= SEQUENCE { + m1ThresholdType M1ThresholdType, + iE-Extensions ProtocolExtensionContainer { { M1ThresholdEventA2-ExtIEs} } OPTIONAL, + ... +} + +M1ThresholdEventA2-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +M1ThresholdType ::= CHOICE { + threshold-RSRP Threshold-RSRP, + threshold-RSRQ Threshold-RSRQ, + threshold-SINR Threshold-SINR, + choice-Extensions ProtocolIE-SingleContainer { {M1ThresholdType-ExtIEs} } +} + +M1ThresholdType-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +M1PeriodicReporting ::= SEQUENCE { + reportInterval ReportIntervalMDT, + reportAmount ReportAmountMDT, + iE-Extensions ProtocolExtensionContainer { { M1PeriodicReporting-ExtIEs} } OPTIONAL, + ... +} + +M1PeriodicReporting-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-ExtendedReportIntervalMDT CRITICALITY ignore EXTENSION ExtendedReportIntervalMDT PRESENCE optional}, + ... +} + +M4Configuration ::= SEQUENCE { + m4period M4period, + m4-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M4Configuration-ExtIEs} } OPTIONAL, + ... +} + +M4Configuration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-M4ReportAmount CRITICALITY ignore EXTENSION M4ReportAmountMDT PRESENCE optional }, + ... +} + +M4ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...} + +M4period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } + +M5Configuration ::= SEQUENCE { + m5period M5period, + m5-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M5Configuration-ExtIEs} } OPTIONAL, + ... +} + +M5Configuration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-M5ReportAmount CRITICALITY ignore EXTENSION M5ReportAmountMDT PRESENCE optional }, + ... +} + +M5ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...} + + +M5period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } + +M6Configuration ::= SEQUENCE { + m6report-Interval M6report-Interval, + m6-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M6Configuration-ExtIEs} } OPTIONAL, + ... +} + +M6Configuration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-M6ReportAmount CRITICALITY ignore EXTENSION M6ReportAmountMDT PRESENCE optional }| + { ID id-ExcessPacketDelayThresholdConfiguration CRITICALITY ignore EXTENSION ExcessPacketDelayThresholdConfiguration PRESENCE optional }, + ... +} + + +M6ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...} + +M6report-Interval ::= ENUMERATED { + ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, ms20480, ms40960, min1, min6, min12, min30, + ... +} + + +M7Configuration ::= SEQUENCE { + m7period M7period, + m7-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M7Configuration-ExtIEs} } OPTIONAL, + ... +} + +M7Configuration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-M7ReportAmount CRITICALITY ignore EXTENSION M7ReportAmountMDT PRESENCE optional }, + ... +} + +M7ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...} + +M7period ::= INTEGER(1..60, ...) + +MDT-Location-Info ::= SEQUENCE { + mDT-Location-Information MDT-Location-Information, + iE-Extensions ProtocolExtensionContainer { { MDT-Location-Info-ExtIEs} } OPTIONAL, + ... +} + +MDT-Location-Info-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +MDT-Location-Information::= BIT STRING (SIZE (8)) + +-- N + +N3IWF-ID ::= CHOICE { + n3IWF-ID BIT STRING (SIZE(16)), + choice-Extensions ProtocolIE-SingleContainer { {N3IWF-ID-ExtIEs} } +} + +N3IWF-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +NAS-PDU ::= OCTET STRING + +NASSecurityParametersFromNGRAN ::= OCTET STRING + +NB-IoT-DefaultPagingDRX ::= ENUMERATED { + rf128, rf256, rf512, rf1024, + ... +} + +NB-IoT-PagingDRX ::= ENUMERATED { + rf32, rf64, rf128, rf256, rf512, rf1024, + ... +} + +NB-IoT-Paging-eDRXCycle ::= ENUMERATED { + hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, hf512, hf1024, + ... +} + +NB-IoT-Paging-TimeWindow ::= ENUMERATED { + s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, + ... +} + +NB-IoT-Paging-eDRXInfo ::= SEQUENCE { + nB-IoT-Paging-eDRXCycle NB-IoT-Paging-eDRXCycle, + nB-IoT-Paging-TimeWindow NB-IoT-Paging-TimeWindow OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NB-IoT-Paging-eDRXInfo-ExtIEs} } OPTIONAL, + ... +} + +NB-IoT-Paging-eDRXInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NB-IoT-UEPriority ::= INTEGER (0..255, ...) + +NetworkInstance ::= INTEGER (1..256, ...) + +NewSecurityContextInd ::= ENUMERATED { + true, + ... +} + +NextHopChainingCount ::= INTEGER (0..7) + +NextPagingAreaScope ::= ENUMERATED { + same, + changed, + ... +} + +NGAPIESupportInformationRequestList ::= SEQUENCE (SIZE(1.. maxnoofNGAPIESupportInfo)) OF NGAPIESupportInformationRequestItem + +NGAPIESupportInformationRequestItem ::= SEQUENCE { + ngap-ProtocolIE-Id ProtocolIE-ID, + iE-Extensions ProtocolExtensionContainer { { NGAPIESupportInformationRequestItem-ExtIEs} } OPTIONAL, + ... +} + +NGAPIESupportInformationRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NGAPIESupportInformationResponseList ::= SEQUENCE (SIZE(1.. maxnoofNGAPIESupportInfo)) OF NGAPIESupportInformationResponseItem + +NGAPIESupportInformationResponseItem ::= SEQUENCE { + ngap-ProtocolIE-Id ProtocolIE-ID, + ngap-ProtocolIESupportInfo ENUMERATED {supported, not-supported, ...}, + ngap-ProtocolIEPresenceInfo ENUMERATED {present, not-present, ...}, + iE-Extensions ProtocolExtensionContainer { { NGAPIESupportInformationResponseItem-ExtIEs} } OPTIONAL, + ... +} + +NGAPIESupportInformationResponseItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NgENB-ID ::= CHOICE { + macroNgENB-ID BIT STRING (SIZE(20)), + shortMacroNgENB-ID BIT STRING (SIZE(18)), + longMacroNgENB-ID BIT STRING (SIZE(21)), + choice-Extensions ProtocolIE-SingleContainer { {NgENB-ID-ExtIEs} } +} + +NgENB-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +NotifySourceNGRANNode ::= ENUMERATED { + notifySource, + ... +} + +NGRAN-CGI ::= CHOICE { + nR-CGI NR-CGI, + eUTRA-CGI EUTRA-CGI, + choice-Extensions ProtocolIE-SingleContainer { {NGRAN-CGI-ExtIEs} } +} + +NGRAN-CGI-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +NGRAN-TNLAssociationToRemoveList ::= SEQUENCE (SIZE(1..maxnoofTNLAssociations)) OF NGRAN-TNLAssociationToRemoveItem + +NGRAN-TNLAssociationToRemoveItem::= SEQUENCE { + tNLAssociationTransportLayerAddress CPTransportLayerInformation, + tNLAssociationTransportLayerAddressAMF CPTransportLayerInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NGRAN-TNLAssociationToRemoveItem-ExtIEs} } OPTIONAL +} + +NGRAN-TNLAssociationToRemoveItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NGRANTraceID ::= OCTET STRING (SIZE(8)) + +NID ::= BIT STRING (SIZE(44)) + +NonDynamic5QIDescriptor ::= SEQUENCE { + fiveQI FiveQI, + priorityLevelQos PriorityLevelQos OPTIONAL, + averagingWindow AveragingWindow OPTIONAL, + maximumDataBurstVolume MaximumDataBurstVolume OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {NonDynamic5QIDescriptor-ExtIEs} } OPTIONAL, + ... +} + +NonDynamic5QIDescriptor-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CNPacketDelayBudgetDL CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }| + { ID id-CNPacketDelayBudgetUL CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }, + ... +} + +NotAllowedTACs ::= SEQUENCE (SIZE(1..maxnoofAllowedAreas)) OF TAC + +NotificationCause ::= ENUMERATED { + fulfilled, + not-fulfilled, + ... +} + +NotificationControl ::= ENUMERATED { + notification-requested, + ... +} + +NPN-AccessInformation ::= CHOICE { + pNI-NPN-Access-Information CellCAGList, + choice-Extensions ProtocolIE-SingleContainer { {NPN-AccessInformation-ExtIEs} } +} + +NPN-AccessInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +NPN-MobilityInformation ::= CHOICE { + sNPN-MobilityInformation SNPN-MobilityInformation, + pNI-NPN-MobilityInformation PNI-NPN-MobilityInformation, + choice-Extensions ProtocolIE-SingleContainer { {NPN-MobilityInformation-ExtIEs} } +} + +NPN-MobilityInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + + +NPN-PagingAssistanceInformation ::= CHOICE { + pNI-NPN-PagingAssistance Allowed-PNI-NPN-List, + choice-Extensions ProtocolIE-SingleContainer { {NPN-PagingAssistanceInformation-ExtIEs} } +} + +NPN-PagingAssistanceInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +NPN-Support ::= CHOICE { + sNPN NID, + choice-Extensions ProtocolIE-SingleContainer { {NPN-Support-ExtIEs} } +} + +NPN-Support-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +NRCellIdentity ::= BIT STRING (SIZE(36)) + +NR-CGI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + nRCellIdentity NRCellIdentity, + iE-Extensions ProtocolExtensionContainer { {NR-CGI-ExtIEs} } OPTIONAL, + ... +} + +NR-CGI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NR-CGIList ::= SEQUENCE (SIZE(1..maxnoofCellsingNB)) OF NR-CGI + +NR-CGIListForWarning ::= SEQUENCE (SIZE(1..maxnoofCellIDforWarning)) OF NR-CGI + +NR-PagingeDRXInformation ::= SEQUENCE { + nR-paging-eDRX-Cycle NR-Paging-eDRX-Cycle, + nR-paging-Time-Window NR-Paging-Time-Window OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {NR-PagingeDRXInformation-ExtIEs} } OPTIONAL, + ... +} + +NR-PagingeDRXInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NR-Paging-eDRX-Cycle ::= ENUMERATED { + hfquarter, hfhalf, hf1, hf2, hf4, hf8, hf16, + hf32, hf64, hf128, hf256, hf512, hf1024, + ... +} + +NR-Paging-Time-Window ::= ENUMERATED { + s1, s2, s3, s4, s5, + s6, s7, s8, s9, s10, + s11, s12, s13, s14, s15, s16, + ..., + s17, s18, s19, s20, s21, s22, s23, s24, + s25, s26, s27, s28, s29, s30, s31, s32 +} + +NRencryptionAlgorithms ::= BIT STRING (SIZE(16, ...)) + +NRintegrityProtectionAlgorithms ::= BIT STRING (SIZE(16, ...)) + +NRMobilityHistoryReport ::= OCTET STRING + +NRPPa-PDU ::= OCTET STRING + +NRUERLFReportContainer ::= OCTET STRING + +NRNTNTAIInformation ::= SEQUENCE { + servingPLMN PLMNIdentity, + tACListInNRNTN TACListInNRNTN, + uELocationDerivedTACInNRNTN TAC OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NRNTNTAIInformation-ExtIEs} } OPTIONAL, + ... +} + +NRNTNTAIInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +NumberOfBroadcasts ::= INTEGER (0..65535) + +NumberOfBroadcastsRequested ::= INTEGER (0..65535) + +NRARFCN ::= INTEGER (0.. maxNRARFCN) + +NRFrequencyBand ::= INTEGER (1..1024, ...) + +NRFrequencyBand-List ::= SEQUENCE (SIZE(1..maxnoofNRCellBands)) OF NRFrequencyBandItem + +NRFrequencyBandItem ::= SEQUENCE { + nr-frequency-band NRFrequencyBand, + iE-Extension ProtocolExtensionContainer { {NRFrequencyBandItem-ExtIEs} } OPTIONAL, + ... +} + +NRFrequencyBandItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NRFrequencyInfo ::= SEQUENCE { + nrARFCN NRARFCN, + frequencyBand-List NRFrequencyBand-List, + iE-Extension ProtocolExtensionContainer { {NRFrequencyInfo-ExtIEs} } OPTIONAL, + ... +} + +NRFrequencyInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NR-PCI ::= INTEGER (0..1007, ...) + +NRV2XServicesAuthorized ::= SEQUENCE { + vehicleUE VehicleUE OPTIONAL, + pedestrianUE PedestrianUE OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {NRV2XServicesAuthorized-ExtIEs} } OPTIONAL, + ... +} + +NRV2XServicesAuthorized-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +VehicleUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +PedestrianUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +NRUESidelinkAggregateMaximumBitrate ::= SEQUENCE { + uESidelinkAggregateMaximumBitRate BitRate, + iE-Extensions ProtocolExtensionContainer { {NRUESidelinkAggregateMaximumBitrate-ExtIEs} } OPTIONAL, + ... +} + +NRUESidelinkAggregateMaximumBitrate-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +NSAG-ID ::= INTEGER (0..255, ...) + +-- O + +OnboardingSupport ::= ENUMERATED { + true, + ... +} + +OverloadAction ::= ENUMERATED { + reject-non-emergency-mo-dt, + reject-rrc-cr-signalling, + permit-emergency-sessions-and-mobile-terminated-services-only, + permit-high-priority-sessions-and-mobile-terminated-services-only, + ... +} + +OverloadResponse ::= CHOICE { + overloadAction OverloadAction, + choice-Extensions ProtocolIE-SingleContainer { {OverloadResponse-ExtIEs} } +} + +OverloadResponse-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +OverloadStartNSSAIList ::= SEQUENCE (SIZE (1..maxnoofSliceItems)) OF OverloadStartNSSAIItem + +OverloadStartNSSAIItem ::= SEQUENCE { + sliceOverloadList SliceOverloadList, + sliceOverloadResponse OverloadResponse OPTIONAL, + sliceTrafficLoadReductionIndication TrafficLoadReductionIndication OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {OverloadStartNSSAIItem-ExtIEs} } OPTIONAL, + ... +} + +OverloadStartNSSAIItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- P + +PacketDelayBudget ::= INTEGER (0..1023, ...) + +PacketErrorRate ::= SEQUENCE { + pERScalar INTEGER (0..9, ...), + pERExponent INTEGER (0..9, ...), + iE-Extensions ProtocolExtensionContainer { {PacketErrorRate-ExtIEs} } OPTIONAL, + ... +} + +PacketErrorRate-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PacketLossRate ::= INTEGER (0..1000, ...) + +PagingAssisDataforCEcapabUE ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + coverageEnhancementLevel CoverageEnhancementLevel, + iE-Extensions ProtocolExtensionContainer { { PagingAssisDataforCEcapabUE-ExtIEs} } OPTIONAL, + ... +} + +PagingAssisDataforCEcapabUE-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PagingAttemptInformation ::= SEQUENCE { + pagingAttemptCount PagingAttemptCount, + intendedNumberOfPagingAttempts IntendedNumberOfPagingAttempts, + nextPagingAreaScope NextPagingAreaScope OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PagingAttemptInformation-ExtIEs} } OPTIONAL, + ... +} + +PagingAttemptInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PagingAttemptCount ::= INTEGER (1..16, ...) + +PagingCause ::= ENUMERATED { + voice, + ... +} + +PagingCauseIndicationForVoiceService ::= ENUMERATED { + supported, + ... +} + +PagingDRX ::= ENUMERATED { + v32, + v64, + v128, + v256, + ... +} + +PagingOrigin ::= ENUMERATED { + non-3gpp, + ... +} + +PagingPriority ::= ENUMERATED { + priolevel1, + priolevel2, + priolevel3, + priolevel4, + priolevel5, + priolevel6, + priolevel7, + priolevel8, + ... +} + +PagingProbabilityInformation ::= ENUMERATED { + p00, p05, p10, p15, p20, p25, p30, p35, p40, p45, p50, p55, p60, p65, p70, p75, p80, p85, p90, p95, p100, + ... +} + +PathSwitchRequestAcknowledgeTransfer ::= SEQUENCE { + uL-NGU-UP-TNLInformation UPTransportLayerInformation OPTIONAL, + securityIndication SecurityIndication OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PathSwitchRequestAcknowledgeTransfer-ExtIEs} } OPTIONAL, + ... +} + +PathSwitchRequestAcknowledgeTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalNGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformationPairList PRESENCE optional }| + { ID id-RedundantUL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-AdditionalRedundantNGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformationPairList PRESENCE optional }| + { ID id-QosFlowParametersList CRITICALITY ignore EXTENSION QosFlowParametersList PRESENCE optional }, + ... +} + +PathSwitchRequestSetupFailedTransfer ::= SEQUENCE { + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PathSwitchRequestSetupFailedTransfer-ExtIEs} } OPTIONAL, + ... +} + +PathSwitchRequestSetupFailedTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PathSwitchRequestTransfer ::= SEQUENCE { + dL-NGU-UP-TNLInformation UPTransportLayerInformation, + dL-NGU-TNLInformationReused DL-NGU-TNLInformationReused OPTIONAL, + userPlaneSecurityInformation UserPlaneSecurityInformation OPTIONAL, + qosFlowAcceptedList QosFlowAcceptedList, + iE-Extensions ProtocolExtensionContainer { {PathSwitchRequestTransfer-ExtIEs} } OPTIONAL, + ... +} + +PathSwitchRequestTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformationList PRESENCE optional }| + { ID id-RedundantDL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-RedundantDL-NGU-TNLInformationReused CRITICALITY ignore EXTENSION DL-NGU-TNLInformationReused PRESENCE optional }| + { ID id-AdditionalRedundantDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformationList PRESENCE optional }| + { ID id-UsedRSNInformation CRITICALITY ignore EXTENSION RedundantPDUSessionInformation PRESENCE optional }| + { ID id-GlobalRANNodeID CRITICALITY ignore EXTENSION GlobalRANNodeID PRESENCE optional }| + { ID id-MBS-SupportIndicator CRITICALITY ignore EXTENSION MBS-SupportIndicator PRESENCE optional }, + ... +} + +PathSwitchRequestUnsuccessfulTransfer ::= SEQUENCE { + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PathSwitchRequestUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +PathSwitchRequestUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PC5QoSParameters ::= SEQUENCE { + pc5QoSFlowList PC5QoSFlowList, + pc5LinkAggregateBitRates BitRate OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PC5QoSParameters-ExtIEs} } OPTIONAL, + ... +} + +PC5QoSParameters-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PC5QoSFlowList ::= SEQUENCE (SIZE(1..maxnoofPC5QoSFlows)) OF PC5QoSFlowItem + +PC5QoSFlowItem::= SEQUENCE { + pQI FiveQI, + pc5FlowBitRates PC5FlowBitRates OPTIONAL, + range Range OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PC5QoSFlowItem-ExtIEs} } OPTIONAL, + ... +} + +PC5QoSFlowItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PC5FlowBitRates ::= SEQUENCE { + guaranteedFlowBitRate BitRate, + maximumFlowBitRate BitRate, + iE-Extensions ProtocolExtensionContainer { { PC5FlowBitRates-ExtIEs} } OPTIONAL, + ... +} + +PC5FlowBitRates-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +PCIListForMDT ::= SEQUENCE (SIZE(1.. maxnoofNeighPCIforMDT)) OF NR-PCI + +PrivacyIndicator ::= ENUMERATED { + immediate-MDT, + logged-MDT, + ... +} + +PDUSessionAggregateMaximumBitRate ::= SEQUENCE { + pDUSessionAggregateMaximumBitRateDL BitRate, + pDUSessionAggregateMaximumBitRateUL BitRate, + iE-Extensions ProtocolExtensionContainer { {PDUSessionAggregateMaximumBitRate-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionAggregateMaximumBitRate-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionID ::= INTEGER (0..255) + +PDUSessionPairID ::= INTEGER (0..255, ...) + +PDUSessionResourceAdmittedList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceAdmittedItem + +PDUSessionResourceAdmittedItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + handoverRequestAcknowledgeTransfer OCTET STRING (CONTAINING HandoverRequestAcknowledgeTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceAdmittedItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceAdmittedItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToModifyListModCfm ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToModifyItemModCfm + +PDUSessionResourceFailedToModifyItemModCfm ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceModifyIndicationUnsuccessfulTransfer OCTET STRING (CONTAINING PDUSessionResourceModifyIndicationUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToModifyItemModCfm-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToModifyItemModCfm-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToModifyListModRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToModifyItemModRes + +PDUSessionResourceFailedToModifyItemModRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceModifyUnsuccessfulTransfer OCTET STRING (CONTAINING PDUSessionResourceModifyUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToModifyItemModRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToModifyItemModRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToResumeListRESReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToResumeItemRESReq + +PDUSessionResourceFailedToResumeItemRESReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToResumeItemRESReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToResumeItemRESReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +PDUSessionResourceFailedToResumeListRESRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToResumeItemRESRes + +PDUSessionResourceFailedToResumeItemRESRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToResumeItemRESRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToResumeItemRESRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToSetupListCxtFail ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToSetupItemCxtFail + +PDUSessionResourceFailedToSetupItemCxtFail ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToSetupItemCxtFail-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToSetupItemCxtFail-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToSetupListCxtRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToSetupItemCxtRes + +PDUSessionResourceFailedToSetupItemCxtRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToSetupItemCxtRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToSetupItemCxtRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToSetupListHOAck ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToSetupItemHOAck + +PDUSessionResourceFailedToSetupItemHOAck ::= SEQUENCE { + pDUSessionID PDUSessionID, + handoverResourceAllocationUnsuccessfulTransfer OCTET STRING (CONTAINING HandoverResourceAllocationUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToSetupItemHOAck-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToSetupItemHOAck-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToSetupListPSReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToSetupItemPSReq + +PDUSessionResourceFailedToSetupItemPSReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + pathSwitchRequestSetupFailedTransfer OCTET STRING (CONTAINING PathSwitchRequestSetupFailedTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToSetupItemPSReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToSetupItemPSReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceFailedToSetupListSURes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceFailedToSetupItemSURes + +PDUSessionResourceFailedToSetupItemSURes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceSetupUnsuccessfulTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceFailedToSetupItemSURes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceFailedToSetupItemSURes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceHandoverList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceHandoverItem + +PDUSessionResourceHandoverItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + handoverCommandTransfer OCTET STRING (CONTAINING HandoverCommandTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceHandoverItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceHandoverItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceInformationList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceInformationItem + +PDUSessionResourceInformationItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + qosFlowInformationList QosFlowInformationList, + dRBsToQosFlowsMappingList DRBsToQosFlowsMappingList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceInformationItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceInformationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceListCxtRelCpl ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceItemCxtRelCpl + +PDUSessionResourceItemCxtRelCpl ::= SEQUENCE { + pDUSessionID PDUSessionID, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceItemCxtRelCpl-ExtIEs} } OPTIONAL, + ... +} + +-- WS modification: define a dedicated type +PDUSessionResourceReleaseResponseTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING PDUSessionResourceReleaseResponseTransfer) + +PDUSessionResourceItemCxtRelCpl-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { +-- WS modification: define a dedicated type +-- { ID id-PDUSessionResourceReleaseResponseTransfer CRITICALITY ignore EXTENSION OCTET STRING (CONTAINING PDUSessionResourceReleaseResponseTransfer) PRESENCE optional }, + { ID id-PDUSessionResourceReleaseResponseTransfer CRITICALITY ignore EXTENSION PDUSessionResourceReleaseResponseTransfer-OCTET-STRING PRESENCE optional }, + ... +} + +PDUSessionResourceListCxtRelReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceItemCxtRelReq + +PDUSessionResourceItemCxtRelReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceItemCxtRelReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceItemCxtRelReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceListHORqd ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceItemHORqd + +PDUSessionResourceItemHORqd ::= SEQUENCE { + pDUSessionID PDUSessionID, + handoverRequiredTransfer OCTET STRING (CONTAINING HandoverRequiredTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceItemHORqd-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceItemHORqd-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceModifyConfirmTransfer ::= SEQUENCE { + qosFlowModifyConfirmList QosFlowModifyConfirmList, + uLNGU-UP-TNLInformation UPTransportLayerInformation, + additionalNG-UUPTNLInformation UPTransportLayerInformationPairList OPTIONAL, + qosFlowFailedToModifyList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyConfirmTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyConfirmTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-RedundantUL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-AdditionalRedundantNGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformationPairList PRESENCE optional }, + ... +} + +PDUSessionResourceModifyIndicationUnsuccessfulTransfer ::= SEQUENCE { + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyIndicationUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyIndicationUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceModifyRequestTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceModifyRequestTransferIEs} }, + ... +} + +PDUSessionResourceModifyRequestTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-PDUSessionAggregateMaximumBitRate CRITICALITY reject TYPE PDUSessionAggregateMaximumBitRate PRESENCE optional }| + { ID id-UL-NGU-UP-TNLModifyList CRITICALITY reject TYPE UL-NGU-UP-TNLModifyList PRESENCE optional }| + { ID id-NetworkInstance CRITICALITY reject TYPE NetworkInstance PRESENCE optional }| + { ID id-QosFlowAddOrModifyRequestList CRITICALITY reject TYPE QosFlowAddOrModifyRequestList PRESENCE optional }| + { ID id-QosFlowToReleaseList CRITICALITY reject TYPE QosFlowListWithCause PRESENCE optional }| + { ID id-AdditionalUL-NGU-UP-TNLInformation CRITICALITY reject TYPE UPTransportLayerInformationList PRESENCE optional }| + { ID id-CommonNetworkInstance CRITICALITY ignore TYPE CommonNetworkInstance PRESENCE optional }| + { ID id-AdditionalRedundantUL-NGU-UP-TNLInformation CRITICALITY ignore TYPE UPTransportLayerInformationList PRESENCE optional }| + { ID id-RedundantCommonNetworkInstance CRITICALITY ignore TYPE CommonNetworkInstance PRESENCE optional }| + { ID id-RedundantUL-NGU-UP-TNLInformation CRITICALITY ignore TYPE UPTransportLayerInformation PRESENCE optional }| + { ID id-SecurityIndication CRITICALITY ignore TYPE SecurityIndication PRESENCE optional }| + { ID id-MBSSessionSetuporModifyRequestList CRITICALITY ignore TYPE MBSSessionSetuporModifyRequestList PRESENCE optional }| + { ID id-MBSSessionToReleaseList CRITICALITY ignore TYPE MBSSessionToReleaseList PRESENCE optional }, + ... +} + +PDUSessionResourceModifyResponseTransfer ::= SEQUENCE { + dL-NGU-UP-TNLInformation UPTransportLayerInformation OPTIONAL, + uL-NGU-UP-TNLInformation UPTransportLayerInformation OPTIONAL, + qosFlowAddOrModifyResponseList QosFlowAddOrModifyResponseList OPTIONAL, + additionalDLQosFlowPerTNLInformation QosFlowPerTNLInformationList OPTIONAL, + qosFlowFailedToAddOrModifyList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalNGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformationPairList PRESENCE optional }| + { ID id-RedundantDL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-RedundantUL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-AdditionalRedundantDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformationList PRESENCE optional }| + { ID id-AdditionalRedundantNGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformationPairList PRESENCE optional }| + { ID id-SecondaryRATUsageInformation CRITICALITY ignore EXTENSION SecondaryRATUsageInformation PRESENCE optional }| + { ID id-MBS-SupportIndicator CRITICALITY ignore EXTENSION MBS-SupportIndicator PRESENCE optional }| + { ID id-MBSSessionSetuporModifyResponseList CRITICALITY ignore EXTENSION MBSSessionSetupResponseList PRESENCE optional }| + { ID id-MBSSessionFailedtoSetuporModifyList CRITICALITY ignore EXTENSION MBSSessionFailedtoSetupList PRESENCE optional }, + ... +} + +PDUSessionResourceModifyIndicationTransfer ::= SEQUENCE { + dLQosFlowPerTNLInformation QosFlowPerTNLInformation, + additionalDLQosFlowPerTNLInformation QosFlowPerTNLInformationList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyIndicationTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyIndicationTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SecondaryRATUsageInformation CRITICALITY ignore EXTENSION SecondaryRATUsageInformation PRESENCE optional }| + { ID id-SecurityResult CRITICALITY ignore EXTENSION SecurityResult PRESENCE optional }| + { ID id-RedundantDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformation PRESENCE optional }| + { ID id-AdditionalRedundantDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformationList PRESENCE optional }| + { ID id-GlobalRANNodeID CRITICALITY ignore EXTENSION GlobalRANNodeID PRESENCE optional }, + ... +} + +PDUSessionResourceModifyListModCfm ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceModifyItemModCfm + +PDUSessionResourceModifyItemModCfm ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceModifyConfirmTransfer OCTET STRING (CONTAINING PDUSessionResourceModifyConfirmTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyItemModCfm-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyItemModCfm-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceModifyListModInd ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceModifyItemModInd + +PDUSessionResourceModifyItemModInd ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceModifyIndicationTransfer OCTET STRING (CONTAINING PDUSessionResourceModifyIndicationTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyItemModInd-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyItemModInd-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceModifyListModReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceModifyItemModReq + +PDUSessionResourceModifyItemModReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + nAS-PDU NAS-PDU OPTIONAL, + pDUSessionResourceModifyRequestTransfer OCTET STRING (CONTAINING PDUSessionResourceModifyRequestTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyItemModReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyItemModReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-S-NSSAI CRITICALITY reject EXTENSION S-NSSAI PRESENCE optional }| + { ID id-PduSessionExpectedUEActivityBehaviour CRITICALITY ignore EXTENSION ExpectedUEActivityBehaviour PRESENCE optional }, + ... +} + +PDUSessionResourceModifyListModRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceModifyItemModRes + +PDUSessionResourceModifyItemModRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceModifyResponseTransfer OCTET STRING (CONTAINING PDUSessionResourceModifyResponseTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyItemModRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyItemModRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceModifyUnsuccessfulTransfer ::= SEQUENCE { + cause Cause, + criticalityDiagnostics CriticalityDiagnostics OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceModifyUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceModifyUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceNotifyList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceNotifyItem + +PDUSessionResourceNotifyItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceNotifyTransfer OCTET STRING (CONTAINING PDUSessionResourceNotifyTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceNotifyItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceNotifyItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceNotifyReleasedTransfer ::= SEQUENCE { + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceNotifyReleasedTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceNotifyReleasedTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SecondaryRATUsageInformation CRITICALITY ignore EXTENSION SecondaryRATUsageInformation PRESENCE optional }, + ... +} + +PDUSessionResourceNotifyTransfer ::= SEQUENCE { + qosFlowNotifyList QosFlowNotifyList OPTIONAL, + qosFlowReleasedList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceNotifyTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceNotifyTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SecondaryRATUsageInformation CRITICALITY ignore EXTENSION SecondaryRATUsageInformation PRESENCE optional }| + { ID id-QosFlowFeedbackList CRITICALITY ignore EXTENSION QosFlowFeedbackList PRESENCE optional }, + ... +} + +PDUSessionResourceReleaseCommandTransfer ::= SEQUENCE { + cause Cause, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceReleaseCommandTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceReleaseCommandTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceReleasedListNot ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceReleasedItemNot + +PDUSessionResourceReleasedItemNot ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceNotifyReleasedTransfer OCTET STRING (CONTAINING PDUSessionResourceNotifyReleasedTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceReleasedItemNot-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceReleasedItemNot-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceReleasedListPSAck ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceReleasedItemPSAck + +PDUSessionResourceReleasedItemPSAck ::= SEQUENCE { + pDUSessionID PDUSessionID, + pathSwitchRequestUnsuccessfulTransfer OCTET STRING (CONTAINING PathSwitchRequestUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceReleasedItemPSAck-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceReleasedItemPSAck-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceReleasedListPSFail ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceReleasedItemPSFail + +PDUSessionResourceReleasedItemPSFail ::= SEQUENCE { + pDUSessionID PDUSessionID, + pathSwitchRequestUnsuccessfulTransfer OCTET STRING (CONTAINING PathSwitchRequestUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceReleasedItemPSFail-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceReleasedItemPSFail-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceReleasedListRelRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceReleasedItemRelRes + +PDUSessionResourceReleasedItemRelRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceReleaseResponseTransfer OCTET STRING (CONTAINING PDUSessionResourceReleaseResponseTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceReleasedItemRelRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceReleasedItemRelRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceReleaseResponseTransfer ::= SEQUENCE { + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceReleaseResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceReleaseResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SecondaryRATUsageInformation CRITICALITY ignore EXTENSION SecondaryRATUsageInformation PRESENCE optional }, + ... +} + +PDUSessionResourceResumeListRESReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceResumeItemRESReq + +PDUSessionResourceResumeItemRESReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + uEContextResumeRequestTransfer OCTET STRING (CONTAINING UEContextResumeRequestTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceResumeItemRESReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceResumeItemRESReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceResumeListRESRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceResumeItemRESRes + +PDUSessionResourceResumeItemRESRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + uEContextResumeResponseTransfer OCTET STRING (CONTAINING UEContextResumeResponseTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceResumeItemRESRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceResumeItemRESRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceSecondaryRATUsageList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSecondaryRATUsageItem + +PDUSessionResourceSecondaryRATUsageItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + secondaryRATDataUsageReportTransfer OCTET STRING (CONTAINING SecondaryRATDataUsageReportTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSecondaryRATUsageItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSecondaryRATUsageItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceSetupListCxtReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSetupItemCxtReq + +PDUSessionResourceSetupItemCxtReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + nAS-PDU NAS-PDU OPTIONAL, + s-NSSAI S-NSSAI, + pDUSessionResourceSetupRequestTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupRequestTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupItemCxtReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupItemCxtReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PduSessionExpectedUEActivityBehaviour CRITICALITY ignore EXTENSION ExpectedUEActivityBehaviour PRESENCE optional }, + ... +} + +PDUSessionResourceSetupListCxtRes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSetupItemCxtRes + +PDUSessionResourceSetupItemCxtRes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceSetupResponseTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupResponseTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupItemCxtRes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupItemCxtRes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceSetupListHOReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSetupItemHOReq + +PDUSessionResourceSetupItemHOReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + s-NSSAI S-NSSAI, + handoverRequestTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupRequestTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupItemHOReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupItemHOReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PduSessionExpectedUEActivityBehaviour CRITICALITY ignore EXTENSION ExpectedUEActivityBehaviour PRESENCE optional }, + ... +} + +PDUSessionResourceSetupListSUReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSetupItemSUReq + +PDUSessionResourceSetupItemSUReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionNAS-PDU NAS-PDU OPTIONAL, + s-NSSAI S-NSSAI, + pDUSessionResourceSetupRequestTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupRequestTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupItemSUReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupItemSUReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PduSessionExpectedUEActivityBehaviour CRITICALITY ignore EXTENSION ExpectedUEActivityBehaviour PRESENCE optional }, + ... +} + +PDUSessionResourceSetupListSURes ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSetupItemSURes + +PDUSessionResourceSetupItemSURes ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceSetupResponseTransfer OCTET STRING (CONTAINING PDUSessionResourceSetupResponseTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupItemSURes-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupItemSURes-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceSetupRequestTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceSetupRequestTransferIEs} }, + ... +} + +PDUSessionResourceSetupRequestTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-PDUSessionAggregateMaximumBitRate CRITICALITY reject TYPE PDUSessionAggregateMaximumBitRate PRESENCE optional }| + { ID id-UL-NGU-UP-TNLInformation CRITICALITY reject TYPE UPTransportLayerInformation PRESENCE mandatory }| + { ID id-AdditionalUL-NGU-UP-TNLInformation CRITICALITY reject TYPE UPTransportLayerInformationList PRESENCE optional }| + { ID id-DataForwardingNotPossible CRITICALITY reject TYPE DataForwardingNotPossible PRESENCE optional }| + { ID id-PDUSessionType CRITICALITY reject TYPE PDUSessionType PRESENCE mandatory }| + { ID id-SecurityIndication CRITICALITY reject TYPE SecurityIndication PRESENCE optional }| + { ID id-NetworkInstance CRITICALITY reject TYPE NetworkInstance PRESENCE optional }| + { ID id-QosFlowSetupRequestList CRITICALITY reject TYPE QosFlowSetupRequestList PRESENCE mandatory }| + { ID id-CommonNetworkInstance CRITICALITY ignore TYPE CommonNetworkInstance PRESENCE optional }| + { ID id-DirectForwardingPathAvailability CRITICALITY ignore TYPE DirectForwardingPathAvailability PRESENCE optional }| + { ID id-RedundantUL-NGU-UP-TNLInformation CRITICALITY ignore TYPE UPTransportLayerInformation PRESENCE optional }| + { ID id-AdditionalRedundantUL-NGU-UP-TNLInformation CRITICALITY ignore TYPE UPTransportLayerInformationList PRESENCE optional }| + { ID id-RedundantCommonNetworkInstance CRITICALITY ignore TYPE CommonNetworkInstance PRESENCE optional }| + { ID id-RedundantPDUSessionInformation CRITICALITY ignore TYPE RedundantPDUSessionInformation PRESENCE optional }| + { ID id-MBSSessionSetupRequestList CRITICALITY ignore TYPE MBSSessionSetupRequestList PRESENCE optional }, + ... +} + +PDUSessionResourceSetupResponseTransfer ::= SEQUENCE { + dLQosFlowPerTNLInformation QosFlowPerTNLInformation, + additionalDLQosFlowPerTNLInformation QosFlowPerTNLInformationList OPTIONAL, + securityResult SecurityResult OPTIONAL, + qosFlowFailedToSetupList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-RedundantDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformation PRESENCE optional }| + { ID id-AdditionalRedundantDLQosFlowPerTNLInformation CRITICALITY ignore EXTENSION QosFlowPerTNLInformationList PRESENCE optional }| + { ID id-UsedRSNInformation CRITICALITY ignore EXTENSION RedundantPDUSessionInformation PRESENCE optional }| + { ID id-GlobalRANNodeID CRITICALITY ignore EXTENSION GlobalRANNodeID PRESENCE optional }| + { ID id-MBS-SupportIndicator CRITICALITY ignore EXTENSION MBS-SupportIndicator PRESENCE optional }| + { ID id-MBSSessionSetupResponseList CRITICALITY ignore EXTENSION MBSSessionSetupResponseList PRESENCE optional }| + { ID id-MBSSessionFailedtoSetupList CRITICALITY ignore EXTENSION MBSSessionFailedtoSetupList PRESENCE optional }, + ... +} + +PDUSessionResourceSetupUnsuccessfulTransfer ::= SEQUENCE { + cause Cause, + criticalityDiagnostics CriticalityDiagnostics OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSetupUnsuccessfulTransfer-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSetupUnsuccessfulTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceSuspendListSUSReq ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSuspendItemSUSReq + +PDUSessionResourceSuspendItemSUSReq ::= SEQUENCE { + pDUSessionID PDUSessionID, + uEContextSuspendRequestTransfer OCTET STRING (CONTAINING UEContextSuspendRequestTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceSuspendItemSUSReq-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSuspendItemSUSReq-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceSwitchedList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceSwitchedItem + +PDUSessionResourceSwitchedItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + pathSwitchRequestAcknowledgeTransfer OCTET STRING (CONTAINING PathSwitchRequestAcknowledgeTransfer), + iE-Extensions ProtocolExtensionContainer { { PDUSessionResourceSwitchedItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceSwitchedItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PduSessionExpectedUEActivityBehaviour CRITICALITY ignore EXTENSION ExpectedUEActivityBehaviour PRESENCE optional }, + ... +} + +PDUSessionResourceToBeSwitchedDLList ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceToBeSwitchedDLItem + +PDUSessionResourceToBeSwitchedDLItem ::= SEQUENCE { + pDUSessionID PDUSessionID, + pathSwitchRequestTransfer OCTET STRING (CONTAINING PathSwitchRequestTransfer), + iE-Extensions ProtocolExtensionContainer { { PDUSessionResourceToBeSwitchedDLItem-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceToBeSwitchedDLItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceToReleaseListHOCmd ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceToReleaseItemHOCmd + +PDUSessionResourceToReleaseItemHOCmd ::= SEQUENCE { + pDUSessionID PDUSessionID, + handoverPreparationUnsuccessfulTransfer OCTET STRING (CONTAINING HandoverPreparationUnsuccessfulTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceToReleaseItemHOCmd-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceToReleaseItemHOCmd-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PDUSessionResourceToReleaseListRelCmd ::= SEQUENCE (SIZE(1..maxnoofPDUSessions)) OF PDUSessionResourceToReleaseItemRelCmd + +PDUSessionResourceToReleaseItemRelCmd ::= SEQUENCE { + pDUSessionID PDUSessionID, + pDUSessionResourceReleaseCommandTransfer OCTET STRING (CONTAINING PDUSessionResourceReleaseCommandTransfer), + iE-Extensions ProtocolExtensionContainer { {PDUSessionResourceToReleaseItemRelCmd-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionResourceToReleaseItemRelCmd-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} +PDUSessionType ::= ENUMERATED { + ipv4, + ipv6, + ipv4v6, + ethernet, + unstructured, + ... +} + +PDUSessionUsageReport ::= SEQUENCE { + rATType ENUMERATED {nr, eutra, ..., nr-unlicensed, e-utra-unlicensed}, + pDUSessionTimedReportList VolumeTimedReportList, + iE-Extensions ProtocolExtensionContainer { {PDUSessionUsageReport-ExtIEs} } OPTIONAL, + ... +} + +PDUSessionUsageReport-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PEIPSassistanceInformation ::= SEQUENCE { + cNsubgroupID CNsubgroupID, + iE-Extensions ProtocolExtensionContainer { {PEIPSassistanceInformation-ExtIEs} } OPTIONAL, + ... +} + +PEIPSassistanceInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +Periodicity ::= INTEGER (0..640000, ...) + +PeriodicRegistrationUpdateTimer ::= BIT STRING (SIZE(8)) + +PLMNIdentity ::= OCTET STRING (SIZE(3)) + +PLMNAreaBasedQMC ::= SEQUENCE { + plmnListforQMC PLMNListforQMC, + iE-Extensions ProtocolExtensionContainer { {PLMNAreaBasedQMC-ExtIEs} } OPTIONAL, + ... +} + +PLMNAreaBasedQMC-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PLMNListforQMC ::= SEQUENCE (SIZE(1..maxnoofPLMNforQMC)) OF PLMNIdentity + +PLMNSupportList ::= SEQUENCE (SIZE(1..maxnoofPLMNs)) OF PLMNSupportItem + +PLMNSupportItem ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + sliceSupportList SliceSupportList, + iE-Extensions ProtocolExtensionContainer { {PLMNSupportItem-ExtIEs} } OPTIONAL, + ... +} + +PLMNSupportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-NPN-Support CRITICALITY reject EXTENSION NPN-Support PRESENCE optional }| + { ID id-ExtendedSliceSupportList CRITICALITY reject EXTENSION ExtendedSliceSupportList PRESENCE optional }| + { ID id-OnboardingSupport CRITICALITY ignore EXTENSION OnboardingSupport PRESENCE optional }, + ... +} + +PNI-NPN-MobilityInformation ::= SEQUENCE { + allowed-PNI-NPI-List Allowed-PNI-NPN-List, + iE-Extensions ProtocolExtensionContainer { {PNI-NPN-MobilityInformation-ExtIEs} } OPTIONAL, + ... +} + +PNI-NPN-MobilityInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +PortNumber ::= OCTET STRING (SIZE(2)) + +Pre-emptionCapability ::= ENUMERATED { + shall-not-trigger-pre-emption, + may-trigger-pre-emption, + ... +} + +Pre-emptionVulnerability ::= ENUMERATED { + not-pre-emptable, + pre-emptable, + ... +} + +PriorityLevelARP ::= INTEGER (1..15) + +PriorityLevelQos ::= INTEGER (1..127, ...) + +PWSFailedCellIDList ::= CHOICE { + eUTRA-CGI-PWSFailedList EUTRA-CGIList, + nR-CGI-PWSFailedList NR-CGIList, + choice-Extensions ProtocolIE-SingleContainer { {PWSFailedCellIDList-ExtIEs} } +} + +PWSFailedCellIDList-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +-- Q + +QMCConfigInfo ::= SEQUENCE { + uEAppLayerMeasInfoList UEAppLayerMeasInfoList, + iE-Extensions ProtocolExtensionContainer { { QMCConfigInfo-ExtIEs} } OPTIONAL, + ... +} + +QMCConfigInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QMCDeactivation ::= SEQUENCE { + qoEReferenceList QoEReferenceList, + iE-Extensions ProtocolExtensionContainer { { QMCDeactivation-ExtIEs} } OPTIONAL, + ... +} + +QMCDeactivation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QoEReferenceList ::= SEQUENCE (SIZE(1..maxnoofUEAppLayerMeas)) OF QoEReference + +QoEReference ::= OCTET STRING (SIZE(6)) + +QosCharacteristics ::= CHOICE { + nonDynamic5QI NonDynamic5QIDescriptor, + dynamic5QI Dynamic5QIDescriptor, + choice-Extensions ProtocolIE-SingleContainer { {QosCharacteristics-ExtIEs} } +} + +QosCharacteristics-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +QosFlowAcceptedList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowAcceptedItem + +QosFlowAcceptedItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + iE-Extensions ProtocolExtensionContainer { {QosFlowAcceptedItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowAcceptedItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CurrentQoSParaSetIndex CRITICALITY ignore EXTENSION AlternativeQoSParaSetIndex PRESENCE optional }, + ... +} + +QosFlowAddOrModifyRequestList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowAddOrModifyRequestItem + +QosFlowAddOrModifyRequestItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + qosFlowLevelQosParameters QosFlowLevelQosParameters OPTIONAL, + e-RAB-ID E-RAB-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowAddOrModifyRequestItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowAddOrModifyRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-TSCTrafficCharacteristics CRITICALITY ignore EXTENSION TSCTrafficCharacteristics PRESENCE optional }| + {ID id-RedundantQosFlowIndicator CRITICALITY ignore EXTENSION RedundantQosFlowIndicator PRESENCE optional }, + ... +} + +QosFlowAddOrModifyResponseList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowAddOrModifyResponseItem + +QosFlowAddOrModifyResponseItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + iE-Extensions ProtocolExtensionContainer { {QosFlowAddOrModifyResponseItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowAddOrModifyResponseItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CurrentQoSParaSetIndex CRITICALITY ignore EXTENSION AlternativeQoSParaSetIndex PRESENCE optional }, + ... +} + +QosFlowFeedbackList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowFeedbackItem + +QosFlowFeedbackItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + updateFeedback UpdateFeedback OPTIONAL, + cNpacketDelayBudgetDL ExtendedPacketDelayBudget OPTIONAL, + cNpacketDelayBudgetUL ExtendedPacketDelayBudget OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowFeedbackItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowFeedbackItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QosFlowIdentifier ::= INTEGER (0..63, ...) + +QosFlowInformationList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowInformationItem + +QosFlowInformationItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + dLForwarding DLForwarding OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowInformationItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowInformationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-ULForwarding CRITICALITY ignore EXTENSION ULForwarding PRESENCE optional}| + {ID id-SourceTNLAddrInfo CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}| + {ID id-SourceNodeTNLAddrInfo CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}, + ... +} + +QosFlowLevelQosParameters ::= SEQUENCE { + qosCharacteristics QosCharacteristics, + allocationAndRetentionPriority AllocationAndRetentionPriority, + gBR-QosInformation GBR-QosInformation OPTIONAL, + reflectiveQosAttribute ReflectiveQosAttribute OPTIONAL, + additionalQosFlowInformation AdditionalQosFlowInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowLevelQosParameters-ExtIEs} } OPTIONAL, + ... +} + +QosFlowLevelQosParameters-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-QosMonitoringRequest CRITICALITY ignore EXTENSION QosMonitoringRequest PRESENCE optional}| + {ID id-QosMonitoringReportingFrequency CRITICALITY ignore EXTENSION QosMonitoringReportingFrequency PRESENCE optional}, + ... +} + + +QosMonitoringRequest ::= ENUMERATED {ul, dl, both, ..., stop} + +QosMonitoringReportingFrequency ::= INTEGER (1..1800, ...) + +QoSFlowList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowIdentifier + +QosFlowListWithCause ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowWithCauseItem + +QosFlowWithCauseItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {QosFlowWithCauseItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowWithCauseItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QosFlowModifyConfirmList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowModifyConfirmItem + +QosFlowModifyConfirmItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + iE-Extensions ProtocolExtensionContainer { {QosFlowModifyConfirmItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowModifyConfirmItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QosFlowNotifyList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowNotifyItem + +QosFlowNotifyItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + notificationCause NotificationCause, + iE-Extensions ProtocolExtensionContainer { {QosFlowNotifyItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowNotifyItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CurrentQoSParaSetIndex CRITICALITY ignore EXTENSION AlternativeQoSParaSetNotifyIndex PRESENCE optional }, + ... +} +QosFlowParametersList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowParametersItem + +QosFlowParametersItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + alternativeQoSParaSetList AlternativeQoSParaSetList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowParametersItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowParametersItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CNPacketDelayBudgetDL CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }| + { ID id-CNPacketDelayBudgetUL CRITICALITY ignore EXTENSION ExtendedPacketDelayBudget PRESENCE optional }| + { ID id-BurstArrivalTimeDownlink CRITICALITY ignore EXTENSION BurstArrivalTime PRESENCE optional }, + ... +} + +QosFlowPerTNLInformation ::= SEQUENCE { + uPTransportLayerInformation UPTransportLayerInformation, + associatedQosFlowList AssociatedQosFlowList, + iE-Extensions ProtocolExtensionContainer { { QosFlowPerTNLInformation-ExtIEs} } OPTIONAL, + ... +} + +QosFlowPerTNLInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QosFlowPerTNLInformationList ::= SEQUENCE (SIZE(1..maxnoofMultiConnectivityMinusOne)) OF QosFlowPerTNLInformationItem + +QosFlowPerTNLInformationItem ::= SEQUENCE { + qosFlowPerTNLInformation QosFlowPerTNLInformation, + iE-Extensions ProtocolExtensionContainer { { QosFlowPerTNLInformationItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowPerTNLInformationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QosFlowSetupRequestList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowSetupRequestItem + +QosFlowSetupRequestItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + qosFlowLevelQosParameters QosFlowLevelQosParameters, + e-RAB-ID E-RAB-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowSetupRequestItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowSetupRequestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-TSCTrafficCharacteristics CRITICALITY ignore EXTENSION TSCTrafficCharacteristics PRESENCE optional }| + {ID id-RedundantQosFlowIndicator CRITICALITY ignore EXTENSION RedundantQosFlowIndicator PRESENCE optional }, + ... +} + +QosFlowListWithDataForwarding ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowItemWithDataForwarding + +QosFlowItemWithDataForwarding ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + dataForwardingAccepted DataForwardingAccepted OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {QosFlowItemWithDataForwarding-ExtIEs} } OPTIONAL, + ... +} + +QosFlowItemWithDataForwarding-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CurrentQoSParaSetIndex CRITICALITY ignore EXTENSION AlternativeQoSParaSetIndex PRESENCE optional }, + ... +} + +QosFlowToBeForwardedList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QosFlowToBeForwardedItem + +QosFlowToBeForwardedItem ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + iE-Extensions ProtocolExtensionContainer { {QosFlowToBeForwardedItem-ExtIEs} } OPTIONAL, + ... +} + +QosFlowToBeForwardedItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +QoSFlowsUsageReportList ::= SEQUENCE (SIZE(1..maxnoofQosFlows)) OF QoSFlowsUsageReport-Item + +QoSFlowsUsageReport-Item ::= SEQUENCE { + qosFlowIdentifier QosFlowIdentifier, + rATType ENUMERATED {nr, eutra, ..., nr-unlicensed, e-utra-unlicensed}, + qoSFlowsTimedReportList VolumeTimedReportList, + iE-Extensions ProtocolExtensionContainer { {QoSFlowsUsageReport-Item-ExtIEs} } OPTIONAL, + ... +} + +QoSFlowsUsageReport-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- R + +Range ::= ENUMERATED {m50, m80, m180, m200, m350, m400, m500, m700, m1000, ...} + +RANNodeName ::= PrintableString (SIZE(1..150, ...)) + +RANNodeNameVisibleString ::= VisibleString (SIZE(1..150, ...)) + +RANNodeNameUTF8String ::= UTF8String (SIZE(1..150, ...)) + +RANPagingPriority ::= INTEGER (1..256) + +RANStatusTransfer-TransparentContainer ::= SEQUENCE { + dRBsSubjectToStatusTransferList DRBsSubjectToStatusTransferList, + iE-Extensions ProtocolExtensionContainer { {RANStatusTransfer-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +RANStatusTransfer-TransparentContainer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +RAN-UE-NGAP-ID ::= INTEGER (0..4294967295) + +RAT-Information ::= ENUMERATED { + unlicensed, + nb-IoT, + ..., + nR-LEO, + nR-MEO, + nR-GEO, + nR-OTHERSAT +} + +RATRestrictions ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF RATRestrictions-Item + +RATRestrictions-Item ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + rATRestrictionInformation RATRestrictionInformation, + iE-Extensions ProtocolExtensionContainer { {RATRestrictions-Item-ExtIEs} } OPTIONAL, + ... +} + +RATRestrictions-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-ExtendedRATRestrictionInformation CRITICALITY ignore EXTENSION ExtendedRATRestrictionInformation PRESENCE optional }, + ... +} + +RATRestrictionInformation ::= BIT STRING (SIZE(8, ...)) + +RecommendedCellsForPaging ::= SEQUENCE { + recommendedCellList RecommendedCellList, + iE-Extensions ProtocolExtensionContainer { {RecommendedCellsForPaging-ExtIEs} } OPTIONAL, + ... +} + +RecommendedCellsForPaging-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedCellList ::= SEQUENCE (SIZE(1..maxnoofRecommendedCells)) OF RecommendedCellItem + +RecommendedCellItem ::= SEQUENCE { + nGRAN-CGI NGRAN-CGI, + timeStayedInCell INTEGER (0..4095) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {RecommendedCellItem-ExtIEs} } OPTIONAL, + ... +} + +RecommendedCellItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedRANNodesForPaging ::= SEQUENCE { + recommendedRANNodeList RecommendedRANNodeList, + iE-Extensions ProtocolExtensionContainer { {RecommendedRANNodesForPaging-ExtIEs} } OPTIONAL, + ... +} + +RecommendedRANNodesForPaging-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedRANNodeList::= SEQUENCE (SIZE(1..maxnoofRecommendedRANNodes)) OF RecommendedRANNodeItem + +RecommendedRANNodeItem ::= SEQUENCE { + aMFPagingTarget AMFPagingTarget, + iE-Extensions ProtocolExtensionContainer { {RecommendedRANNodeItem-ExtIEs} } OPTIONAL, + ... +} + +RecommendedRANNodeItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +RedCapIndication ::= ENUMERATED { + redcap, + ... +} + +RedirectionVoiceFallback ::= ENUMERATED { + possible, + not-possible, + ... +} + +RedundantPDUSessionInformation ::= SEQUENCE { + rSN RSN, + iE-Extensions ProtocolExtensionContainer { {RedundantPDUSessionInformation-ExtIEs} } OPTIONAL, + ... +} + +RedundantPDUSessionInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PDUSessionPairID CRITICALITY ignore EXTENSION PDUSessionPairID PRESENCE optional }, + ... +} + +RedundantQosFlowIndicator ::= ENUMERATED {true, false} + +ReflectiveQosAttribute ::= ENUMERATED { + subject-to, + ... +} + +RelativeAMFCapacity ::= INTEGER (0..255) + +ReportArea ::= ENUMERATED { + cell, + ... +} + +RepetitionPeriod ::= INTEGER (0..131071) + +ResetAll ::= ENUMERATED { + reset-all, + ... +} + +ReportAmountMDT ::= ENUMERATED { + r1, r2, r4, r8, r16, r32, r64, rinfinity +} + +ReportIntervalMDT ::= ENUMERATED { + ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60 +} + +ExtendedReportIntervalMDT ::= ENUMERATED { + ms20480, ms40960, ... +} + +ResetType ::= CHOICE { + nG-Interface ResetAll, + partOfNG-Interface UE-associatedLogicalNG-connectionList, + choice-Extensions ProtocolIE-SingleContainer { {ResetType-ExtIEs} } +} + +ResetType-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +RGLevelWirelineAccessCharacteristics ::= OCTET STRING + +RNC-ID ::= INTEGER (0..4095) + +RoutingID ::= OCTET STRING + +RRCContainer ::= OCTET STRING + +RRCEstablishmentCause ::= ENUMERATED { + emergency, + highPriorityAccess, + mt-Access, + mo-Signalling, + mo-Data, + mo-VoiceCall, + mo-VideoCall, + mo-SMS, + mps-PriorityAccess, + mcs-PriorityAccess, + ..., + notAvailable, + mo-ExceptionData +} + +RRCInactiveTransitionReportRequest ::= ENUMERATED { + subsequent-state-transition-report, + single-rrc-connected-state-report, + cancel-report, + ... +} + +RRCState ::= ENUMERATED { + inactive, + connected, + ... +} + +RSN ::= ENUMERATED {v1, v2, ...} + +RIMInformationTransfer ::= SEQUENCE { + targetRANNodeID-RIM TargetRANNodeID-RIM, + sourceRANNodeID SourceRANNodeID, + rIMInformation RIMInformation, + iE-Extensions ProtocolExtensionContainer { {RIMInformationTransfer-ExtIEs} } OPTIONAL, + ... +} + +RIMInformationTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +RIMInformation ::= SEQUENCE { + targetgNBSetID GNBSetID, + rIM-RSDetection ENUMERATED {rs-detected, rs-disappeared, ...}, + iE-Extensions ProtocolExtensionContainer { {RIMInformation-ExtIEs} } OPTIONAL, + ... +} + +RIMInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +GNBSetID ::= BIT STRING (SIZE(22)) + +-- S + +ScheduledCommunicationTime ::= SEQUENCE { + dayofWeek BIT STRING (SIZE(7)) OPTIONAL, + timeofDayStart INTEGER (0..86399, ...) OPTIONAL, + timeofDayEnd INTEGER (0..86399, ...) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ScheduledCommunicationTime-ExtIEs}} OPTIONAL, + ... +} + +ScheduledCommunicationTime-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SCTP-TLAs ::= SEQUENCE (SIZE(1..maxnoofXnTLAs)) OF TransportLayerAddress + +SD ::= OCTET STRING (SIZE(3)) + +SecondaryRATUsageInformation ::= SEQUENCE { + pDUSessionUsageReport PDUSessionUsageReport OPTIONAL, + qosFlowsUsageReportList QoSFlowsUsageReportList OPTIONAL, + iE-Extension ProtocolExtensionContainer { {SecondaryRATUsageInformation-ExtIEs} } OPTIONAL, + ... +} + +SecondaryRATUsageInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SecondaryRATDataUsageReportTransfer ::= SEQUENCE { + secondaryRATUsageInformation SecondaryRATUsageInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {SecondaryRATDataUsageReportTransfer-ExtIEs} } OPTIONAL, + ... +} + +SecondaryRATDataUsageReportTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SecurityContext ::= SEQUENCE { + nextHopChainingCount NextHopChainingCount, + nextHopNH SecurityKey, + iE-Extensions ProtocolExtensionContainer { {SecurityContext-ExtIEs} } OPTIONAL, + ... +} + +SecurityContext-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SecurityIndication ::= SEQUENCE { + integrityProtectionIndication IntegrityProtectionIndication, + confidentialityProtectionIndication ConfidentialityProtectionIndication, + maximumIntegrityProtectedDataRate-UL MaximumIntegrityProtectedDataRate OPTIONAL, +-- The above IE shall be present if integrity protection is required or preferred + iE-Extensions ProtocolExtensionContainer { {SecurityIndication-ExtIEs} } OPTIONAL, + ... +} + +SecurityIndication-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-MaximumIntegrityProtectedDataRate-DL CRITICALITY ignore EXTENSION MaximumIntegrityProtectedDataRate PRESENCE optional }, + ... +} + +SecurityKey ::= BIT STRING (SIZE(256)) + +SecurityResult ::= SEQUENCE { + integrityProtectionResult IntegrityProtectionResult, + confidentialityProtectionResult ConfidentialityProtectionResult, + iE-Extensions ProtocolExtensionContainer { {SecurityResult-ExtIEs} } OPTIONAL, + ... +} + +SecurityResult-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SensorMeasurementConfiguration ::= SEQUENCE { + sensorMeasConfig SensorMeasConfig, + sensorMeasConfigNameList SensorMeasConfigNameList OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {SensorMeasurementConfiguration-ExtIEs} } OPTIONAL, + ... +} + +SensorMeasurementConfiguration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SensorMeasConfigNameList ::= SEQUENCE (SIZE(1..maxnoofSensorName)) OF SensorMeasConfigNameItem + +SensorMeasConfigNameItem ::= SEQUENCE { + sensorNameConfig SensorNameConfig, + iE-Extensions ProtocolExtensionContainer { { SensorMeasConfigNameItem-ExtIEs } } OPTIONAL, + ... +} + +SensorMeasConfigNameItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SensorMeasConfig::= ENUMERATED {setup,...} + +SensorNameConfig ::= CHOICE { + uncompensatedBarometricConfig ENUMERATED {true, ...}, + ueSpeedConfig ENUMERATED {true, ...}, + ueOrientationConfig ENUMERATED {true, ...}, + choice-Extensions ProtocolIE-SingleContainer { {SensorNameConfig-ExtIEs} } +} + +SensorNameConfig-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +SerialNumber ::= BIT STRING (SIZE(16)) + +ServedGUAMIList ::= SEQUENCE (SIZE(1..maxnoofServedGUAMIs)) OF ServedGUAMIItem + +ServedGUAMIItem ::= SEQUENCE { + gUAMI GUAMI, + backupAMFName AMFName OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ServedGUAMIItem-ExtIEs} } OPTIONAL, + ... +} + +ServedGUAMIItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-GUAMIType CRITICALITY ignore EXTENSION GUAMIType PRESENCE optional }, + ... +} + +ServiceAreaInformation ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ServiceAreaInformation-Item + +ServiceAreaInformation-Item ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + allowedTACs AllowedTACs OPTIONAL, + notAllowedTACs NotAllowedTACs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ServiceAreaInformation-Item-ExtIEs} } OPTIONAL, + ... +} + +ServiceAreaInformation-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ServiceType ::= ENUMERATED {streaming, mTSI, vR, ...} + +SgNB-UE-X2AP-ID ::= INTEGER (0..4294967295) + +SharedNGU-MulticastTNLInformation ::= SEQUENCE { + iP-MulticastAddress TransportLayerAddress, + iP-SourceAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {SharedNGU-MulticastTNLInformation-ExtIEs} } OPTIONAL, + ... +} + +SharedNGU-MulticastTNLInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SliceOverloadList ::= SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SliceOverloadItem + +SliceOverloadItem ::= SEQUENCE { + s-NSSAI S-NSSAI, + iE-Extensions ProtocolExtensionContainer { {SliceOverloadItem-ExtIEs} } OPTIONAL, + ... +} + +SliceOverloadItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SliceSupportList ::= SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SliceSupportItem + +SliceSupportItem ::= SEQUENCE { + s-NSSAI S-NSSAI, + iE-Extensions ProtocolExtensionContainer { {SliceSupportItem-ExtIEs} } OPTIONAL, + ... +} + +SliceSupportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SliceSupportListQMC ::= SEQUENCE (SIZE(1..maxnoofSNSSAIforQMC)) OF SliceSupportQMC-Item + +SliceSupportQMC-Item ::= SEQUENCE { + s-NSSAI S-NSSAI, + iE-Extensions ProtocolExtensionContainer { {SliceSupportQMC-Item-ExtIEs} } OPTIONAL, + ... +} + +SliceSupportQMC-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SNPN-MobilityInformation ::= SEQUENCE { + serving-NID NID, + iE-Extensions ProtocolExtensionContainer { {SNPN-MobilityInformation-ExtIEs} } OPTIONAL, + ... +} + +SNPN-MobilityInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +S-NSSAI ::= SEQUENCE { + sST SST, + sD SD OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { S-NSSAI-ExtIEs} } OPTIONAL, + ... +} + +S-NSSAI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SONConfigurationTransfer ::= SEQUENCE { + targetRANNodeID-SON TargetRANNodeID-SON, + sourceRANNodeID SourceRANNodeID, + sONInformation SONInformation, + xnTNLConfigurationInfo XnTNLConfigurationInfo OPTIONAL, +-- The above IE shall be present if the SON Information IE contains the SON Information Request IE set to “Xn TNL Configuration Info” + iE-Extensions ProtocolExtensionContainer { {SONConfigurationTransfer-ExtIEs} } OPTIONAL, + ... +} + +SONConfigurationTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SONInformation ::= CHOICE { + sONInformationRequest SONInformationRequest, + sONInformationReply SONInformationReply, + choice-Extensions ProtocolIE-SingleContainer { {SONInformation-ExtIEs} } +} + +SONInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-SONInformationReport CRITICALITY ignore TYPE SONInformationReport PRESENCE mandatory }, + ... +} + +SONInformationReply ::= SEQUENCE { + xnTNLConfigurationInfo XnTNLConfigurationInfo OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {SONInformationReply-ExtIEs} } OPTIONAL, + ... +} + +SONInformationReply-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SONInformationReport::= CHOICE { + failureIndicationInformation FailureIndication, + hOReportInformation HOReport, + choice-Extensions ProtocolIE-SingleContainer { { SONInformationReport-ExtIEs} } +} + +SONInformationReport-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-SuccessfulHandoverReportList CRITICALITY ignore TYPE SuccessfulHandoverReportList PRESENCE mandatory }, + ... +} + +-- -------------------------------------------------------------------- +-- SON Information Report +-- -------------------------------------------------------------------- + +SuccessfulHandoverReportList ::= SEQUENCE (SIZE(1..maxnoofSuccessfulHOReports)) OF SuccessfulHandoverReport-Item + +SuccessfulHandoverReport-Item ::= SEQUENCE { + successfulHOReportContainer OCTET STRING, + iE-Extensions ProtocolExtensionContainer { { SuccessfulHandoverReport-Item-ExtIEs} } OPTIONAL, + ... +} + +SuccessfulHandoverReport-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SONInformationRequest ::= ENUMERATED { + xn-TNL-configuration-info, + ... +} + +SourceNGRANNode-ToTargetNGRANNode-TransparentContainer ::= SEQUENCE { + rRCContainer RRCContainer, + pDUSessionResourceInformationList PDUSessionResourceInformationList OPTIONAL, + e-RABInformationList E-RABInformationList OPTIONAL, + targetCell-ID NGRAN-CGI, + indexToRFSP IndexToRFSP OPTIONAL, + uEHistoryInformation UEHistoryInformation, + iE-Extensions ProtocolExtensionContainer { {SourceNGRANNode-ToTargetNGRANNode-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +SourceNGRANNode-ToTargetNGRANNode-TransparentContainer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore EXTENSION SgNB-UE-X2AP-ID PRESENCE optional }| + { ID id-UEHistoryInformationFromTheUE CRITICALITY ignore EXTENSION UEHistoryInformationFromTheUE PRESENCE optional }| + { ID id-SourceNodeID CRITICALITY ignore EXTENSION SourceNodeID PRESENCE optional }| + { ID id-UEContextReferenceAtSource CRITICALITY ignore EXTENSION RAN-UE-NGAP-ID PRESENCE optional }| + { ID id-MBS-ActiveSessionInformation-SourcetoTargetList CRITICALITY ignore EXTENSION MBS-ActiveSessionInformation-SourcetoTargetList PRESENCE optional }| + { ID id-QMCConfigInfo CRITICALITY ignore EXTENSION QMCConfigInfo PRESENCE optional }| + { ID id-NGAPIESupportInformationRequestList CRITICALITY ignore EXTENSION NGAPIESupportInformationRequestList PRESENCE optional }, + ... +} + +SourceNodeID ::= CHOICE { + sourceengNB-ID GlobalGNB-ID, + choice-Extensions ProtocolIE-SingleContainer { { SourceNodeID-ExtIEs} } +} + +SourceNodeID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +SourceOfUEActivityBehaviourInformation ::= ENUMERATED { + subscription-information, + statistics, + ... +} + +SourceRANNodeID ::= SEQUENCE { + globalRANNodeID GlobalRANNodeID, + selectedTAI TAI, + iE-Extensions ProtocolExtensionContainer { {SourceRANNodeID-ExtIEs} } OPTIONAL, + ... +} + +SourceRANNodeID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +SourceToTarget-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the source RAN node to the target RAN node. +-- The octets of the OCTET STRING are encoded according to the specifications of the target system. + +SourceToTarget-AMFInformationReroute ::= SEQUENCE { + configuredNSSAI ConfiguredNSSAI OPTIONAL, + rejectedNSSAIinPLMN RejectedNSSAIinPLMN OPTIONAL, + rejectedNSSAIinTA RejectedNSSAIinTA OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {SourceToTarget-AMFInformationReroute-ExtIEs} } OPTIONAL, + ... +} + +SourceToTarget-AMFInformationReroute-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- This IE includes information from the source Core node to the target Core node for reroute information provide by NSSF. +-- The octets of the OCTET STRING are encoded according to the specifications of the Core network. + +SRVCCOperationPossible ::= ENUMERATED { + possible, + notPossible, + ... +} + +ConfiguredNSSAI ::= OCTET STRING (SIZE(128)) + +RejectedNSSAIinPLMN ::= OCTET STRING (SIZE(32)) + +RejectedNSSAIinTA ::= OCTET STRING (SIZE(32)) + +SST ::= OCTET STRING (SIZE(1)) + +SupportedTAList ::= SEQUENCE (SIZE(1..maxnoofTACs)) OF SupportedTAItem + +SupportedTAItem ::= SEQUENCE { + tAC TAC, + broadcastPLMNList BroadcastPLMNList, + iE-Extensions ProtocolExtensionContainer { {SupportedTAItem-ExtIEs} } OPTIONAL, + ... +} + +SupportedTAItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-ConfiguredTACIndication CRITICALITY ignore EXTENSION ConfiguredTACIndication PRESENCE optional }| + {ID id-RAT-Information CRITICALITY reject EXTENSION RAT-Information PRESENCE optional }, + ... +} + +SuspendIndicator ::= ENUMERATED { + true, + ... +} + +Suspend-Request-Indication ::= ENUMERATED { + suspend-requested, + ... +} + +Suspend-Response-Indication ::= ENUMERATED { + suspend-indicated, + ... +} + +SurvivalTime ::= INTEGER (0..1920000, ...) + + +-- T + +TAC ::= OCTET STRING (SIZE(3)) + +TACListInNRNTN ::= SEQUENCE (SIZE(1..maxnoofTACsinNTN)) OF TAC + +TAI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + tAC TAC, + iE-Extensions ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL, + ... +} + +TAI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIBroadcastEUTRA ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAIBroadcastEUTRA-Item + +TAIBroadcastEUTRA-Item ::= SEQUENCE { + tAI TAI, + completedCellsInTAI-EUTRA CompletedCellsInTAI-EUTRA, + iE-Extensions ProtocolExtensionContainer { {TAIBroadcastEUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +TAIBroadcastEUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIBroadcastNR ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAIBroadcastNR-Item + +TAIBroadcastNR-Item ::= SEQUENCE { + tAI TAI, + completedCellsInTAI-NR CompletedCellsInTAI-NR, + iE-Extensions ProtocolExtensionContainer { {TAIBroadcastNR-Item-ExtIEs} } OPTIONAL, + ... +} + +TAIBroadcastNR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAICancelledEUTRA ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAICancelledEUTRA-Item + +TAICancelledEUTRA-Item ::= SEQUENCE { + tAI TAI, + cancelledCellsInTAI-EUTRA CancelledCellsInTAI-EUTRA, + iE-Extensions ProtocolExtensionContainer { {TAICancelledEUTRA-Item-ExtIEs} } OPTIONAL, + ... +} + +TAICancelledEUTRA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAICancelledNR ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAICancelledNR-Item + +TAICancelledNR-Item ::= SEQUENCE { + tAI TAI, + cancelledCellsInTAI-NR CancelledCellsInTAI-NR, + iE-Extensions ProtocolExtensionContainer { {TAICancelledNR-Item-ExtIEs} } OPTIONAL, + ... +} + +TAICancelledNR-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListForInactive ::= SEQUENCE (SIZE(1..maxnoofTAIforInactive)) OF TAIListForInactiveItem + +TAIListForInactiveItem ::= SEQUENCE { + tAI TAI, + iE-Extensions ProtocolExtensionContainer { {TAIListForInactiveItem-ExtIEs} } OPTIONAL, + ... +} + +TAIListForInactiveItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListForPaging ::= SEQUENCE (SIZE(1..maxnoofTAIforPaging)) OF TAIListForPagingItem + +TAIListForPagingItem ::= SEQUENCE { + tAI TAI, + iE-Extensions ProtocolExtensionContainer { {TAIListForPagingItem-ExtIEs} } OPTIONAL, + ... +} + +TAIListForPagingItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListForRestart ::= SEQUENCE (SIZE(1..maxnoofTAIforRestart)) OF TAI + +TAIListForWarning ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI + +TAINSAGSupportList ::= SEQUENCE (SIZE(1..maxnoofNSAGs)) OF TAINSAGSupportItem + +TAINSAGSupportItem ::= SEQUENCE { + nSAG-ID NSAG-ID, + nSAGSliceSupportList ExtendedSliceSupportList, + iE-Extensions ProtocolExtensionContainer { {TAINSAGSupportItem-ExtIEs} } OPTIONAL, + ... +} + +TAINSAGSupportItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargeteNB-ID ::= SEQUENCE { + globalENB-ID GlobalNgENB-ID, + selected-EPS-TAI EPS-TAI, + iE-Extensions ProtocolExtensionContainer { {TargeteNB-ID-ExtIEs} } OPTIONAL, + ... +} + +TargeteNB-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetHomeENB-ID ::= SEQUENCE { + pLMNidentity PLMNIdentity, + homeENB-ID BIT STRING (SIZE(28)), + selected-EPS-TAI EPS-TAI, + iE-Extensions ProtocolExtensionContainer { {TargetHomeENB-ID-ExtIEs} } OPTIONAL, + ... +} + +TargetHomeENB-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetID ::= CHOICE { + targetRANNodeID TargetRANNodeID, + targeteNB-ID TargeteNB-ID, + choice-Extensions ProtocolIE-SingleContainer { {TargetID-ExtIEs} } +} + +TargetID-ExtIEs NGAP-PROTOCOL-IES ::= { + {ID id-TargetRNC-ID CRITICALITY reject TYPE TargetRNC-ID PRESENCE mandatory }| + {ID id-TargetHomeENB-ID CRITICALITY reject TYPE TargetHomeENB-ID PRESENCE mandatory }, + ... +} + +TargetNGRANNode-ToSourceNGRANNode-TransparentContainer ::= SEQUENCE { + rRCContainer RRCContainer, + iE-Extensions ProtocolExtensionContainer { {TargetNGRANNode-ToSourceNGRANNode-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +TargetNGRANNode-ToSourceNGRANNode-TransparentContainer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-DAPSResponseInfoList CRITICALITY ignore EXTENSION DAPSResponseInfoList PRESENCE optional }| + { ID id-DirectForwardingPathAvailability CRITICALITY ignore EXTENSION DirectForwardingPathAvailability PRESENCE optional }| + { ID id-MBS-ActiveSessionInformation-TargettoSourceList CRITICALITY ignore EXTENSION MBS-ActiveSessionInformation-TargettoSourceList PRESENCE optional }| + { ID id-NGAPIESupportInformationResponseList CRITICALITY ignore EXTENSION NGAPIESupportInformationResponseList PRESENCE optional }, + ... +} + +TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer ::= SEQUENCE { + cell-CAGInformation Cell-CAGInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-NGAPIESupportInformationResponseList CRITICALITY ignore EXTENSION NGAPIESupportInformationResponseList PRESENCE optional }, + ... +} + +TargetNSSAI ::= SEQUENCE (SIZE(1..maxnoofTargetS-NSSAIs)) OF TargetNSSAI-Item + +TargetNSSAI-Item ::= SEQUENCE { + s-NSSAI S-NSSAI, + iE-Extensions ProtocolExtensionContainer { {TargetNSSAI-Item-ExtIEs} } OPTIONAL, + ... +} + +TargetNSSAI-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetNSSAIInformation ::= SEQUENCE { + targetNSSAI TargetNSSAI, + indexToRFSP IndexToRFSP, + iE-Extensions ProtocolExtensionContainer { {TargetNSSAIInformation-Item-ExtIEs} } OPTIONAL, + ... +} + +TargetNSSAIInformation-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetRANNodeID ::= SEQUENCE { + globalRANNodeID GlobalRANNodeID, + selectedTAI TAI, + iE-Extensions ProtocolExtensionContainer { {TargetRANNodeID-ExtIEs} } OPTIONAL, + ... +} + +TargetRANNodeID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetRANNodeID-RIM ::= SEQUENCE { + globalRANNodeID GlobalRANNodeID, + selectedTAI TAI, + iE-Extensions ProtocolExtensionContainer { {TargetRANNodeID-RIM-ExtIEs} } OPTIONAL, + ... +} + +TargetRANNodeID-RIM-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetRANNodeID-SON ::= SEQUENCE { + globalRANNodeID GlobalRANNodeID, + selectedTAI TAI, + iE-Extensions ProtocolExtensionContainer { {TargetRANNodeID-SON-ExtIEs} } OPTIONAL, + ... +} + +TargetRANNodeID-SON-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + {ID id-NR-CGI CRITICALITY ignore EXTENSION NR-CGI PRESENCE optional }, + ... +} + +TargetRNC-ID ::= SEQUENCE { + lAI LAI, + rNC-ID RNC-ID, + extendedRNC-ID ExtendedRNC-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {TargetRNC-ID-ExtIEs} } OPTIONAL, + ... +} + +TargetRNC-ID-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetToSource-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the target RAN node to the source RAN node. +-- The octets of the OCTET STRING are encoded according to the specifications of the target system. + +TargettoSource-Failure-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the target RAN node to the source RAN node. +-- The octets of the OCTET STRING are encoded according to the specifications of the target system (if applicable). + +TimerApproachForGUAMIRemoval ::= ENUMERATED { + apply-timer, + ... +} + +TimeStamp ::= OCTET STRING (SIZE(4)) + +TimeSyncAssistanceInfo ::= SEQUENCE { + timeDistributionIndication ENUMERATED {enabled, disabled, ...}, + uUTimeSyncErrorBudget INTEGER (1..1000000, ...) OPTIONAL, + -- The above IE shall be present if the Time Distribution Indication IE is set to the value “enabled” + iE-Extensions ProtocolExtensionContainer { {TimeSyncAssistanceInfo-ExtIEs} } OPTIONAL, + ... +} + +TimeSyncAssistanceInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + +TimeUEStayedInCell ::= INTEGER (0..4095) + +TimeUEStayedInCellEnhancedGranularity ::= INTEGER (0..40950) + +TMGI ::= OCTET STRING (SIZE(6)) + +TNAP-ID ::= OCTET STRING + +TNGF-ID ::= CHOICE { + tNGF-ID BIT STRING (SIZE(32, ...)), + choice-Extensions ProtocolIE-SingleContainer { {TNGF-ID-ExtIEs} } +} + +TNGF-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +TNLAddressWeightFactor ::= INTEGER (0..255) + +TNLAssociationList ::= SEQUENCE (SIZE(1..maxnoofTNLAssociations)) OF TNLAssociationItem + +TNLAssociationItem ::= SEQUENCE { + tNLAssociationAddress CPTransportLayerInformation, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {TNLAssociationItem-ExtIEs} } OPTIONAL, + ... +} + +TNLAssociationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TNLAssociationUsage ::= ENUMERATED { + ue, + non-ue, + both, + ... +} + +TooearlyIntersystemHO::= SEQUENCE { + sourcecellID EUTRA-CGI, + failurecellID NGRAN-CGI, + uERLFReportContainer UERLFReportContainer OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { TooearlyIntersystemHO-ExtIEs} } OPTIONAL, + ... +} + +TooearlyIntersystemHO-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TraceActivation ::= SEQUENCE { + nGRANTraceID NGRANTraceID, + interfacesToTrace InterfacesToTrace, +traceDepth TraceDepth, +traceCollectionEntityIPAddress TransportLayerAddress, + iE-Extensions ProtocolExtensionContainer { {TraceActivation-ExtIEs} } OPTIONAL, + ... +} + +TraceActivation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-MDTConfiguration CRITICALITY ignore EXTENSION MDT-Configuration PRESENCE optional }| + { ID id-TraceCollectionEntityURI CRITICALITY ignore EXTENSION URI-address PRESENCE optional }, + ... +} + +TraceDepth ::= ENUMERATED { + minimum, + medium, + maximum, + minimumWithoutVendorSpecificExtension, + mediumWithoutVendorSpecificExtension, + maximumWithoutVendorSpecificExtension, + ... +} + +TrafficLoadReductionIndication ::= INTEGER (1..99) + +TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...)) + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +TAIBasedMDT ::= SEQUENCE { + tAIListforMDT TAIListforMDT, + iE-Extensions ProtocolExtensionContainer { {TAIBasedMDT-ExtIEs} } OPTIONAL, + ... +} + +TAIBasedMDT-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAI + +TAIBasedQMC ::= SEQUENCE { + tAIListforQMC TAIListforQMC, + iE-Extensions ProtocolExtensionContainer { {TAIBasedQMC-ExtIEs} } OPTIONAL, + ... +} + +TAIBasedQMC-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListforQMC ::= SEQUENCE (SIZE(1..maxnoofTAforQMC)) OF TAI + +TABasedQMC ::= SEQUENCE { + tAListforQMC TAListforQMC, + iE-Extensions ProtocolExtensionContainer { {TABasedQMC-ExtIEs} } OPTIONAL, + ... +} + +TABasedQMC-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAListforQMC ::= SEQUENCE (SIZE(1..maxnoofTAforQMC)) OF TAC + + +TABasedMDT ::= SEQUENCE { + tAListforMDT TAListforMDT, + iE-Extensions ProtocolExtensionContainer { {TABasedMDT-ExtIEs} } OPTIONAL, + ... +} + +TABasedMDT-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC + +Threshold-RSRP ::= INTEGER(0..127) + +Threshold-RSRQ ::= INTEGER(0..127) + +Threshold-SINR ::= INTEGER(0..127) + +TimeToTrigger ::= ENUMERATED {ms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256, ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560, ms5120} + + +TWAP-ID ::= OCTET STRING + +TWIF-ID ::= CHOICE { + tWIF-ID BIT STRING (SIZE(32, ...)), + choice-Extensions ProtocolIE-SingleContainer { {TWIF-ID-ExtIEs} } +} + +TWIF-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +TSCAssistanceInformation ::= SEQUENCE { + periodicity Periodicity, + burstArrivalTime BurstArrivalTime OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {TSCAssistanceInformation-ExtIEs} } OPTIONAL, + ... +} + +TSCAssistanceInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SurvivalTime CRITICALITY ignore EXTENSION SurvivalTime PRESENCE optional}, + ... +} + +TSCTrafficCharacteristics ::= SEQUENCE { + tSCAssistanceInformationDL TSCAssistanceInformation OPTIONAL, + tSCAssistanceInformationUL TSCAssistanceInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {TSCTrafficCharacteristics-ExtIEs} } OPTIONAL, + ... +} + +TSCTrafficCharacteristics-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- U + +UEAggregateMaximumBitRate ::= SEQUENCE { + uEAggregateMaximumBitRateDL BitRate, + uEAggregateMaximumBitRateUL BitRate, + iE-Extensions ProtocolExtensionContainer { {UEAggregateMaximumBitRate-ExtIEs} } OPTIONAL, + ... +} + +UEAggregateMaximumBitRate-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UEAppLayerMeasInfoList ::= SEQUENCE (SIZE(1..maxnoofUEAppLayerMeas)) OF UEAppLayerMeasInfoItem + +UEAppLayerMeasInfoItem ::= SEQUENCE { + uEAppLayerMeasConfigInfo UEAppLayerMeasConfigInfo, + iE-Extensions ProtocolExtensionContainer { { UEAppLayerMeasInfoItem-ExtIEs} } OPTIONAL, + ... +} + +UEAppLayerMeasInfoItem-ExtIEs NGAP-PROTOCOL-EXTENSION::= { + ... +} + +UEAppLayerMeasConfigInfo ::= SEQUENCE { + qoEReference QoEReference, + serviceType ServiceType, + areaScopeOfQMC AreaScopeOfQMC OPTIONAL, + measCollEntityIPAddress TransportLayerAddress, + qoEMeasurementStatus ENUMERATED {ongoing,...} OPTIONAL, + containerForAppLayerMeasConfig OCTET STRING (SIZE(1..8000)) OPTIONAL, + measConfigAppLayerID INTEGER (0..15, ...) OPTIONAL, + sliceSupportListQMC SliceSupportListQMC OPTIONAL, + mDT-AlignmentInfo MDT-AlignmentInfo OPTIONAL, + availableRANVisibleQoEMetrics AvailableRANVisibleQoEMetrics OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UEAppLayerMeasConfigInfo-ExtIEs} } OPTIONAL, + ... +} + +UEAppLayerMeasConfigInfo-ExtIEs NGAP-PROTOCOL-EXTENSION::= { + ... +} + +UE-associatedLogicalNG-connectionList ::= SEQUENCE (SIZE(1..maxnoofNGConnectionsToReset)) OF UE-associatedLogicalNG-connectionItem + +UE-associatedLogicalNG-connectionItem ::= SEQUENCE { + aMF-UE-NGAP-ID AMF-UE-NGAP-ID OPTIONAL, + rAN-UE-NGAP-ID RAN-UE-NGAP-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UE-associatedLogicalNG-connectionItem-ExtIEs} } OPTIONAL, + ... +} + +UE-associatedLogicalNG-connectionItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UECapabilityInfoRequest ::= ENUMERATED { + requested, + ... +} + +UEContextRequest ::= ENUMERATED {requested, ...} + + +UEContextResumeRequestTransfer ::= SEQUENCE { + qosFlowFailedToResumeList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UEContextResumeRequestTransfer-ExtIEs} } OPTIONAL, + ... +} + +UEContextResumeRequestTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UEContextResumeResponseTransfer ::= SEQUENCE { + qosFlowFailedToResumeList QosFlowListWithCause OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UEContextResumeResponseTransfer-ExtIEs} } OPTIONAL, + ... +} + +UEContextResumeResponseTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UEContextSuspendRequestTransfer ::= SEQUENCE { + suspendIndicator SuspendIndicator OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UEContextSuspendRequestTransfer-ExtIEs} } OPTIONAL, + ... +} + +UEContextSuspendRequestTransfer-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UE-DifferentiationInfo ::= SEQUENCE { + periodicCommunicationIndicator ENUMERATED {periodically, ondemand, ... } OPTIONAL, + periodicTime INTEGER (1..3600, ...) OPTIONAL, + scheduledCommunicationTime ScheduledCommunicationTime OPTIONAL, + stationaryIndication ENUMERATED {stationary, mobile, ...} OPTIONAL, + trafficProfile ENUMERATED {single-packet, dual-packets, multiple-packets, ...} OPTIONAL, + batteryIndication ENUMERATED {battery-powered, battery-powered-not-rechargeable-or-replaceable, not-battery-powered, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UE-DifferentiationInfo-ExtIEs} } OPTIONAL, + ... +} + +UE-DifferentiationInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UEHistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCellsinUEHistoryInfo)) OF LastVisitedCellItem + +UEHistoryInformationFromTheUE ::= CHOICE { + nR NRMobilityHistoryReport, + choice-Extensions ProtocolIE-SingleContainer { {UEHistoryInformationFromTheUE-ExtIEs} } +} + +UEHistoryInformationFromTheUE-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +UEIdentityIndexValue ::= CHOICE { + indexLength10 BIT STRING (SIZE(10)), + choice-Extensions ProtocolIE-SingleContainer { {UEIdentityIndexValue-ExtIEs} } +} + +UEIdentityIndexValue-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +UE-NGAP-IDs ::= CHOICE { + uE-NGAP-ID-pair UE-NGAP-ID-pair, + aMF-UE-NGAP-ID AMF-UE-NGAP-ID, + choice-Extensions ProtocolIE-SingleContainer { {UE-NGAP-IDs-ExtIEs} } +} + +UE-NGAP-IDs-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +UE-NGAP-ID-pair ::= SEQUENCE{ + aMF-UE-NGAP-ID AMF-UE-NGAP-ID, + rAN-UE-NGAP-ID RAN-UE-NGAP-ID, + iE-Extensions ProtocolExtensionContainer { {UE-NGAP-ID-pair-ExtIEs} } OPTIONAL, + ... +} + +UE-NGAP-ID-pair-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UEPagingIdentity ::= CHOICE { + fiveG-S-TMSI FiveG-S-TMSI, + choice-Extensions ProtocolIE-SingleContainer { {UEPagingIdentity-ExtIEs} } + } + +UEPagingIdentity-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +UEPresence ::= ENUMERATED {in, out, unknown, ...} + +UEPresenceInAreaOfInterestList ::= SEQUENCE (SIZE(1..maxnoofAoI)) OF UEPresenceInAreaOfInterestItem + +UEPresenceInAreaOfInterestItem ::= SEQUENCE { + locationReportingReferenceID LocationReportingReferenceID, + uEPresence UEPresence, + iE-Extensions ProtocolExtensionContainer { {UEPresenceInAreaOfInterestItem-ExtIEs} } OPTIONAL, + ... +} + +UEPresenceInAreaOfInterestItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UERadioCapability ::= OCTET STRING + +UERadioCapabilityForPaging ::= SEQUENCE { + uERadioCapabilityForPagingOfNR UERadioCapabilityForPagingOfNR OPTIONAL, + uERadioCapabilityForPagingOfEUTRA UERadioCapabilityForPagingOfEUTRA OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UERadioCapabilityForPaging-ExtIEs} } OPTIONAL, + ... +} + +UERadioCapabilityForPaging-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-UERadioCapabilityForPagingOfNB-IoT CRITICALITY ignore EXTENSION UERadioCapabilityForPagingOfNB-IoT PRESENCE optional }, + ... +} + +UERadioCapabilityForPagingOfNB-IoT ::= OCTET STRING + +UERadioCapabilityForPagingOfNR ::= OCTET STRING + +UERadioCapabilityForPagingOfEUTRA ::= OCTET STRING + +UERadioCapabilityID ::= OCTET STRING + +UERetentionInformation ::= ENUMERATED { + ues-retained, + ... +} + +UERLFReportContainer ::= CHOICE { + nR NRUERLFReportContainer, + lTE LTEUERLFReportContainer, + choice-Extensions ProtocolIE-SingleContainer { {UERLFReportContainer-ExtIEs} } +} + +UERLFReportContainer-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +UESecurityCapabilities ::= SEQUENCE { + nRencryptionAlgorithms NRencryptionAlgorithms, + nRintegrityProtectionAlgorithms NRintegrityProtectionAlgorithms, + eUTRAencryptionAlgorithms EUTRAencryptionAlgorithms, + eUTRAintegrityProtectionAlgorithms EUTRAintegrityProtectionAlgorithms, + iE-Extensions ProtocolExtensionContainer { {UESecurityCapabilities-ExtIEs} } OPTIONAL, + ... +} + +UESecurityCapabilities-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UESliceMaximumBitRateList ::= SEQUENCE (SIZE(1..maxnoofAllowedS-NSSAIs)) OF UESliceMaximumBitRateItem + +UESliceMaximumBitRateItem ::= SEQUENCE { + s-NSSAI S-NSSAI, + uESliceMaximumBitRateDL BitRate, + uESliceMaximumBitRateUL BitRate, + iE-Extensions ProtocolExtensionContainer { { UESliceMaximumBitRateItem-ExtIEs} } OPTIONAL, + ... +} + +UESliceMaximumBitRateItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + + +UE-UP-CIoT-Support ::= ENUMERATED {supported, ...} + +UL-CP-SecurityInformation ::= SEQUENCE { + ul-NAS-MAC UL-NAS-MAC, + ul-NAS-Count UL-NAS-Count, + iE-Extensions ProtocolExtensionContainer { { UL-CP-SecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +UL-CP-SecurityInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +UL-NAS-MAC ::= BIT STRING (SIZE (16)) + +UL-NAS-Count ::= BIT STRING (SIZE (5)) + +UL-NGU-UP-TNLModifyList ::= SEQUENCE (SIZE(1..maxnoofMultiConnectivity)) OF UL-NGU-UP-TNLModifyItem + +UL-NGU-UP-TNLModifyItem ::= SEQUENCE { + uL-NGU-UP-TNLInformation UPTransportLayerInformation, + dL-NGU-UP-TNLInformation UPTransportLayerInformation, + iE-Extensions ProtocolExtensionContainer { {UL-NGU-UP-TNLModifyItem-ExtIEs} } OPTIONAL, + ... +} + +UL-NGU-UP-TNLModifyItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-RedundantUL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }| + { ID id-RedundantDL-NGU-UP-TNLInformation CRITICALITY ignore EXTENSION UPTransportLayerInformation PRESENCE optional }, + ... +} + +UnavailableGUAMIList ::= SEQUENCE (SIZE(1..maxnoofServedGUAMIs)) OF UnavailableGUAMIItem + +UnavailableGUAMIItem ::= SEQUENCE { + gUAMI GUAMI, + timerApproachForGUAMIRemoval TimerApproachForGUAMIRemoval OPTIONAL, + backupAMFName AMFName OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UnavailableGUAMIItem-ExtIEs} } OPTIONAL, + ... +} + +UnavailableGUAMIItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +ULForwarding ::= ENUMERATED { + ul-forwarding-proposed, + ... +} + +UpdateFeedback ::= BIT STRING (SIZE(8, ...)) + +UPTransportLayerInformation ::= CHOICE { + gTPTunnel GTPTunnel, + choice-Extensions ProtocolIE-SingleContainer { {UPTransportLayerInformation-ExtIEs} } +} + +UPTransportLayerInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +UPTransportLayerInformationList ::= SEQUENCE (SIZE(1..maxnoofMultiConnectivityMinusOne)) OF UPTransportLayerInformationItem + +UPTransportLayerInformationItem ::= SEQUENCE { + nGU-UP-TNLInformation UPTransportLayerInformation, + iE-Extensions ProtocolExtensionContainer { {UPTransportLayerInformationItem-ExtIEs} } OPTIONAL, + ... +} + +UPTransportLayerInformationItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-CommonNetworkInstance CRITICALITY ignore EXTENSION CommonNetworkInstance PRESENCE optional }, + ... +} + + +UPTransportLayerInformationPairList ::= SEQUENCE (SIZE(1..maxnoofMultiConnectivityMinusOne)) OF UPTransportLayerInformationPairItem + +UPTransportLayerInformationPairItem ::= SEQUENCE { + uL-NGU-UP-TNLInformation UPTransportLayerInformation, + dL-NGU-UP-TNLInformation UPTransportLayerInformation, + iE-Extensions ProtocolExtensionContainer { {UPTransportLayerInformationPairItem-ExtIEs} } OPTIONAL, + ... +} + +UPTransportLayerInformationPairItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +URI-address ::= VisibleString + +UserLocationInformation ::= CHOICE { + userLocationInformationEUTRA UserLocationInformationEUTRA, + userLocationInformationNR UserLocationInformationNR, + userLocationInformationN3IWF UserLocationInformationN3IWF, + choice-Extensions ProtocolIE-SingleContainer { {UserLocationInformation-ExtIEs} } +} + +UserLocationInformation-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-UserLocationInformationTNGF CRITICALITY ignore TYPE UserLocationInformationTNGF PRESENCE mandatory }| + { ID id-UserLocationInformationTWIF CRITICALITY ignore TYPE UserLocationInformationTWIF PRESENCE mandatory }| + { ID id-UserLocationInformationW-AGF CRITICALITY ignore TYPE UserLocationInformationW-AGF PRESENCE mandatory }, + ... +} + +UserLocationInformationEUTRA ::= SEQUENCE { + eUTRA-CGI EUTRA-CGI, + tAI TAI, + timeStamp TimeStamp OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UserLocationInformationEUTRA-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformationEUTRA-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PSCellInformation CRITICALITY ignore EXTENSION NGRAN-CGI PRESENCE optional}, + ... +} + +UserLocationInformationN3IWF ::= SEQUENCE { + iPAddress TransportLayerAddress, + portNumber PortNumber, + iE-Extensions ProtocolExtensionContainer { {UserLocationInformationN3IWF-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformationN3IWF-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-TAI CRITICALITY ignore EXTENSION TAI PRESENCE optional }, + ... +} + +UserLocationInformationTNGF ::= SEQUENCE { + tNAP-ID TNAP-ID, + iPAddress TransportLayerAddress, + portNumber PortNumber OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UserLocationInformationTNGF-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformationTNGF-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-TAI CRITICALITY ignore EXTENSION TAI PRESENCE optional }, + ... +} + +UserLocationInformationTWIF ::= SEQUENCE { + tWAP-ID TWAP-ID, + iPAddress TransportLayerAddress, + portNumber PortNumber OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UserLocationInformationTWIF-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformationTWIF-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-TAI CRITICALITY ignore EXTENSION TAI PRESENCE optional }, + ... +} + +UserLocationInformationW-AGF ::= CHOICE { + globalLine-ID GlobalLine-ID, + hFCNode-ID HFCNode-ID, + choice-Extensions ProtocolIE-SingleContainer { { UserLocationInformationW-AGF-ExtIEs} } +} + +UserLocationInformationW-AGF-ExtIEs NGAP-PROTOCOL-IES ::= { + { ID id-GlobalCable-ID CRITICALITY ignore TYPE GlobalCable-ID PRESENCE mandatory }| + { ID id-HFCNode-ID-new CRITICALITY ignore TYPE HFCNode-ID-new PRESENCE mandatory }| + { ID id-GlobalCable-ID-new CRITICALITY ignore TYPE GlobalCable-ID-new PRESENCE mandatory }, + ... +} + +UserLocationInformationNR ::= SEQUENCE { + nR-CGI NR-CGI, + tAI TAI, + timeStamp TimeStamp OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {UserLocationInformationNR-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformationNR-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-PSCellInformation CRITICALITY ignore EXTENSION NGRAN-CGI PRESENCE optional }| + { ID id-NID CRITICALITY reject EXTENSION NID PRESENCE optional }| + { ID id-NRNTNTAIInformation CRITICALITY ignore EXTENSION NRNTNTAIInformation PRESENCE optional }, + ... +} + +UserPlaneSecurityInformation ::= SEQUENCE { + securityResult SecurityResult, + securityIndication SecurityIndication, + iE-Extensions ProtocolExtensionContainer { {UserPlaneSecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +UserPlaneSecurityInformation-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- V + +VolumeTimedReportList ::= SEQUENCE (SIZE(1..maxnoofTimePeriods)) OF VolumeTimedReport-Item + +VolumeTimedReport-Item ::= SEQUENCE { + startTimeStamp OCTET STRING (SIZE(4)), + endTimeStamp OCTET STRING (SIZE(4)), + usageCountUL INTEGER (0..18446744073709551615), + usageCountDL INTEGER (0..18446744073709551615), + iE-Extensions ProtocolExtensionContainer { {VolumeTimedReport-Item-ExtIEs} } OPTIONAL, + ... +} + +VolumeTimedReport-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- W + +W-AGF-ID ::= CHOICE { + w-AGF-ID BIT STRING (SIZE(16, ...)), + choice-Extensions ProtocolIE-SingleContainer { {W-AGF-ID-ExtIEs} } +} + +W-AGF-ID-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +WarningAreaCoordinates ::= OCTET STRING (SIZE(1..1024)) + +WarningAreaList ::= CHOICE { + eUTRA-CGIListForWarning EUTRA-CGIListForWarning, + nR-CGIListForWarning NR-CGIListForWarning, + tAIListForWarning TAIListForWarning, + emergencyAreaIDList EmergencyAreaIDList, + choice-Extensions ProtocolIE-SingleContainer { {WarningAreaList-ExtIEs} } +} + +WarningAreaList-ExtIEs NGAP-PROTOCOL-IES ::= { + ... +} + +WarningMessageContents ::= OCTET STRING (SIZE(1..9600)) + +WarningSecurityInfo ::= OCTET STRING (SIZE(50)) + +WarningType ::= OCTET STRING (SIZE(2)) + +WLANMeasurementConfiguration ::= SEQUENCE { + wlanMeasConfig WLANMeasConfig, + wlanMeasConfigNameList WLANMeasConfigNameList OPTIONAL, + wlan-rssi ENUMERATED {true, ...} OPTIONAL, + wlan-rtt ENUMERATED {true, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { WLANMeasurementConfiguration-ExtIEs } } OPTIONAL, + ... +} + +WLANMeasurementConfiguration-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +WLANMeasConfigNameList ::= SEQUENCE (SIZE(1..maxnoofWLANName)) OF WLANMeasConfigNameItem + +WLANMeasConfigNameItem ::= SEQUENCE { + wLANName WLANName, + iE-Extensions ProtocolExtensionContainer { { WLANMeasConfigNameItem-ExtIEs } } OPTIONAL, + ... +} + +WLANMeasConfigNameItem-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +WLANMeasConfig::= ENUMERATED {setup,...} + +WLANName ::= OCTET STRING (SIZE (1..32)) + +WUS-Assistance-Information ::= SEQUENCE { + pagingProbabilityInformation PagingProbabilityInformation, + iE-Extensions ProtocolExtensionContainer { { WUS-Assistance-Information-ExtIEs } } OPTIONAL, + ... +} + +WUS-Assistance-Information-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- X + +XnExtTLAs ::= SEQUENCE (SIZE(1..maxnoofXnExtTLAs)) OF XnExtTLA-Item + +XnExtTLA-Item ::= SEQUENCE { + iPsecTLA TransportLayerAddress OPTIONAL, + gTP-TLAs XnGTP-TLAs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {XnExtTLA-Item-ExtIEs} } OPTIONAL, + ... +} + +XnExtTLA-Item-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + { ID id-SCTP-TLAs CRITICALITY ignore EXTENSION SCTP-TLAs PRESENCE optional }, + ... +} + +XnGTP-TLAs ::= SEQUENCE (SIZE(1..maxnoofXnGTP-TLAs)) OF TransportLayerAddress + +XnTLAs ::= SEQUENCE (SIZE(1..maxnoofXnTLAs)) OF TransportLayerAddress + +XnTNLConfigurationInfo ::= SEQUENCE { + xnTransportLayerAddresses XnTLAs, + xnExtendedTransportLayerAddresses XnExtTLAs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {XnTNLConfigurationInfo-ExtIEs} } OPTIONAL, + ... +} + +XnTNLConfigurationInfo-ExtIEs NGAP-PROTOCOL-EXTENSION ::= { + ... +} + +-- Y +-- Z + +END diff --git a/ttcn/LibNGAP/lib/asn1/NGAP_PDU_Contents.asn b/ttcn/LibNGAP/lib/asn1/NGAP_PDU_Contents.asn new file mode 100644 index 0000000000000000000000000000000000000000..453c92393b9463b5fb3734120b0878e3f67de594 --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/NGAP_PDU_Contents.asn @@ -0,0 +1,3388 @@ +-- 3GPP TS 38.413 V17.5.0 (2023-06) +-- 9.4.4 PDU Definitions +-- ************************************************************** +-- +-- PDU definitions for NGAP. +-- +-- ************************************************************** + +NGAP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-Access (22) modules (3) ngap (1) version1 (1) ngap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + AllowedNSSAI, + AMFName, + AMFSetID, + AMF-TNLAssociationSetupList, + AMF-TNLAssociationToAddList, + AMF-TNLAssociationToRemoveList, + AMF-TNLAssociationToUpdateList, + AMF-UE-NGAP-ID, + AssistanceDataForPaging, + AuthenticatedIndication, + BroadcastCancelledAreaList, + BroadcastCompletedAreaList, + CancelAllWarningMessages, + Cause, + CellIDListForRestart, + CEmodeBrestricted, + CEmodeBSupport-Indicator, + CNAssistedRANTuning, + ConcurrentWarningMessageInd, + CoreNetworkAssistanceInformationForInactive, + CPTransportLayerInformation, + CriticalityDiagnostics, + DataCodingScheme, + DL-CP-SecurityInformation, + DirectForwardingPathAvailability, + EarlyStatusTransfer-TransparentContainer, + EDT-Session, + EmergencyAreaIDListForRestart, + EmergencyFallbackIndicator, + EN-DCSONConfigurationTransfer, + EndIndication, + Enhanced-CoverageRestriction, + EUTRA-CGI, + EUTRA-PagingeDRXInformation, + Extended-AMFName, + Extended-ConnectedTime, + Extended-RANNodeName, + FiveG-ProSeAuthorized, + FiveG-ProSePC5QoSParameters, + FiveG-S-TMSI, + GlobalRANNodeID, + GUAMI, + HandoverFlag, + HandoverType, + IAB-Authorized, + IAB-Supported, + IABNodeIndication, + IMSVoiceSupportIndicator, + IndexToRFSP, + InfoOnRecommendedCellsAndRANNodesForPaging, + IntersystemSONConfigurationTransfer, + LAI, + LTEM-Indication, + LocationReportingRequestType, + LTEUESidelinkAggregateMaximumBitrate, + LTEV2XServicesAuthorized, + MaskedIMEISV, + MBS-AreaSessionID, + MBS-ServiceArea, + MBS-SessionID, + MBS-DistributionReleaseRequestTransfer, + MBS-DistributionSetupRequestTransfer, + MBS-DistributionSetupResponseTransfer, + MBS-DistributionSetupUnsuccessfulTransfer, + MBSSessionReleaseResponseTransfer, + MBSSessionSetupOrModFailureTransfer, + MBSSessionSetupOrModRequestTransfer, + MBSSessionSetupOrModResponseTransfer, + MessageIdentifier, + MDTPLMNList, + MDTPLMNModificationList, + MobilityRestrictionList, + MulticastSessionActivationRequestTransfer, + MulticastSessionDeactivationRequestTransfer, + MulticastSessionUpdateRequestTransfer, + MulticastGroupPagingAreaList, + NAS-PDU, + NASSecurityParametersFromNGRAN, + NB-IoT-DefaultPagingDRX, + NB-IoT-PagingDRX, + NB-IoT-Paging-eDRXInfo, + NB-IoT-UEPriority, + NewSecurityContextInd, + NGRAN-CGI, + NGRAN-TNLAssociationToRemoveList, + NGRANTraceID, + NotifySourceNGRANNode, + NPN-AccessInformation, + NR-CGI, + NR-PagingeDRXInformation, + NRPPa-PDU, + NumberOfBroadcastsRequested, + NRUESidelinkAggregateMaximumBitrate, + NRV2XServicesAuthorized, + OverloadResponse, + OverloadStartNSSAIList, + PagingAssisDataforCEcapabUE, + PagingCause, + PagingDRX, + PagingOrigin, + PagingPriority, + PDUSessionAggregateMaximumBitRate, + PDUSessionResourceAdmittedList, + PDUSessionResourceFailedToModifyListModCfm, + PDUSessionResourceFailedToModifyListModRes, + PDUSessionResourceFailedToResumeListRESReq, + PDUSessionResourceFailedToResumeListRESRes, + PDUSessionResourceFailedToSetupListCxtFail, + PDUSessionResourceFailedToSetupListCxtRes, + PDUSessionResourceFailedToSetupListHOAck, + PDUSessionResourceFailedToSetupListPSReq, + PDUSessionResourceFailedToSetupListSURes, + PDUSessionResourceHandoverList, + PDUSessionResourceListCxtRelCpl, + PDUSessionResourceListCxtRelReq, + PDUSessionResourceListHORqd, + PDUSessionResourceModifyListModCfm, + PDUSessionResourceModifyListModInd, + PDUSessionResourceModifyListModReq, + PDUSessionResourceModifyListModRes, + PDUSessionResourceNotifyList, + PDUSessionResourceReleasedListNot, + PDUSessionResourceReleasedListPSAck, + PDUSessionResourceReleasedListPSFail, + PDUSessionResourceReleasedListRelRes, + PDUSessionResourceResumeListRESReq, + PDUSessionResourceResumeListRESRes, + PDUSessionResourceSecondaryRATUsageList, + PDUSessionResourceSetupListCxtReq, + PDUSessionResourceSetupListCxtRes, + PDUSessionResourceSetupListHOReq, + PDUSessionResourceSetupListSUReq, + PDUSessionResourceSetupListSURes, + PDUSessionResourceSuspendListSUSReq, + PDUSessionResourceSwitchedList, + PDUSessionResourceToBeSwitchedDLList, + PDUSessionResourceToReleaseListHOCmd, + PDUSessionResourceToReleaseListRelCmd, + PEIPSassistanceInformation, + PLMNIdentity, + PLMNSupportList, + PrivacyIndicator, + PWSFailedCellIDList, + PC5QoSParameters, + QMCConfigInfo, + QMCDeactivation, + RANNodeName, + RANPagingPriority, + RANStatusTransfer-TransparentContainer, + RAN-UE-NGAP-ID, + RedCapIndication, + RedirectionVoiceFallback, + RelativeAMFCapacity, + RepetitionPeriod, + ResetType, + RGLevelWirelineAccessCharacteristics, + RoutingID, + RRCEstablishmentCause, + RRCInactiveTransitionReportRequest, + RRCState, + SecurityContext, + SecurityKey, + SerialNumber, + ServedGUAMIList, + SliceSupportList, + S-NSSAI, + SONConfigurationTransfer, + SourceToTarget-TransparentContainer, + SourceToTarget-AMFInformationReroute, + SRVCCOperationPossible, + SupportedTAList, + Suspend-Request-Indication, + Suspend-Response-Indication, + TAI, + TAIListForPaging, + TAIListForRestart, + TargetID, + TargetNSSAIInformation, + TargetToSource-TransparentContainer, + TargettoSource-Failure-TransparentContainer, + TimeSyncAssistanceInfo, + TimeToWait, + TNLAssociationList, + TraceActivation, + TrafficLoadReductionIndication, + TransportLayerAddress, + UEAggregateMaximumBitRate, + UE-associatedLogicalNG-connectionList, + UECapabilityInfoRequest, + UEContextRequest, + UE-DifferentiationInfo, + UE-NGAP-IDs, + UEPagingIdentity, + UEPresenceInAreaOfInterestList, + UERadioCapability, + UERadioCapabilityForPaging, + UERadioCapabilityID, + UERetentionInformation, + UESecurityCapabilities, + UESliceMaximumBitRateList, + UE-UP-CIoT-Support, + UL-CP-SecurityInformation, + UnavailableGUAMIList, + URI-address, + UserLocationInformation, + WarningAreaCoordinates, + WarningAreaList, + WarningMessageContents, + WarningSecurityInfo, + WarningType, + WUS-Assistance-Information, + RIMInformationTransfer + +FROM NGAP-IEs + + PrivateIE-Container{}, + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-ContainerPair{}, + ProtocolIE-SingleContainer{}, + NGAP-PRIVATE-IES, + NGAP-PROTOCOL-EXTENSION, + NGAP-PROTOCOL-IES, + NGAP-PROTOCOL-IES-PAIR +FROM NGAP-Containers + + id-AllowedNSSAI, + id-AMFName, + id-AMFOverloadResponse, + id-AMFSetID, + id-AMF-TNLAssociationFailedToSetupList, + id-AMF-TNLAssociationSetupList, + id-AMF-TNLAssociationToAddList, + id-AMF-TNLAssociationToRemoveList, + id-AMF-TNLAssociationToUpdateList, + id-AMFTrafficLoadReductionIndication, + id-AMF-UE-NGAP-ID, + id-AssistanceDataForPaging, + id-AuthenticatedIndication, + id-BroadcastCancelledAreaList, + id-BroadcastCompletedAreaList, + id-CancelAllWarningMessages, + id-Cause, + id-CellIDListForRestart, + id-CEmodeBrestricted, + id-CEmodeBSupport-Indicator, + id-CNAssistedRANTuning, + id-ConcurrentWarningMessageInd, + id-CoreNetworkAssistanceInformationForInactive, + id-CriticalityDiagnostics, + id-DataCodingScheme, + id-DefaultPagingDRX, + id-DirectForwardingPathAvailability, + id-DL-CP-SecurityInformation, + id-EarlyStatusTransfer-TransparentContainer, + id-EDT-Session, + id-EmergencyAreaIDListForRestart, + id-EmergencyFallbackIndicator, + id-ENDC-SONConfigurationTransferDL, + id-ENDC-SONConfigurationTransferUL, + id-EndIndication, + id-Enhanced-CoverageRestriction, + id-EUTRA-CGI, + id-EUTRA-PagingeDRXInformation, + id-Extended-AMFName, + id-Extended-ConnectedTime, + id-Extended-RANNodeName, + id-FiveG-ProSeAuthorized, + id-FiveG-ProSeUEPC5AggregateMaximumBitRate, + id-FiveG-ProSePC5QoSParameters, + id-FiveG-S-TMSI, + id-GlobalRANNodeID, + id-GUAMI, + id-HandoverFlag, + id-HandoverType, + id-IAB-Authorized, + id-IAB-Supported, + id-IABNodeIndication, + id-IMSVoiceSupportIndicator, + id-IndexToRFSP, + id-InfoOnRecommendedCellsAndRANNodesForPaging, + id-IntersystemSONConfigurationTransferDL, + id-IntersystemSONConfigurationTransferUL, + id-LocationReportingRequestType, + id-LTEM-Indication, + id-LTEV2XServicesAuthorized, + id-LTEUESidelinkAggregateMaximumBitrate, + id-ManagementBasedMDTPLMNList, + id-ManagementBasedMDTPLMNModificationList, + id-MaskedIMEISV, + id-MBS-AreaSessionID, + id-MBS-ServiceArea, + id-MBS-SessionID, + id-MBS-DistributionReleaseRequestTransfer, + id-MBS-DistributionSetupRequestTransfer, + id-MBS-DistributionSetupResponseTransfer, + id-MBS-DistributionSetupUnsuccessfulTransfer, + id-MBSSessionModificationFailureTransfer, + id-MBSSessionModificationRequestTransfer, + id-MBSSessionModificationResponseTransfer, + id-MBSSessionReleaseResponseTransfer, + id-MBSSessionSetupFailureTransfer, + id-MBSSessionSetupRequestTransfer, + id-MBSSessionSetupResponseTransfer, + id-MessageIdentifier, + id-MobilityRestrictionList, + id-MulticastSessionActivationRequestTransfer, + id-MulticastSessionDeactivationRequestTransfer, + id-MulticastSessionUpdateRequestTransfer, + id-MulticastGroupPagingAreaList, + id-NAS-PDU, + id-NASC, + id-NASSecurityParametersFromNGRAN, + id-NB-IoT-DefaultPagingDRX, + id-NB-IoT-PagingDRX, + id-NB-IoT-Paging-eDRXInfo, + id-NB-IoT-UEPriority, + id-NewAMF-UE-NGAP-ID, + id-NewGUAMI, + id-NewSecurityContextInd, + id-NGAP-Message, + id-NGRAN-CGI, + id-NGRAN-TNLAssociationToRemoveList, + id-NGRANTraceID, + id-NotifySourceNGRANNode, + id-NPN-AccessInformation, + id-NR-PagingeDRXInformation, + id-NRPPa-PDU, + id-NRV2XServicesAuthorized, + id-NRUESidelinkAggregateMaximumBitrate, + id-NumberOfBroadcastsRequested, + id-OldAMF, + id-OverloadStartNSSAIList, + id-PagingAssisDataforCEcapabUE, + id-PagingCause, + id-PagingDRX, + id-PagingOrigin, + id-PagingPriority, + id-PDUSessionResourceAdmittedList, + id-PDUSessionResourceFailedToModifyListModCfm, + id-PDUSessionResourceFailedToModifyListModRes, + id-PDUSessionResourceFailedToResumeListRESReq, + id-PDUSessionResourceFailedToResumeListRESRes, + id-PDUSessionResourceFailedToSetupListCxtFail, + id-PDUSessionResourceFailedToSetupListCxtRes, + id-PDUSessionResourceFailedToSetupListHOAck, + id-PDUSessionResourceFailedToSetupListPSReq, + id-PDUSessionResourceFailedToSetupListSURes, + id-PDUSessionResourceHandoverList, + id-PDUSessionResourceListCxtRelCpl, + id-PDUSessionResourceListCxtRelReq, + id-PDUSessionResourceListHORqd, + id-PDUSessionResourceModifyListModCfm, + id-PDUSessionResourceModifyListModInd, + id-PDUSessionResourceModifyListModReq, + id-PDUSessionResourceModifyListModRes, + id-PDUSessionResourceNotifyList, + id-PDUSessionResourceReleasedListNot, + id-PDUSessionResourceReleasedListPSAck, + id-PDUSessionResourceReleasedListPSFail, + id-PDUSessionResourceReleasedListRelRes, + id-PDUSessionResourceResumeListRESReq, + id-PDUSessionResourceResumeListRESRes, + id-PDUSessionResourceSecondaryRATUsageList, + id-PDUSessionResourceSetupListCxtReq, + id-PDUSessionResourceSetupListCxtRes, + id-PDUSessionResourceSetupListHOReq, + id-PDUSessionResourceSetupListSUReq, + id-PDUSessionResourceSetupListSURes, + id-PDUSessionResourceSuspendListSUSReq, + id-PDUSessionResourceSwitchedList, + id-PDUSessionResourceToBeSwitchedDLList, + id-PDUSessionResourceToReleaseListHOCmd, + id-PDUSessionResourceToReleaseListRelCmd, + id-PEIPSassistanceInformation, + id-PLMNSupportList, + id-PrivacyIndicator, + id-PWSFailedCellIDList, + id-PC5QoSParameters, + id-QMCConfigInfo, + id-QMCDeactivation, + id-RANNodeName, + id-RANPagingPriority, + id-RANStatusTransfer-TransparentContainer, + id-RAN-UE-NGAP-ID, + id-RedCapIndication, + id-RedirectionVoiceFallback, + id-RelativeAMFCapacity, + id-RepetitionPeriod, + id-ResetType, + id-RGLevelWirelineAccessCharacteristics, + id-RoutingID, + id-RRCEstablishmentCause, + id-RRCInactiveTransitionReportRequest, + id-RRC-Resume-Cause, + id-RRCState, + id-SecurityContext, + id-SecurityKey, + id-SelectedPLMNIdentity, + id-SerialNumber, + id-ServedGUAMIList, + id-SliceSupportList, + id-S-NSSAI, + id-SONConfigurationTransferDL, + id-SONConfigurationTransferUL, + id-SourceAMF-UE-NGAP-ID, + id-SourceToTarget-TransparentContainer, + id-SourceToTarget-AMFInformationReroute, + id-SRVCCOperationPossible, + id-SupportedTAList, + id-Suspend-Request-Indication, + id-Suspend-Response-Indication, + id-TAI, + id-TAIListForPaging, + id-TAIListForRestart, + id-TargetID, + id-TargetNSSAIInformation, + id-TargetToSource-TransparentContainer, + id-TargettoSource-Failure-TransparentContainer, + id-TimeSyncAssistanceInfo, + id-TimeToWait, + id-TNGFIdentityInformation, + id-TraceActivation, + id-TraceCollectionEntityIPAddress, + id-TraceCollectionEntityURI, + id-TWIFIdentityInformation, + id-UEAggregateMaximumBitRate, + id-UE-associatedLogicalNG-connectionList, + id-UECapabilityInfoRequest, + id-UEContextRequest, + id-UE-DifferentiationInfo, + id-UE-NGAP-IDs, + id-UEPagingIdentity, + id-UEPresenceInAreaOfInterestList, + id-UERadioCapability, + id-UERadioCapabilityForPaging, + id-UERadioCapabilityID, + id-UERadioCapability-EUTRA-Format, + id-UERetentionInformation, + id-UESecurityCapabilities, + id-UESliceMaximumBitRateList, + id-UE-UP-CIoT-Support, + id-UL-CP-SecurityInformation, + id-UnavailableGUAMIList, + id-UserLocationInformation, + id-W-AGFIdentityInformation, + id-WarningAreaCoordinates, + id-WarningAreaList, + id-WarningMessageContents, + id-WarningSecurityInfo, + id-WarningType, + id-WUS-Assistance-Information, + id-RIMInformationTransfer + +FROM NGAP-Constants; + +-- ************************************************************** +-- +-- PDU SESSION MANAGEMENT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PDU Session Resource Setup Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE SETUP REQUEST +-- +-- ************************************************************** + +PDUSessionResourceSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceSetupRequestIEs} }, + ... +} + +PDUSessionResourceSetupRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RANPagingPriority CRITICALITY ignore TYPE RANPagingPriority PRESENCE optional }| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE optional }| + { ID id-PDUSessionResourceSetupListSUReq CRITICALITY reject TYPE PDUSessionResourceSetupListSUReq PRESENCE mandatory }| + { ID id-UEAggregateMaximumBitRate CRITICALITY ignore TYPE UEAggregateMaximumBitRate PRESENCE optional }| + { ID id-UESliceMaximumBitRateList CRITICALITY ignore TYPE UESliceMaximumBitRateList PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE SETUP RESPONSE +-- +-- ************************************************************** + +PDUSessionResourceSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceSetupResponseIEs} }, + ... +} + +PDUSessionResourceSetupResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceSetupListSURes CRITICALITY ignore TYPE PDUSessionResourceSetupListSURes PRESENCE optional }| + { ID id-PDUSessionResourceFailedToSetupListSURes CRITICALITY ignore TYPE PDUSessionResourceFailedToSetupListSURes PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- PDU Session Resource Release Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE RELEASE COMMAND +-- +-- ************************************************************** + +PDUSessionResourceReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceReleaseCommandIEs} }, + ... +} + +PDUSessionResourceReleaseCommandIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RANPagingPriority CRITICALITY ignore TYPE RANPagingPriority PRESENCE optional }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE optional }| + { ID id-PDUSessionResourceToReleaseListRelCmd CRITICALITY reject TYPE PDUSessionResourceToReleaseListRelCmd PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE RELEASE RESPONSE +-- +-- ************************************************************** + +PDUSessionResourceReleaseResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceReleaseResponseIEs} }, + ... +} + +PDUSessionResourceReleaseResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceReleasedListRelRes CRITICALITY ignore TYPE PDUSessionResourceReleasedListRelRes PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PDU Session Resource Modify Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE MODIFY REQUEST +-- +-- ************************************************************** + +PDUSessionResourceModifyRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceModifyRequestIEs} }, + ... +} + +PDUSessionResourceModifyRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RANPagingPriority CRITICALITY ignore TYPE RANPagingPriority PRESENCE optional }| + { ID id-PDUSessionResourceModifyListModReq CRITICALITY reject TYPE PDUSessionResourceModifyListModReq PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE MODIFY RESPONSE +-- +-- ************************************************************** + +PDUSessionResourceModifyResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceModifyResponseIEs} }, + ... +} + +PDUSessionResourceModifyResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceModifyListModRes CRITICALITY ignore TYPE PDUSessionResourceModifyListModRes PRESENCE optional }| + { ID id-PDUSessionResourceFailedToModifyListModRes CRITICALITY ignore TYPE PDUSessionResourceFailedToModifyListModRes PRESENCE optional }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- PDU Session Resource Notify Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE NOTIFY +-- +-- ************************************************************** + +PDUSessionResourceNotify ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceNotifyIEs} }, + ... +} + +PDUSessionResourceNotifyIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceNotifyList CRITICALITY reject TYPE PDUSessionResourceNotifyList PRESENCE optional }| + { ID id-PDUSessionResourceReleasedListNot CRITICALITY ignore TYPE PDUSessionResourceReleasedListNot PRESENCE optional }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- PDU Session Resource Modify Indication Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE MODIFY INDICATION +-- +-- ************************************************************** + +PDUSessionResourceModifyIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceModifyIndicationIEs} }, + ... +} + +PDUSessionResourceModifyIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceModifyListModInd CRITICALITY reject TYPE PDUSessionResourceModifyListModInd PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PDU SESSION RESOURCE MODIFY CONFIRM +-- +-- ************************************************************** + +PDUSessionResourceModifyConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PDUSessionResourceModifyConfirmIEs} }, + ... +} + +PDUSessionResourceModifyConfirmIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceModifyListModCfm CRITICALITY ignore TYPE PDUSessionResourceModifyListModCfm PRESENCE optional }| + { ID id-PDUSessionResourceFailedToModifyListModCfm CRITICALITY ignore TYPE PDUSessionResourceFailedToModifyListModCfm PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT MANAGEMENT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Initial Context Setup Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- INITIAL CONTEXT SETUP REQUEST +-- +-- ************************************************************** + +InitialContextSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupRequestIEs} }, + ... +} + +InitialContextSetupRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-OldAMF CRITICALITY reject TYPE AMFName PRESENCE optional }| + { ID id-UEAggregateMaximumBitRate CRITICALITY reject TYPE UEAggregateMaximumBitRate PRESENCE conditional }| + { ID id-CoreNetworkAssistanceInformationForInactive CRITICALITY ignore TYPE CoreNetworkAssistanceInformationForInactive PRESENCE optional }| + { ID id-GUAMI CRITICALITY reject TYPE GUAMI PRESENCE mandatory }| + { ID id-PDUSessionResourceSetupListCxtReq CRITICALITY reject TYPE PDUSessionResourceSetupListCxtReq PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY reject TYPE AllowedNSSAI PRESENCE mandatory }| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE mandatory }| + { ID id-SecurityKey CRITICALITY reject TYPE SecurityKey PRESENCE mandatory }| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional }| + { ID id-MobilityRestrictionList CRITICALITY ignore TYPE MobilityRestrictionList PRESENCE optional }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-IndexToRFSP CRITICALITY ignore TYPE IndexToRFSP PRESENCE optional }| + { ID id-MaskedIMEISV CRITICALITY ignore TYPE MaskedIMEISV PRESENCE optional }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE optional }| + { ID id-EmergencyFallbackIndicator CRITICALITY reject TYPE EmergencyFallbackIndicator PRESENCE optional }| + { ID id-RRCInactiveTransitionReportRequest CRITICALITY ignore TYPE RRCInactiveTransitionReportRequest PRESENCE optional }| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional }| + { ID id-RedirectionVoiceFallback CRITICALITY ignore TYPE RedirectionVoiceFallback PRESENCE optional }| + { ID id-LocationReportingRequestType CRITICALITY ignore TYPE LocationReportingRequestType PRESENCE optional }| + { ID id-CNAssistedRANTuning CRITICALITY ignore TYPE CNAssistedRANTuning PRESENCE optional }| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional }| + { ID id-IAB-Authorized CRITICALITY ignore TYPE IAB-Authorized PRESENCE optional }| + { ID id-Enhanced-CoverageRestriction CRITICALITY ignore TYPE Enhanced-CoverageRestriction PRESENCE optional }| + { ID id-Extended-ConnectedTime CRITICALITY ignore TYPE Extended-ConnectedTime PRESENCE optional }| + { ID id-UE-DifferentiationInfo CRITICALITY ignore TYPE UE-DifferentiationInfo PRESENCE optional }| +{ ID id-NRV2XServicesAuthorized CRITICALITY ignore TYPE NRV2XServicesAuthorized PRESENCE optional }| +{ ID id-LTEV2XServicesAuthorized CRITICALITY ignore TYPE LTEV2XServicesAuthorized PRESENCE optional }| +{ ID id-NRUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| +{ ID id-LTEUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE LTEUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-PC5QoSParameters CRITICALITY ignore TYPE PC5QoSParameters PRESENCE optional }| + { ID id-CEmodeBrestricted CRITICALITY ignore TYPE CEmodeBrestricted PRESENCE optional }| + { ID id-UE-UP-CIoT-Support CRITICALITY ignore TYPE UE-UP-CIoT-Support PRESENCE optional }| + { ID id-RGLevelWirelineAccessCharacteristics CRITICALITY ignore TYPE RGLevelWirelineAccessCharacteristics PRESENCE optional }| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }| + { ID id-TimeSyncAssistanceInfo CRITICALITY ignore TYPE TimeSyncAssistanceInfo PRESENCE optional }| + { ID id-QMCConfigInfo CRITICALITY ignore TYPE QMCConfigInfo PRESENCE optional }| + { ID id-TargetNSSAIInformation CRITICALITY ignore TYPE TargetNSSAIInformation PRESENCE optional }| + { ID id-UESliceMaximumBitRateList CRITICALITY ignore TYPE UESliceMaximumBitRateList PRESENCE optional }| + { ID id-FiveG-ProSeAuthorized CRITICALITY ignore TYPE FiveG-ProSeAuthorized PRESENCE optional }| + { ID id-FiveG-ProSeUEPC5AggregateMaximumBitRate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-FiveG-ProSePC5QoSParameters CRITICALITY ignore TYPE FiveG-ProSePC5QoSParameters PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- INITIAL CONTEXT SETUP RESPONSE +-- +-- ************************************************************** + +InitialContextSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupResponseIEs} }, + ... +} + +InitialContextSetupResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceSetupListCxtRes CRITICALITY ignore TYPE PDUSessionResourceSetupListCxtRes PRESENCE optional }| + { ID id-PDUSessionResourceFailedToSetupListCxtRes CRITICALITY ignore TYPE PDUSessionResourceFailedToSetupListCxtRes PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- INITIAL CONTEXT SETUP FAILURE +-- +-- ************************************************************** + +InitialContextSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupFailureIEs} }, + ... +} + +InitialContextSetupFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceFailedToSetupListCxtFail CRITICALITY ignore TYPE PDUSessionResourceFailedToSetupListCxtFail PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Request Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE REQUEST +-- +-- ************************************************************** + +UEContextReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextReleaseRequest-IEs} }, + ... +} + +UEContextReleaseRequest-IEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceListCxtRelReq CRITICALITY reject TYPE PDUSessionResourceListCxtRelReq PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE COMMAND +-- +-- ************************************************************** + +UEContextReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextReleaseCommand-IEs} }, + ... +} + +UEContextReleaseCommand-IEs NGAP-PROTOCOL-IES ::= { + { ID id-UE-NGAP-IDs CRITICALITY reject TYPE UE-NGAP-IDs PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE COMPLETE +-- +-- ************************************************************** + +UEContextReleaseComplete ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextReleaseComplete-IEs} }, + ... +} + +UEContextReleaseComplete-IEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }| + { ID id-InfoOnRecommendedCellsAndRANNodesForPaging CRITICALITY ignore TYPE InfoOnRecommendedCellsAndRANNodesForPaging PRESENCE optional }| + { ID id-PDUSessionResourceListCxtRelCpl CRITICALITY reject TYPE PDUSessionResourceListCxtRelCpl PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-PagingAssisDataforCEcapabUE CRITICALITY ignore TYPE PagingAssisDataforCEcapabUE PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Resume Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT RESUME REQUEST +-- +-- ************************************************************** + +UEContextResumeRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextResumeRequestIEs} }, + ... +} + +UEContextResumeRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRCEstablishmentCause PRESENCE mandatory }| + { ID id-PDUSessionResourceResumeListRESReq CRITICALITY reject TYPE PDUSessionResourceResumeListRESReq PRESENCE optional }| + { ID id-PDUSessionResourceFailedToResumeListRESReq CRITICALITY reject TYPE PDUSessionResourceFailedToResumeListRESReq PRESENCE optional }| + { ID id-Suspend-Request-Indication CRITICALITY ignore TYPE Suspend-Request-Indication PRESENCE optional }| + { ID id-InfoOnRecommendedCellsAndRANNodesForPaging CRITICALITY ignore TYPE InfoOnRecommendedCellsAndRANNodesForPaging PRESENCE optional }| + { ID id-PagingAssisDataforCEcapabUE CRITICALITY ignore TYPE PagingAssisDataforCEcapabUE PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RESUME RESPONSE +-- +-- ************************************************************** + +UEContextResumeResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextResumeResponseIEs} }, + ... +} + +UEContextResumeResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceResumeListRESRes CRITICALITY reject TYPE PDUSessionResourceResumeListRESRes PRESENCE optional }| + { ID id-PDUSessionResourceFailedToResumeListRESRes CRITICALITY reject TYPE PDUSessionResourceFailedToResumeListRESRes PRESENCE optional }| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE optional }| + { ID id-Suspend-Response-Indication CRITICALITY ignore TYPE Suspend-Response-Indication PRESENCE optional }| + { ID id-Extended-ConnectedTime CRITICALITY ignore TYPE Extended-ConnectedTime PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RESUME FAILURE +-- +-- ************************************************************** + +UEContextResumeFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeFailureIEs} }, + ... +} + +UEContextResumeFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- UE Context Suspend Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT SUSPEND REQUEST +-- +-- ************************************************************** + +UEContextSuspendRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextSuspendRequestIEs} }, + ... +} + +UEContextSuspendRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-InfoOnRecommendedCellsAndRANNodesForPaging CRITICALITY ignore TYPE InfoOnRecommendedCellsAndRANNodesForPaging PRESENCE optional }| + { ID id-PagingAssisDataforCEcapabUE CRITICALITY ignore TYPE PagingAssisDataforCEcapabUE PRESENCE optional }| + { ID id-PDUSessionResourceSuspendListSUSReq CRITICALITY reject TYPE PDUSessionResourceSuspendListSUSReq PRESENCE optional }, ... +} + +-- ************************************************************** +-- +-- UE CONTEXT SUSPEND RESPONSE +-- +-- ************************************************************** + +UEContextSuspendResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextSuspendResponseIEs} }, + ... +} + +UEContextSuspendResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT SUSPEND FAILURE +-- +-- ************************************************************** + +UEContextSuspendFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextSuspendFailureIEs} }, + ... +} + +UEContextSuspendFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Modification Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION REQUEST +-- +-- ************************************************************** + +UEContextModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextModificationRequestIEs} }, + ... +} + +UEContextModificationRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RANPagingPriority CRITICALITY ignore TYPE RANPagingPriority PRESENCE optional }| + { ID id-SecurityKey CRITICALITY reject TYPE SecurityKey PRESENCE optional }| + { ID id-IndexToRFSP CRITICALITY ignore TYPE IndexToRFSP PRESENCE optional }| + { ID id-UEAggregateMaximumBitRate CRITICALITY ignore TYPE UEAggregateMaximumBitRate PRESENCE optional }| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE optional }| + { ID id-CoreNetworkAssistanceInformationForInactive CRITICALITY ignore TYPE CoreNetworkAssistanceInformationForInactive PRESENCE optional }| + { ID id-EmergencyFallbackIndicator CRITICALITY reject TYPE EmergencyFallbackIndicator PRESENCE optional }| + { ID id-NewAMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE optional }| + { ID id-RRCInactiveTransitionReportRequest CRITICALITY ignore TYPE RRCInactiveTransitionReportRequest PRESENCE optional }| + { ID id-NewGUAMI CRITICALITY reject TYPE GUAMI PRESENCE optional }| + { ID id-CNAssistedRANTuning CRITICALITY ignore TYPE CNAssistedRANTuning PRESENCE optional }| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional }| + { ID id-IAB-Authorized CRITICALITY ignore TYPE IAB-Authorized PRESENCE optional }| + { ID id-NRV2XServicesAuthorized CRITICALITY ignore TYPE NRV2XServicesAuthorized PRESENCE optional }| + { ID id-LTEV2XServicesAuthorized CRITICALITY ignore TYPE LTEV2XServicesAuthorized PRESENCE optional }| + { ID id-NRUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-LTEUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE LTEUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-PC5QoSParameters CRITICALITY ignore TYPE PC5QoSParameters PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }| + { ID id-RGLevelWirelineAccessCharacteristics CRITICALITY ignore TYPE RGLevelWirelineAccessCharacteristics PRESENCE optional }| + { ID id-TimeSyncAssistanceInfo CRITICALITY ignore TYPE TimeSyncAssistanceInfo PRESENCE optional }| + { ID id-QMCConfigInfo CRITICALITY ignore TYPE QMCConfigInfo PRESENCE optional }| + { ID id-QMCDeactivation CRITICALITY ignore TYPE QMCDeactivation PRESENCE optional }| + { ID id-UESliceMaximumBitRateList CRITICALITY ignore TYPE UESliceMaximumBitRateList PRESENCE optional }| + { ID id-ManagementBasedMDTPLMNModificationList CRITICALITY ignore TYPE MDTPLMNModificationList PRESENCE optional }| + { ID id-FiveG-ProSeAuthorized CRITICALITY ignore TYPE FiveG-ProSeAuthorized PRESENCE optional }| + { ID id-FiveG-ProSeUEPC5AggregateMaximumBitRate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-FiveG-ProSePC5QoSParameters CRITICALITY ignore TYPE FiveG-ProSePC5QoSParameters PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION RESPONSE +-- +-- ************************************************************** + +UEContextModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextModificationResponseIEs} }, + ... +} + +UEContextModificationResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RRCState CRITICALITY ignore TYPE RRCState PRESENCE optional }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION FAILURE +-- +-- ************************************************************** + +UEContextModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextModificationFailureIEs} }, + ... +} + +UEContextModificationFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RRC INACTIVE TRANSITION REPORT +-- +-- ************************************************************** + +RRCInactiveTransitionReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {RRCInactiveTransitionReportIEs} }, + ... +} + +RRCInactiveTransitionReportIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RRCState CRITICALITY ignore TYPE RRCState PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Retrieve UE Information +-- +-- ************************************************************** + +RetrieveUEInformation ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { RetrieveUEInformationIEs} }, + ... +} + +RetrieveUEInformationIEs NGAP-PROTOCOL-IES ::= { + { ID id-FiveG-S-TMSI CRITICALITY reject TYPE FiveG-S-TMSI PRESENCE mandatory }, + ... + +} + +-- ************************************************************** + +-- UE Information Transfer +-- +-- ************************************************************** + +UEInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEInformationTransferIEs} }, + ... +} + +UEInformationTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-FiveG-S-TMSI CRITICALITY reject TYPE FiveG-S-TMSI PRESENCE mandatory }| + { ID id-NB-IoT-UEPriority CRITICALITY ignore TYPE NB-IoT-UEPriority PRESENCE optional }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-S-NSSAI CRITICALITY ignore TYPE S-NSSAI PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY ignore TYPE AllowedNSSAI PRESENCE optional }| + { ID id-UE-DifferentiationInfo CRITICALITY ignore TYPE UE-DifferentiationInfo PRESENCE optional }| + { ID id-MaskedIMEISV CRITICALITY ignore TYPE MaskedIMEISV PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RAN CP Relocation Indication +-- +-- ************************************************************** + +RANCPRelocationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { RANCPRelocationIndicationIEs} }, + ... +} + +RANCPRelocationIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-FiveG-S-TMSI CRITICALITY reject TYPE FiveG-S-TMSI PRESENCE mandatory }| + { ID id-EUTRA-CGI CRITICALITY ignore TYPE EUTRA-CGI PRESENCE mandatory }| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory }| + { ID id-UL-CP-SecurityInformation CRITICALITY reject TYPE UL-CP-SecurityInformation PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE MOBILITY MANAGEMENT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Preparation Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- HANDOVER REQUIRED +-- +-- ************************************************************** + +HandoverRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequiredIEs} }, + ... +} + +HandoverRequiredIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TargetID CRITICALITY reject TYPE TargetID PRESENCE mandatory }| + { ID id-DirectForwardingPathAvailability CRITICALITY ignore TYPE DirectForwardingPathAvailability PRESENCE optional }| + { ID id-PDUSessionResourceListHORqd CRITICALITY reject TYPE PDUSessionResourceListHORqd PRESENCE mandatory }| + { ID id-SourceToTarget-TransparentContainer CRITICALITY reject TYPE SourceToTarget-TransparentContainer PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER COMMAND +-- +-- ************************************************************** + +HandoverCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverCommandIEs} }, + ... +} + +HandoverCommandIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory }| + { ID id-NASSecurityParametersFromNGRAN CRITICALITY reject TYPE NASSecurityParametersFromNGRAN PRESENCE conditional }| + -- This IE shall be present if HandoverType IE is set to value "5GStoEPPS" or “5GStoUTRAN” -- + { ID id-PDUSessionResourceHandoverList CRITICALITY ignore TYPE PDUSessionResourceHandoverList PRESENCE optional }| + { ID id-PDUSessionResourceToReleaseListHOCmd CRITICALITY ignore TYPE PDUSessionResourceToReleaseListHOCmd PRESENCE optional }| + { ID id-TargetToSource-TransparentContainer CRITICALITY reject TYPE TargetToSource-TransparentContainer PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- HANDOVER PREPARATION FAILURE +-- +-- ************************************************************** + +HandoverPreparationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverPreparationFailureIEs} }, + ... +} + +HandoverPreparationFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-TargettoSource-Failure-TransparentContainer CRITICALITY ignore TYPE TargettoSource-Failure-TransparentContainer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Handover Resource Allocation Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- HANDOVER REQUEST +-- +-- ************************************************************** + +HandoverRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequestIEs} }, + ... +} + +HandoverRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-UEAggregateMaximumBitRate CRITICALITY reject TYPE UEAggregateMaximumBitRate PRESENCE mandatory }| + { ID id-CoreNetworkAssistanceInformationForInactive CRITICALITY ignore TYPE CoreNetworkAssistanceInformationForInactive PRESENCE optional }| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE mandatory }| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory }| + { ID id-NewSecurityContextInd CRITICALITY reject TYPE NewSecurityContextInd PRESENCE optional }| + { ID id-NASC CRITICALITY reject TYPE NAS-PDU PRESENCE optional }| + { ID id-PDUSessionResourceSetupListHOReq CRITICALITY reject TYPE PDUSessionResourceSetupListHOReq PRESENCE mandatory }| + { ID id-AllowedNSSAI CRITICALITY reject TYPE AllowedNSSAI PRESENCE mandatory }| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional }| + { ID id-MaskedIMEISV CRITICALITY ignore TYPE MaskedIMEISV PRESENCE optional }| + { ID id-SourceToTarget-TransparentContainer CRITICALITY reject TYPE SourceToTarget-TransparentContainer PRESENCE mandatory }| + { ID id-MobilityRestrictionList CRITICALITY ignore TYPE MobilityRestrictionList PRESENCE optional }| + { ID id-LocationReportingRequestType CRITICALITY ignore TYPE LocationReportingRequestType PRESENCE optional }| + { ID id-RRCInactiveTransitionReportRequest CRITICALITY ignore TYPE RRCInactiveTransitionReportRequest PRESENCE optional }| + { ID id-GUAMI CRITICALITY reject TYPE GUAMI PRESENCE mandatory }| + { ID id-RedirectionVoiceFallback CRITICALITY ignore TYPE RedirectionVoiceFallback PRESENCE optional }| + { ID id-CNAssistedRANTuning CRITICALITY ignore TYPE CNAssistedRANTuning PRESENCE optional }| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional }| + { ID id-IAB-Authorized CRITICALITY reject TYPE IAB-Authorized PRESENCE optional }| + { ID id-Enhanced-CoverageRestriction CRITICALITY ignore TYPE Enhanced-CoverageRestriction PRESENCE optional }| + { ID id-UE-DifferentiationInfo CRITICALITY ignore TYPE UE-DifferentiationInfo PRESENCE optional }| + { ID id-NRV2XServicesAuthorized CRITICALITY ignore TYPE NRV2XServicesAuthorized PRESENCE optional }| + { ID id-LTEV2XServicesAuthorized CRITICALITY ignore TYPE LTEV2XServicesAuthorized PRESENCE optional }| + { ID id-NRUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-LTEUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE LTEUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-PC5QoSParameters CRITICALITY ignore TYPE PC5QoSParameters PRESENCE optional }| + { ID id-CEmodeBrestricted CRITICALITY ignore TYPE CEmodeBrestricted PRESENCE optional }| + { ID id-UE-UP-CIoT-Support CRITICALITY ignore TYPE UE-UP-CIoT-Support PRESENCE optional }| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }| + { ID id-Extended-ConnectedTime CRITICALITY ignore TYPE Extended-ConnectedTime PRESENCE optional }| + { ID id-TimeSyncAssistanceInfo CRITICALITY ignore TYPE TimeSyncAssistanceInfo PRESENCE optional }| + { ID id-UESliceMaximumBitRateList CRITICALITY ignore TYPE UESliceMaximumBitRateList PRESENCE optional }| + { ID id-FiveG-ProSeAuthorized CRITICALITY ignore TYPE FiveG-ProSeAuthorized PRESENCE optional }| + { ID id-FiveG-ProSeUEPC5AggregateMaximumBitRate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-FiveG-ProSePC5QoSParameters CRITICALITY ignore TYPE FiveG-ProSePC5QoSParameters PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER REQUEST ACKNOWLEDGE +-- +-- ************************************************************** + +HandoverRequestAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequestAcknowledgeIEs} }, + ... +} + +HandoverRequestAcknowledgeIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceAdmittedList CRITICALITY ignore TYPE PDUSessionResourceAdmittedList PRESENCE mandatory }| + { ID id-PDUSessionResourceFailedToSetupListHOAck CRITICALITY ignore TYPE PDUSessionResourceFailedToSetupListHOAck PRESENCE optional }| + { ID id-TargetToSource-TransparentContainer CRITICALITY reject TYPE TargetToSource-TransparentContainer PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-NPN-AccessInformation CRITICALITY reject TYPE NPN-AccessInformation PRESENCE optional }| + { ID id-RedCapIndication CRITICALITY ignore TYPE RedCapIndication PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- HANDOVER FAILURE +-- +-- ************************************************************** + +HandoverFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverFailureIEs} }, + ... +} + +HandoverFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-TargettoSource-Failure-TransparentContainer CRITICALITY ignore TYPE TargettoSource-Failure-TransparentContainer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Handover Notification Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- HANDOVER NOTIFY +-- +-- ************************************************************** + +HandoverNotify ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverNotifyIEs} }, + ... +} + +HandoverNotifyIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE mandatory }| + { ID id-NotifySourceNGRANNode CRITICALITY ignore TYPE NotifySourceNGRANNode PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Path Switch Request Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PATH SWITCH REQUEST +-- +-- ************************************************************** + +PathSwitchRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestIEs} }, + ... +} + +PathSwitchRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-SourceAMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE mandatory }| + { ID id-UESecurityCapabilities CRITICALITY ignore TYPE UESecurityCapabilities PRESENCE mandatory }| + { ID id-PDUSessionResourceToBeSwitchedDLList CRITICALITY reject TYPE PDUSessionResourceToBeSwitchedDLList PRESENCE mandatory }| + { ID id-PDUSessionResourceFailedToSetupListPSReq CRITICALITY ignore TYPE PDUSessionResourceFailedToSetupListPSReq PRESENCE optional }| + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRCEstablishmentCause PRESENCE optional }| + { ID id-RedCapIndication CRITICALITY ignore TYPE RedCapIndication PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- PATH SWITCH REQUEST ACKNOWLEDGE +-- +-- ************************************************************** + +PathSwitchRequestAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestAcknowledgeIEs} }, + ... +} + +PathSwitchRequestAcknowledgeIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE optional }| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory }| + { ID id-NewSecurityContextInd CRITICALITY reject TYPE NewSecurityContextInd PRESENCE optional }| + { ID id-PDUSessionResourceSwitchedList CRITICALITY ignore TYPE PDUSessionResourceSwitchedList PRESENCE mandatory }| + { ID id-PDUSessionResourceReleasedListPSAck CRITICALITY ignore TYPE PDUSessionResourceReleasedListPSAck PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY reject TYPE AllowedNSSAI PRESENCE mandatory }| + { ID id-CoreNetworkAssistanceInformationForInactive CRITICALITY ignore TYPE CoreNetworkAssistanceInformationForInactive PRESENCE optional }| + { ID id-RRCInactiveTransitionReportRequest CRITICALITY ignore TYPE RRCInactiveTransitionReportRequest PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-RedirectionVoiceFallback CRITICALITY ignore TYPE RedirectionVoiceFallback PRESENCE optional }| + { ID id-CNAssistedRANTuning CRITICALITY ignore TYPE CNAssistedRANTuning PRESENCE optional }| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional }| + { ID id-Enhanced-CoverageRestriction CRITICALITY ignore TYPE Enhanced-CoverageRestriction PRESENCE optional }| + { ID id-Extended-ConnectedTime CRITICALITY ignore TYPE Extended-ConnectedTime PRESENCE optional }| + { ID id-UE-DifferentiationInfo CRITICALITY ignore TYPE UE-DifferentiationInfo PRESENCE optional }| + { ID id-NRV2XServicesAuthorized CRITICALITY ignore TYPE NRV2XServicesAuthorized PRESENCE optional }| + { ID id-LTEV2XServicesAuthorized CRITICALITY ignore TYPE LTEV2XServicesAuthorized PRESENCE optional }| + { ID id-NRUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-LTEUESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE LTEUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-PC5QoSParameters CRITICALITY ignore TYPE PC5QoSParameters PRESENCE optional }| + { ID id-CEmodeBrestricted CRITICALITY ignore TYPE CEmodeBrestricted PRESENCE optional }| + { ID id-UE-UP-CIoT-Support CRITICALITY ignore TYPE UE-UP-CIoT-Support PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional }| + { ID id-TimeSyncAssistanceInfo CRITICALITY ignore TYPE TimeSyncAssistanceInfo PRESENCE optional }| + { ID id-FiveG-ProSeAuthorized CRITICALITY ignore TYPE FiveG-ProSeAuthorized PRESENCE optional }| + { ID id-FiveG-ProSeUEPC5AggregateMaximumBitRate CRITICALITY ignore TYPE NRUESidelinkAggregateMaximumBitrate PRESENCE optional }| + { ID id-FiveG-ProSePC5QoSParameters CRITICALITY ignore TYPE FiveG-ProSePC5QoSParameters PRESENCE optional }| + { ID id-ManagementBasedMDTPLMNModificationList CRITICALITY ignore TYPE MDTPLMNModificationList PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- PATH SWITCH REQUEST FAILURE +-- +-- ************************************************************** + +PathSwitchRequestFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestFailureIEs} }, + ... +} + +PathSwitchRequestFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceReleasedListPSFail CRITICALITY ignore TYPE PDUSessionResourceReleasedListPSFail PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Handover Cancellation Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- HANDOVER CANCEL +-- +-- ************************************************************** + +HandoverCancel ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCancelIEs} }, + ... +} + +HandoverCancelIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER CANCEL ACKNOWLEDGE +-- +-- ************************************************************** + +HandoverCancelAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCancelAcknowledgeIEs} }, + ... +} + +HandoverCancelAcknowledgeIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER SUCCESS ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- HANDOVER SUCCESS +-- +-- ************************************************************** + +HandoverSuccess ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverSuccessIEs} }, + ... +} + +HandoverSuccessIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK RAN EARLY STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Uplink RAN Early Status Transfer +-- +-- ************************************************************** + +UplinkRANEarlyStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkRANEarlyStatusTransferIEs} }, + ... +} + +UplinkRANEarlyStatusTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory}| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory}| + { ID id-EarlyStatusTransfer-TransparentContainer CRITICALITY reject TYPE EarlyStatusTransfer-TransparentContainer PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK RAN EARLY STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Downlink RAN Early Status Transfer +-- +-- ************************************************************** + +DownlinkRANEarlyStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkRANEarlyStatusTransferIEs} }, + ... +} + +DownlinkRANEarlyStatusTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory}| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory}| + { ID id-EarlyStatusTransfer-TransparentContainer CRITICALITY reject TYPE EarlyStatusTransfer-TransparentContainer PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- Uplink RAN Status Transfer Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UPLINK RAN STATUS TRANSFER +-- +-- ************************************************************** + +UplinkRANStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkRANStatusTransferIEs} }, + ... +} + +UplinkRANStatusTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RANStatusTransfer-TransparentContainer CRITICALITY reject TYPE RANStatusTransfer-TransparentContainer PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Downlink RAN Status Transfer Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DOWNLINK RAN STATUS TRANSFER +-- +-- ************************************************************** + +DownlinkRANStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkRANStatusTransferIEs} }, + ... +} + +DownlinkRANStatusTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RANStatusTransfer-TransparentContainer CRITICALITY reject TYPE RANStatusTransfer-TransparentContainer PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- PAGING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PAGING +-- +-- ************************************************************** + +Paging ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PagingIEs} }, + ... +} + +PagingIEs NGAP-PROTOCOL-IES ::= { + { ID id-UEPagingIdentity CRITICALITY ignore TYPE UEPagingIdentity PRESENCE mandatory }| + { ID id-PagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE optional }| + { ID id-TAIListForPaging CRITICALITY ignore TYPE TAIListForPaging PRESENCE mandatory }| + { ID id-PagingPriority CRITICALITY ignore TYPE PagingPriority PRESENCE optional }| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional }| + { ID id-PagingOrigin CRITICALITY ignore TYPE PagingOrigin PRESENCE optional }| + { ID id-AssistanceDataForPaging CRITICALITY ignore TYPE AssistanceDataForPaging PRESENCE optional }| + { ID id-NB-IoT-Paging-eDRXInfo CRITICALITY ignore TYPE NB-IoT-Paging-eDRXInfo PRESENCE optional }| + { ID id-NB-IoT-PagingDRX CRITICALITY ignore TYPE NB-IoT-PagingDRX PRESENCE optional }| + { ID id-Enhanced-CoverageRestriction CRITICALITY ignore TYPE Enhanced-CoverageRestriction PRESENCE optional }| + { ID id-WUS-Assistance-Information CRITICALITY ignore TYPE WUS-Assistance-Information PRESENCE optional }| + { ID id-EUTRA-PagingeDRXInformation CRITICALITY ignore TYPE EUTRA-PagingeDRXInformation PRESENCE optional }| + { ID id-CEmodeBrestricted CRITICALITY ignore TYPE CEmodeBrestricted PRESENCE optional }| + { ID id-NR-PagingeDRXInformation CRITICALITY ignore TYPE NR-PagingeDRXInformation PRESENCE optional }| + { ID id-PagingCause CRITICALITY ignore TYPE PagingCause PRESENCE optional }| + { ID id-PEIPSassistanceInformation CRITICALITY ignore TYPE PEIPSassistanceInformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- NAS TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- INITIAL UE MESSAGE +-- +-- ************************************************************** + +InitialUEMessage ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialUEMessage-IEs} }, + ... +} + +InitialUEMessage-IEs NGAP-PROTOCOL-IES ::= { + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY reject TYPE UserLocationInformation PRESENCE mandatory }| + { ID id-RRCEstablishmentCause CRITICALITY ignore TYPE RRCEstablishmentCause PRESENCE mandatory }| + { ID id-FiveG-S-TMSI CRITICALITY reject TYPE FiveG-S-TMSI PRESENCE optional }| + { ID id-AMFSetID CRITICALITY ignore TYPE AMFSetID PRESENCE optional }| + { ID id-UEContextRequest CRITICALITY ignore TYPE UEContextRequest PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY reject TYPE AllowedNSSAI PRESENCE optional }| + { ID id-SourceToTarget-AMFInformationReroute CRITICALITY ignore TYPE SourceToTarget-AMFInformationReroute PRESENCE optional }| + { ID id-SelectedPLMNIdentity CRITICALITY ignore TYPE PLMNIdentity PRESENCE optional }| + { ID id-IABNodeIndication CRITICALITY reject TYPE IABNodeIndication PRESENCE optional }| + { ID id-CEmodeBSupport-Indicator CRITICALITY reject TYPE CEmodeBSupport-Indicator PRESENCE optional }| + { ID id-LTEM-Indication CRITICALITY ignore TYPE LTEM-Indication PRESENCE optional }| + { ID id-EDT-Session CRITICALITY ignore TYPE EDT-Session PRESENCE optional }| + { ID id-AuthenticatedIndication CRITICALITY ignore TYPE AuthenticatedIndication PRESENCE optional }| + { ID id-NPN-AccessInformation CRITICALITY reject TYPE NPN-AccessInformation PRESENCE optional }| + { ID id-RedCapIndication CRITICALITY ignore TYPE RedCapIndication PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK NAS TRANSPORT +-- +-- ************************************************************** + +DownlinkNASTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkNASTransport-IEs} }, + ... +} + +DownlinkNASTransport-IEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-OldAMF CRITICALITY reject TYPE AMFName PRESENCE optional }| + { ID id-RANPagingPriority CRITICALITY ignore TYPE RANPagingPriority PRESENCE optional }| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory }| + { ID id-MobilityRestrictionList CRITICALITY ignore TYPE MobilityRestrictionList PRESENCE optional }| + { ID id-IndexToRFSP CRITICALITY ignore TYPE IndexToRFSP PRESENCE optional }| + { ID id-UEAggregateMaximumBitRate CRITICALITY ignore TYPE UEAggregateMaximumBitRate PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY reject TYPE AllowedNSSAI PRESENCE optional }| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional }| + { ID id-Enhanced-CoverageRestriction CRITICALITY ignore TYPE Enhanced-CoverageRestriction PRESENCE optional }| + { ID id-Extended-ConnectedTime CRITICALITY ignore TYPE Extended-ConnectedTime PRESENCE optional }| + { ID id-UE-DifferentiationInfo CRITICALITY ignore TYPE UE-DifferentiationInfo PRESENCE optional }| + { ID id-CEmodeBrestricted CRITICALITY ignore TYPE CEmodeBrestricted PRESENCE optional }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-UECapabilityInfoRequest CRITICALITY ignore TYPE UECapabilityInfoRequest PRESENCE optional }| + { ID id-EndIndication CRITICALITY ignore TYPE EndIndication PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }| + { ID id-TargetNSSAIInformation CRITICALITY ignore TYPE TargetNSSAIInformation PRESENCE optional }| + { ID id-MaskedIMEISV CRITICALITY ignore TYPE MaskedIMEISV PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UPLINK NAS TRANSPORT +-- +-- ************************************************************** + +UplinkNASTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkNASTransport-IEs} }, + ... +} + +-- WS modification, add a definition for messages +W-AGFIdentityInformation ::= OCTET STRING +TNGFIdentityInformation ::= OCTET STRING +TWIFIdentityInformation ::= OCTET STRING + +UplinkNASTransport-IEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE mandatory }| +-- WS modification, add a definition for messages +-- { ID id-W-AGFIdentityInformation CRITICALITY reject TYPE OCTET STRING PRESENCE optional }| + { ID id-W-AGFIdentityInformation CRITICALITY reject TYPE W-AGFIdentityInformation PRESENCE optional }| +-- { ID id-TNGFIdentityInformation CRITICALITY reject TYPE OCTET STRING PRESENCE optional }| + { ID id-TNGFIdentityInformation CRITICALITY reject TYPE TNGFIdentityInformation PRESENCE optional }| +-- { ID id-TWIFIdentityInformation CRITICALITY reject TYPE OCTET STRING PRESENCE optional }, + { ID id-TWIFIdentityInformation CRITICALITY reject TYPE TWIFIdentityInformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- NAS NON DELIVERY INDICATION +-- +-- ************************************************************** + +NASNonDeliveryIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {NASNonDeliveryIndication-IEs} }, + ... +} + +NASNonDeliveryIndication-IEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- REROUTE NAS REQUEST +-- +-- ************************************************************** + +RerouteNASRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {RerouteNASRequest-IEs} }, + ... +} + +-- WS modification, add a definition for NGAP Message +NGAP-Message ::= OCTET STRING + +RerouteNASRequest-IEs NGAP-PROTOCOL-IES ::= { + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE optional }| +-- WS modification, add a definition for NGAP Message +-- { ID id-NGAP-Message CRITICALITY reject TYPE OCTET STRING PRESENCE mandatory }| + { ID id-NGAP-Message CRITICALITY reject TYPE NGAP-Message PRESENCE mandatory }| + { ID id-AMFSetID CRITICALITY reject TYPE AMFSetID PRESENCE mandatory }| + { ID id-AllowedNSSAI CRITICALITY reject TYPE AllowedNSSAI PRESENCE optional }| + { ID id-SourceToTarget-AMFInformationReroute CRITICALITY ignore TYPE SourceToTarget-AMFInformationReroute PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- INTERFACE MANAGEMENT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- NG Setup Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- NG SETUP REQUEST +-- +-- ************************************************************** + +NGSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {NGSetupRequestIEs} }, + ... +} + +NGSetupRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-GlobalRANNodeID CRITICALITY reject TYPE GlobalRANNodeID PRESENCE mandatory }| + { ID id-RANNodeName CRITICALITY ignore TYPE RANNodeName PRESENCE optional }| + { ID id-SupportedTAList CRITICALITY reject TYPE SupportedTAList PRESENCE mandatory }| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE mandatory }| + { ID id-UERetentionInformation CRITICALITY ignore TYPE UERetentionInformation PRESENCE optional }| + { ID id-NB-IoT-DefaultPagingDRX CRITICALITY ignore TYPE NB-IoT-DefaultPagingDRX PRESENCE optional }| + { ID id-Extended-RANNodeName CRITICALITY ignore TYPE Extended-RANNodeName PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- NG SETUP RESPONSE +-- +-- ************************************************************** + +NGSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {NGSetupResponseIEs} }, + ... +} + +NGSetupResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMFName CRITICALITY reject TYPE AMFName PRESENCE mandatory }| + { ID id-ServedGUAMIList CRITICALITY reject TYPE ServedGUAMIList PRESENCE mandatory }| + { ID id-RelativeAMFCapacity CRITICALITY ignore TYPE RelativeAMFCapacity PRESENCE mandatory }| + { ID id-PLMNSupportList CRITICALITY reject TYPE PLMNSupportList PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-UERetentionInformation CRITICALITY ignore TYPE UERetentionInformation PRESENCE optional }| + { ID id-IAB-Supported CRITICALITY ignore TYPE IAB-Supported PRESENCE optional }| + { ID id-Extended-AMFName CRITICALITY ignore TYPE Extended-AMFName PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- NG SETUP FAILURE +-- +-- ************************************************************** + +NGSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {NGSetupFailureIEs} }, + ... +} + +NGSetupFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RAN Configuration Update Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- RAN CONFIGURATION UPDATE +-- +-- ************************************************************** + +RANConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {RANConfigurationUpdateIEs} }, + ... +} + +RANConfigurationUpdateIEs NGAP-PROTOCOL-IES ::= { + { ID id-RANNodeName CRITICALITY ignore TYPE RANNodeName PRESENCE optional }| + { ID id-SupportedTAList CRITICALITY reject TYPE SupportedTAList PRESENCE optional }| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE optional }| + { ID id-GlobalRANNodeID CRITICALITY ignore TYPE GlobalRANNodeID PRESENCE optional }| + { ID id-NGRAN-TNLAssociationToRemoveList CRITICALITY reject TYPE NGRAN-TNLAssociationToRemoveList PRESENCE optional }| + { ID id-NB-IoT-DefaultPagingDRX CRITICALITY ignore TYPE NB-IoT-DefaultPagingDRX PRESENCE optional }| + { ID id-Extended-RANNodeName CRITICALITY ignore TYPE Extended-RANNodeName PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RAN CONFIGURATION UPDATE ACKNOWLEDGE +-- +-- ************************************************************** + +RANConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {RANConfigurationUpdateAcknowledgeIEs} }, + ... +} + +RANConfigurationUpdateAcknowledgeIEs NGAP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RAN CONFIGURATION UPDATE FAILURE +-- +-- ************************************************************** + +RANConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {RANConfigurationUpdateFailureIEs} }, + ... +} + +RANConfigurationUpdateFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, +... +} + +-- ************************************************************** +-- +-- AMF Configuration Update Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- AMF CONFIGURATION UPDATE +-- +-- ************************************************************** + +AMFConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {AMFConfigurationUpdateIEs} }, + ... +} + +AMFConfigurationUpdateIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMFName CRITICALITY reject TYPE AMFName PRESENCE optional }| + { ID id-ServedGUAMIList CRITICALITY reject TYPE ServedGUAMIList PRESENCE optional }| + { ID id-RelativeAMFCapacity CRITICALITY ignore TYPE RelativeAMFCapacity PRESENCE optional }| + { ID id-PLMNSupportList CRITICALITY reject TYPE PLMNSupportList PRESENCE optional }| + { ID id-AMF-TNLAssociationToAddList CRITICALITY ignore TYPE AMF-TNLAssociationToAddList PRESENCE optional }| + { ID id-AMF-TNLAssociationToRemoveList CRITICALITY ignore TYPE AMF-TNLAssociationToRemoveList PRESENCE optional }| + { ID id-AMF-TNLAssociationToUpdateList CRITICALITY ignore TYPE AMF-TNLAssociationToUpdateList PRESENCE optional }| + { ID id-Extended-AMFName CRITICALITY ignore TYPE Extended-AMFName PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- AMF CONFIGURATION UPDATE ACKNOWLEDGE +-- +-- ************************************************************** + +AMFConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {AMFConfigurationUpdateAcknowledgeIEs} }, + ... +} + +AMFConfigurationUpdateAcknowledgeIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-TNLAssociationSetupList CRITICALITY ignore TYPE AMF-TNLAssociationSetupList PRESENCE optional }| + { ID id-AMF-TNLAssociationFailedToSetupList CRITICALITY ignore TYPE TNLAssociationList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- AMF CONFIGURATION UPDATE FAILURE +-- +-- ************************************************************** + +AMFConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {AMFConfigurationUpdateFailureIEs} }, + ... +} + +AMFConfigurationUpdateFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- AMF Status Indication Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- AMF STATUS INDICATION +-- +-- ************************************************************** + +AMFStatusIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {AMFStatusIndicationIEs} }, + ... +} + +AMFStatusIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-UnavailableGUAMIList CRITICALITY reject TYPE UnavailableGUAMIList PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- NG Reset Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- NG RESET +-- +-- ************************************************************** + +NGReset ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {NGResetIEs} }, + ... +} + +NGResetIEs NGAP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-ResetType CRITICALITY reject TYPE ResetType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- NG RESET ACKNOWLEDGE +-- +-- ************************************************************** + +NGResetAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {NGResetAcknowledgeIEs} }, + ... +} + +NGResetAcknowledgeIEs NGAP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalNG-connectionList CRITICALITY ignore TYPE UE-associatedLogicalNG-connectionList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Error Indication Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- ERROR INDICATION +-- +-- ************************************************************** + +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} }, + ... +} + +ErrorIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE optional }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-FiveG-S-TMSI CRITICALITY ignore TYPE FiveG-S-TMSI PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- OVERLOAD START +-- +-- ************************************************************** + +OverloadStart ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {OverloadStartIEs} }, + ... +} + +OverloadStartIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMFOverloadResponse CRITICALITY reject TYPE OverloadResponse PRESENCE optional }| + { ID id-AMFTrafficLoadReductionIndication CRITICALITY ignore TYPE TrafficLoadReductionIndication PRESENCE optional }| + { ID id-OverloadStartNSSAIList CRITICALITY ignore TYPE OverloadStartNSSAIList PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- OVERLOAD STOP +-- +-- ************************************************************** + +OverloadStop ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {OverloadStopIEs} }, + ... +} + +OverloadStopIEs NGAP-PROTOCOL-IES ::= { + ... +} + +-- ************************************************************** +-- +-- CONFIGURATION TRANSFER ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UPLINK RAN CONFIGURATION TRANSFER +-- +-- ************************************************************** + +UplinkRANConfigurationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkRANConfigurationTransferIEs} }, + ... +} + +UplinkRANConfigurationTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferUL CRITICALITY ignore TYPE SONConfigurationTransfer PRESENCE optional }| + { ID id-ENDC-SONConfigurationTransferUL CRITICALITY ignore TYPE EN-DCSONConfigurationTransfer PRESENCE optional }| + { ID id-IntersystemSONConfigurationTransferUL CRITICALITY ignore TYPE IntersystemSONConfigurationTransfer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK RAN CONFIGURATION TRANSFER +-- +-- ************************************************************** + +DownlinkRANConfigurationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkRANConfigurationTransferIEs} }, + ... +} + +DownlinkRANConfigurationTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferDL CRITICALITY ignore TYPE SONConfigurationTransfer PRESENCE optional }| + { ID id-ENDC-SONConfigurationTransferDL CRITICALITY ignore TYPE EN-DCSONConfigurationTransfer PRESENCE optional }| + { ID id-IntersystemSONConfigurationTransferDL CRITICALITY ignore TYPE IntersystemSONConfigurationTransfer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- WARNING MESSAGE TRANSMISSION ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Write-Replace Warning Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- WRITE-REPLACE WARNING REQUEST +-- +-- ************************************************************** + +WriteReplaceWarningRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {WriteReplaceWarningRequestIEs} }, + ... +} + +WriteReplaceWarningRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-WarningAreaList CRITICALITY ignore TYPE WarningAreaList PRESENCE optional }| + { ID id-RepetitionPeriod CRITICALITY reject TYPE RepetitionPeriod PRESENCE mandatory }| + { ID id-NumberOfBroadcastsRequested CRITICALITY reject TYPE NumberOfBroadcastsRequested PRESENCE mandatory }| + { ID id-WarningType CRITICALITY ignore TYPE WarningType PRESENCE optional }| + { ID id-WarningSecurityInfo CRITICALITY ignore TYPE WarningSecurityInfo PRESENCE optional }| + { ID id-DataCodingScheme CRITICALITY ignore TYPE DataCodingScheme PRESENCE optional }| + { ID id-WarningMessageContents CRITICALITY ignore TYPE WarningMessageContents PRESENCE optional }| + { ID id-ConcurrentWarningMessageInd CRITICALITY reject TYPE ConcurrentWarningMessageInd PRESENCE optional }| + { ID id-WarningAreaCoordinates CRITICALITY ignore TYPE WarningAreaCoordinates PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- WRITE-REPLACE WARNING RESPONSE +-- +-- ************************************************************** + +WriteReplaceWarningResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {WriteReplaceWarningResponseIEs} }, + ... +} + +WriteReplaceWarningResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCompletedAreaList CRITICALITY ignore TYPE BroadcastCompletedAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS Cancel Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PWS CANCEL REQUEST +-- +-- ************************************************************** + +PWSCancelRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PWSCancelRequestIEs} }, + ... +} + +PWSCancelRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-WarningAreaList CRITICALITY ignore TYPE WarningAreaList PRESENCE optional }| + { ID id-CancelAllWarningMessages CRITICALITY reject TYPE CancelAllWarningMessages PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS CANCEL RESPONSE +-- +-- ************************************************************** + +PWSCancelResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PWSCancelResponseIEs} }, + ... +} + +PWSCancelResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCancelledAreaList CRITICALITY ignore TYPE BroadcastCancelledAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS Restart Indication Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PWS RESTART INDICATION +-- +-- ************************************************************** + +PWSRestartIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PWSRestartIndicationIEs} }, + ... +} + +PWSRestartIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-CellIDListForRestart CRITICALITY reject TYPE CellIDListForRestart PRESENCE mandatory }| + { ID id-GlobalRANNodeID CRITICALITY reject TYPE GlobalRANNodeID PRESENCE mandatory }| + { ID id-TAIListForRestart CRITICALITY reject TYPE TAIListForRestart PRESENCE mandatory }| + { ID id-EmergencyAreaIDListForRestart CRITICALITY reject TYPE EmergencyAreaIDListForRestart PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS Failure Indication Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PWS FAILURE INDICATION +-- +-- ************************************************************** + +PWSFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PWSFailureIndicationIEs} }, + ... +} + +PWSFailureIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-PWSFailedCellIDList CRITICALITY reject TYPE PWSFailedCellIDList PRESENCE mandatory }| + { ID id-GlobalRANNodeID CRITICALITY reject TYPE GlobalRANNodeID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- NRPPA TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DOWNLINK UE ASSOCIATED NRPPA TRANSPORT +-- +-- ************************************************************** + +DownlinkUEAssociatedNRPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkUEAssociatedNRPPaTransportIEs} }, + ... +} + +DownlinkUEAssociatedNRPPaTransportIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RoutingID CRITICALITY reject TYPE RoutingID PRESENCE mandatory }| + { ID id-NRPPa-PDU CRITICALITY reject TYPE NRPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK UE ASSOCIATED NRPPA TRANSPORT +-- +-- ************************************************************** + +UplinkUEAssociatedNRPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkUEAssociatedNRPPaTransportIEs} }, + ... +} + +UplinkUEAssociatedNRPPaTransportIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RoutingID CRITICALITY reject TYPE RoutingID PRESENCE mandatory }| + { ID id-NRPPa-PDU CRITICALITY reject TYPE NRPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK NON UE ASSOCIATED NRPPA TRANSPORT +-- +-- ************************************************************** + +DownlinkNonUEAssociatedNRPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkNonUEAssociatedNRPPaTransportIEs} }, + ... +} + +DownlinkNonUEAssociatedNRPPaTransportIEs NGAP-PROTOCOL-IES ::= { + { ID id-RoutingID CRITICALITY reject TYPE RoutingID PRESENCE mandatory }| + { ID id-NRPPa-PDU CRITICALITY reject TYPE NRPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK NON UE ASSOCIATED NRPPA TRANSPORT +-- +-- ************************************************************** + +UplinkNonUEAssociatedNRPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkNonUEAssociatedNRPPaTransportIEs} }, + ... +} + +UplinkNonUEAssociatedNRPPaTransportIEs NGAP-PROTOCOL-IES ::= { + { ID id-RoutingID CRITICALITY reject TYPE RoutingID PRESENCE mandatory }| + { ID id-NRPPa-PDU CRITICALITY reject TYPE NRPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- TRACE ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- TRACE START +-- +-- ************************************************************** + +TraceStart ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {TraceStartIEs} }, + ... +} + +TraceStartIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- TRACE FAILURE INDICATION +-- +-- ************************************************************** + +TraceFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {TraceFailureIndicationIEs} }, + ... +} + +TraceFailureIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-NGRANTraceID CRITICALITY ignore TYPE NGRANTraceID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DEACTIVATE TRACE +-- +-- ************************************************************** + +DeactivateTrace ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DeactivateTraceIEs} }, + ... +} + +DeactivateTraceIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-NGRANTraceID CRITICALITY ignore TYPE NGRANTraceID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- CELL TRAFFIC TRACE +-- +-- ************************************************************** + +CellTrafficTrace ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {CellTrafficTraceIEs} }, + ... +} + +CellTrafficTraceIEs NGAP-PROTOCOL-IES ::= { + {ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + {ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + {ID id-NGRANTraceID CRITICALITY ignore TYPE NGRANTraceID PRESENCE mandatory }| + {ID id-NGRAN-CGI CRITICALITY ignore TYPE NGRAN-CGI PRESENCE mandatory }| + {ID id-TraceCollectionEntityIPAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE mandatory }| + {ID id-PrivacyIndicator CRITICALITY ignore TYPE PrivacyIndicator PRESENCE optional }| + {ID id-TraceCollectionEntityURI CRITICALITY ignore TYPE URI-address PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- LOCATION REPORTING ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- LOCATION REPORTING CONTROL +-- +-- ************************************************************** + +LocationReportingControl ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {LocationReportingControlIEs} }, + ... +} + +LocationReportingControlIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-LocationReportingRequestType CRITICALITY ignore TYPE LocationReportingRequestType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- LOCATION REPORTING FAILURE INDICATION +-- +-- ************************************************************** + +LocationReportingFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {LocationReportingFailureIndicationIEs} }, + ... +} + +LocationReportingFailureIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- LOCATION REPORT +-- +-- ************************************************************** + +LocationReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {LocationReportIEs} }, + ... +} + +LocationReportIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE mandatory }| + { ID id-UEPresenceInAreaOfInterestList CRITICALITY ignore TYPE UEPresenceInAreaOfInterestList PRESENCE optional }| + { ID id-LocationReportingRequestType CRITICALITY ignore TYPE LocationReportingRequestType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE TNLA BINDING ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE TNLA BINDING RELEASE REQUEST +-- +-- ************************************************************** + +UETNLABindingReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UETNLABindingReleaseRequestIEs} }, + ... +} + +UETNLABindingReleaseRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY MANAGEMENT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY INFO INDICATION +-- +-- ************************************************************** + +UERadioCapabilityInfoIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UERadioCapabilityInfoIndicationIEs} }, + ... +} + +UERadioCapabilityInfoIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE mandatory }| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional }| + { ID id-UERadioCapability-EUTRA-Format CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Radio Capability Check Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY CHECK REQUEST +-- +-- ************************************************************** + +UERadioCapabilityCheckRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UERadioCapabilityCheckRequestIEs} }, + ... +} + +UERadioCapabilityCheckRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY CHECK RESPONSE +-- +-- ************************************************************** + +UERadioCapabilityCheckResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UERadioCapabilityCheckResponseIEs} }, + ... +} + +UERadioCapabilityCheckResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-IMSVoiceSupportIndicator CRITICALITY reject TYPE IMSVoiceSupportIndicator PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PRIVATE MESSAGE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PRIVATE MESSAGE +-- +-- ************************************************************** + +PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container { { PrivateMessageIEs } }, + ... +} + +PrivateMessageIEs NGAP-PRIVATE-IES ::= { + ... +} + + +-- ************************************************************** +-- +-- DATA USAGE REPORTING ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- SECONDARY RAT DATA USAGE REPORT +-- +-- ************************************************************** + +SecondaryRATDataUsageReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {SecondaryRATDataUsageReportIEs} }, + ... +} + +SecondaryRATDataUsageReportIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY ignore TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY ignore TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-PDUSessionResourceSecondaryRATUsageList CRITICALITY ignore TYPE PDUSessionResourceSecondaryRATUsageList PRESENCE mandatory }| + { ID id-HandoverFlag CRITICALITY ignore TYPE HandoverFlag PRESENCE optional }| + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIM INFORMATION TRANSFER ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UPLINK RIM INFORMATION TRANSFER +-- +-- ************************************************************** + +UplinkRIMInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkRIMInformationTransferIEs} }, + ... +} + +UplinkRIMInformationTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-RIMInformationTransfer CRITICALITY ignore TYPE RIMInformationTransfer PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- DOWNLINK RIM INFORMATION TRANSFER +-- +-- ************************************************************** + +DownlinkRIMInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkRIMInformationTransferIEs} }, + ... +} + +DownlinkRIMInformationTransferIEs NGAP-PROTOCOL-IES ::= { + { ID id-RIMInformationTransfer CRITICALITY ignore TYPE RIMInformationTransfer PRESENCE optional }, + + ... +} + +-- ************************************************************** +-- +-- Connection Establishment Indication +-- +-- ************************************************************** + +ConnectionEstablishmentIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ConnectionEstablishmentIndicationIEs} }, + ... +} + +ConnectionEstablishmentIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-EndIndication CRITICALITY ignore TYPE EndIndication PRESENCE optional }| + { ID id-S-NSSAI CRITICALITY ignore TYPE S-NSSAI PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY ignore TYPE AllowedNSSAI PRESENCE optional }| + { ID id-UE-DifferentiationInfo CRITICALITY ignore TYPE UE-DifferentiationInfo PRESENCE optional }| + { ID id-DL-CP-SecurityInformation CRITICALITY ignore TYPE DL-CP-SecurityInformation PRESENCE optional }| + { ID id-NB-IoT-UEPriority CRITICALITY ignore TYPE NB-IoT-UEPriority PRESENCE optional }| + { ID id-Enhanced-CoverageRestriction CRITICALITY ignore TYPE Enhanced-CoverageRestriction PRESENCE optional }| + { ID id-CEmodeBrestricted CRITICALITY ignore TYPE CEmodeBrestricted PRESENCE optional }| + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE optional }| + { ID id-MaskedIMEISV CRITICALITY ignore TYPE MaskedIMEISV PRESENCE optional }| + { ID id-OldAMF CRITICALITY reject TYPE AMFName PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY ID MAPPING ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY ID MAPPING REQUEST +-- +-- ************************************************************** + +UERadioCapabilityIDMappingRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UERadioCapabilityIDMappingRequestIEs} }, + ... +} + +UERadioCapabilityIDMappingRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY ID MAPPING RESPONSE +-- +-- ************************************************************** + +UERadioCapabilityIDMappingResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UERadioCapabilityIDMappingResponseIEs} }, + ... +} + +UERadioCapabilityIDMappingResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-UERadioCapabilityID CRITICALITY reject TYPE UERadioCapabilityID PRESENCE mandatory }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- AMF CP Relocation Indication +-- +-- ************************************************************** + +AMFCPRelocationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { AMFCPRelocationIndicationIEs} }, + ... +} + +AMFCPRelocationIndicationIEs NGAP-PROTOCOL-IES ::= { + { ID id-AMF-UE-NGAP-ID CRITICALITY reject TYPE AMF-UE-NGAP-ID PRESENCE mandatory }| + { ID id-RAN-UE-NGAP-ID CRITICALITY reject TYPE RAN-UE-NGAP-ID PRESENCE mandatory }| + { ID id-S-NSSAI CRITICALITY ignore TYPE S-NSSAI PRESENCE optional }| + { ID id-AllowedNSSAI CRITICALITY ignore TYPE AllowedNSSAI PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MBS SESSION MANAGEMENT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Broadcast Session Setup Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- BROADCAST SESSION SETUP REQUEST +-- +-- ************************************************************** + +BroadcastSessionSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionSetupRequestIEs} }, + ... +} +-- WS modification: define a dedicated type +MBSSessionSetupOrModRequestTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBSSessionSetupOrModRequestTransfer) + +BroadcastSessionSetupRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-S-NSSAI CRITICALITY reject TYPE S-NSSAI PRESENCE mandatory }| + { ID id-MBS-ServiceArea CRITICALITY reject TYPE MBS-ServiceArea PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionSetupRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBSSessionSetupOrModRequestTransfer) PRESENCE mandatory }, + { ID id-MBSSessionSetupRequestTransfer CRITICALITY reject TYPE MBSSessionSetupOrModRequestTransfer-OCTET-STRING PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- BROADCAST SESSION SETUP RESPONSE +-- +-- ************************************************************** + +BroadcastSessionSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionSetupResponseIEs} }, + ... +} + +-- WS modification: define a dedicated type +MBSSessionSetupOrModResponseTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBSSessionSetupOrModResponseTransfer) + +BroadcastSessionSetupResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionSetupResponseTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBSSessionSetupOrModResponseTransfer) PRESENCE optional }| + { ID id-MBSSessionSetupResponseTransfer CRITICALITY reject TYPE MBSSessionSetupOrModResponseTransfer-OCTET-STRING PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- BROADCAST SESSION SETUP FAILURE +-- +-- ************************************************************** + +BroadcastSessionSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionSetupFailureIEs} }, + ... +} + +-- WS modification: define a dedicated type +MBSSessionSetupOrModFailureTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBSSessionSetupOrModFailureTransfer) + +BroadcastSessionSetupFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionSetupFailureTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBSSessionSetupOrModFailureTransfer ) PRESENCE optional }| + { ID id-MBSSessionSetupFailureTransfer CRITICALITY reject TYPE MBSSessionSetupOrModFailureTransfer-OCTET-STRING PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Broadcast Session Modification Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- BROADCAST SESSION MODIFICATION REQUEST +-- +-- ************************************************************** + +BroadcastSessionModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionModificationRequestIEs} }, + ... +} + +BroadcastSessionModificationRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-ServiceArea CRITICALITY reject TYPE MBS-ServiceArea PRESENCE optional }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionModificationRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBSSessionSetupOrModRequestTransfer) PRESENCE optional }, + { ID id-MBSSessionModificationRequestTransfer CRITICALITY reject TYPE MBSSessionSetupOrModRequestTransfer-OCTET-STRING PRESENCE optional }, ... +} + +-- ************************************************************** +-- +-- BROADCAST SESSION MODIFICATION RESPONSE +-- +-- ************************************************************** + +BroadcastSessionModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionModificationResponseIEs} }, + ... +} + +BroadcastSessionModificationResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionModificationResponseTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBSSessionSetupOrModResponseTransfer) PRESENCE optional }| + { ID id-MBSSessionModificationResponseTransfer CRITICALITY reject TYPE MBSSessionSetupOrModResponseTransfer-OCTET-STRING PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- BROADCAST SESSION MODIFICATION FAILURE +-- +-- ************************************************************** + +BroadcastSessionModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionModificationFailureIEs} }, + ... +} + +BroadcastSessionModificationFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionModificationFailureTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBSSessionSetupOrModFailureTransfer) PRESENCE optional }| + { ID id-MBSSessionModificationFailureTransfer CRITICALITY reject TYPE MBSSessionSetupOrModFailureTransfer-OCTET-STRING PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Broadcast Session Release Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- BROADCAST SESSION RELEASE REQUEST +-- +-- ************************************************************** + +BroadcastSessionReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionReleaseRequestIEs} }, + ... +} + +BroadcastSessionReleaseRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Broadcast Session Release Required Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- BROADCAST SESSION RELEASE REQUIRED +-- +-- ************************************************************** + +BroadcastSessionReleaseRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionReleaseRequiredIEs} }, + ... +} + +BroadcastSessionReleaseRequiredIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- BROADCAST SESSION RELEASE RESPONSE +-- +-- ************************************************************** + +BroadcastSessionReleaseResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {BroadcastSessionReleaseResponseIEs} }, + ... +} + +-- WS modification: defien a dedicated type +MBSSessionReleaseResponseTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBSSessionReleaseResponseTransfer) + +BroadcastSessionReleaseResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MBSSessionReleaseResponseTransfer CRITICALITY ignore TYPE OCTET STRING (CONTAINING MBSSessionReleaseResponseTransfer) PRESENCE optional }| + { ID id-MBSSessionReleaseResponseTransfer CRITICALITY ignore TYPE MBSSessionReleaseResponseTransfer-OCTET-STRING PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- Distribution Setup Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DISTRIBUTION SETUP REQUEST +-- +-- ************************************************************** + +DistributionSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DistributionSetupRequestIEs} }, + ... +} + +-- WS modification: define a dedicated type +MBS-DistributionSetupRequestTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBS-DistributionSetupRequestTransfer) + +DistributionSetupRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| +-- WS modification: define a dedicated type +-- { ID id-MBS-DistributionSetupRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBS-DistributionSetupRequestTransfer) PRESENCE mandatory }, + { ID id-MBS-DistributionSetupRequestTransfer CRITICALITY reject TYPE MBS-DistributionSetupRequestTransfer-OCTET-STRING PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DISTRIBUTION SETUP RESPONSE +-- +-- ************************************************************** + +DistributionSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DistributionSetupResponseIEs} }, + ... +} + +-- WS modification: define a dedicated type +MBS-DistributionSetupResponseTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBS-DistributionSetupResponseTransfer) + +DistributionSetupResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| +-- WS modification: define a dedicated type +-- { ID id-MBS-DistributionSetupResponseTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBS-DistributionSetupResponseTransfer) PRESENCE mandatory }| + { ID id-MBS-DistributionSetupResponseTransfer CRITICALITY reject TYPE MBS-DistributionSetupResponseTransfer-OCTET-STRING PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- DISTRIBUTION SETUP FAILURE +-- +-- ************************************************************** + +DistributionSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DistributionSetupFailureIEs} }, + ... +} + +-- WS modification: define a dedicated type +MBS-DistributionSetupUnsuccessfulTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBS-DistributionSetupUnsuccessfulTransfer) + +DistributionSetupFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| +-- WS modification: define a dedicated type +-- { ID id-MBS-DistributionSetupUnsuccessfulTransfer CRITICALITY ignore TYPE OCTET STRING (CONTAINING MBS-DistributionSetupUnsuccessfulTransfer) PRESENCE mandatory }| + { ID id-MBS-DistributionSetupUnsuccessfulTransfer CRITICALITY ignore TYPE MBS-DistributionSetupUnsuccessfulTransfer-OCTET-STRING PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Distribution Release Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DISTRIBUTION RELEASE REQUEST +-- +-- ************************************************************** + +DistributionReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DistributionReleaseRequestIEs} }, + ... +} + +-- WS modification: define a dedicated type +MBS-DistributionReleaseRequestTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MBS-DistributionReleaseRequestTransfer) + +DistributionReleaseRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| +-- WS modification: define a dedicated type +-- { ID id-MBS-DistributionReleaseRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MBS-DistributionReleaseRequestTransfer) PRESENCE mandatory }| + { ID id-MBS-DistributionReleaseRequestTransfer CRITICALITY reject TYPE MBS-DistributionReleaseRequestTransfer-OCTET-STRING PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DISTRIBUTION RELEASE RESPONSE +-- +-- ************************************************************** + +DistributionReleaseResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DistributionReleaseResponseIEs} }, + ... +} + +DistributionReleaseResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Multicast Session Activation Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MULTICAST SESSION ACTIVATION REQUEST +-- +-- ************************************************************** + +MulticastSessionActivationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionActivationRequestIEs} }, + ... +} + +-- WS modification: define a dedicated type +MulticastSessionActivationRequestTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MulticastSessionActivationRequestTransfer) + +MulticastSessionActivationRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MulticastSessionActivationRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MulticastSessionActivationRequestTransfer) PRESENCE mandatory }, + { ID id-MulticastSessionActivationRequestTransfer CRITICALITY reject TYPE MulticastSessionActivationRequestTransfer-OCTET-STRING PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- MULTICAST SESSION ACTIVATION RESPONSE +-- +-- ************************************************************** + +MulticastSessionActivationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionActivationResponseIEs} }, + ... +} + +MulticastSessionActivationResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MULTICAST SESSION ACTIVATION FAILURE +-- +-- ************************************************************** + +MulticastSessionActivationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionActivationFailureIEs} }, + ... +} + +MulticastSessionActivationFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Multicast Session Deactivation Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MULTICAST SESSION DEACTIVATION REQUEST +-- +-- ************************************************************** + +MulticastSessionDeactivationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionDeactivationRequestIEs} }, + ... +} + +-- WS modification: define a dedicated type +MulticastSessionDeactivationRequestTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MulticastSessionDeactivationRequestTransfer) + +MulticastSessionDeactivationRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| +-- WS modification: define a dedicated type +-- { ID id-MulticastSessionDeactivationRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MulticastSessionDeactivationRequestTransfer) PRESENCE mandatory }, + { ID id-MulticastSessionDeactivationRequestTransfer CRITICALITY reject TYPE MulticastSessionDeactivationRequestTransfer-OCTET-STRING PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- MULTICAST SESSION DEACTIVATION RESPONSE +-- +-- ************************************************************** + +MulticastSessionDeactivationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionDeactivationResponseIEs} }, + ... +} + +MulticastSessionDeactivationResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Multicast Session Update Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MULTICAST SESSION UPDATE REQUEST +-- +-- ************************************************************** + +MulticastSessionUpdateRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionUpdateRequestIEs} }, + ... +} + +-- WS modification: define a dedicated type +MulticastSessionUpdateRequestTransfer-OCTET-STRING ::= OCTET STRING (CONTAINING MulticastSessionUpdateRequestTransfer) + +MulticastSessionUpdateRequestIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| +-- WS modification: define a dedicated type +-- { ID id-MulticastSessionUpdateRequestTransfer CRITICALITY reject TYPE OCTET STRING (CONTAINING MulticastSessionUpdateRequestTransfer) PRESENCE mandatory }, + { ID id-MulticastSessionUpdateRequestTransfer CRITICALITY reject TYPE MulticastSessionUpdateRequestTransfer-OCTET-STRING PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- MULTICAST SESSION UPDATE RESPONSE +-- +-- ************************************************************** + +MulticastSessionUpdateResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionUpdateResponseIEs} }, + ... +} + +MulticastSessionUpdateResponseIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MULTICAST SESSION UPDATE FAILURE +-- +-- ************************************************************** + +MulticastSessionUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastSessionUpdateFailureIEs} }, + ... +} + +MulticastSessionUpdateFailureIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY reject TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-AreaSessionID CRITICALITY reject TYPE MBS-AreaSessionID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MULTICAST GROUP PAGING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MULTICAST GROUP PAGING +-- +-- ************************************************************** + +MulticastGroupPaging ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MulticastGroupPagingIEs} }, + ... +} + +MulticastGroupPagingIEs NGAP-PROTOCOL-IES ::= { + { ID id-MBS-SessionID CRITICALITY ignore TYPE MBS-SessionID PRESENCE mandatory }| + { ID id-MBS-ServiceArea CRITICALITY ignore TYPE MBS-ServiceArea PRESENCE optional }| + { ID id-MulticastGroupPagingAreaList CRITICALITY ignore TYPE MulticastGroupPagingAreaList PRESENCE mandatory }, + ... +} + + +END diff --git a/ttcn/LibNGAP/lib/asn1/NGAP_PDU_Descriptions.asn b/ttcn/LibNGAP/lib/asn1/NGAP_PDU_Descriptions.asn new file mode 100644 index 0000000000000000000000000000000000000000..dcf4704811dad867b97dde12640f59a19355c34b --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/NGAP_PDU_Descriptions.asn @@ -0,0 +1,888 @@ +-- 3GPP TS 38.413 V17.5.0 (2023-06) +-- 9.4.3 Elementary Procedure Definitions +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +NGAP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-Access (22) modules (3) ngap (1) version1 (1) ngap-PDU-Descriptions (0)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + Criticality, + ProcedureCode +FROM NGAP-CommonDataTypes + + AMFConfigurationUpdate, + AMFConfigurationUpdateAcknowledge, + AMFConfigurationUpdateFailure, + AMFCPRelocationIndication, + AMFStatusIndication, + BroadcastSessionModificationFailure, + BroadcastSessionModificationRequest, + BroadcastSessionModificationResponse, + BroadcastSessionReleaseRequest, + BroadcastSessionReleaseRequired, + BroadcastSessionReleaseResponse, + BroadcastSessionSetupFailure, + BroadcastSessionSetupRequest, + BroadcastSessionSetupResponse, + CellTrafficTrace, + ConnectionEstablishmentIndication, + DeactivateTrace, + DistributionReleaseRequest, + DistributionReleaseResponse, + DistributionSetupFailure, + DistributionSetupRequest, + DistributionSetupResponse, + DownlinkNASTransport, + DownlinkNonUEAssociatedNRPPaTransport, + DownlinkRANConfigurationTransfer, + DownlinkRANEarlyStatusTransfer, + DownlinkRANStatusTransfer, + DownlinkUEAssociatedNRPPaTransport, + ErrorIndication, + HandoverCancel, + HandoverCancelAcknowledge, + HandoverCommand, + HandoverFailure, + HandoverNotify, + HandoverPreparationFailure, + HandoverRequest, + HandoverRequestAcknowledge, + HandoverRequired, + HandoverSuccess, + InitialContextSetupFailure, + InitialContextSetupRequest, + InitialContextSetupResponse, + InitialUEMessage, + LocationReport, + LocationReportingControl, + LocationReportingFailureIndication, + MulticastSessionActivationFailure, + MulticastSessionActivationRequest, + MulticastSessionActivationResponse, + MulticastSessionDeactivationRequest, + MulticastSessionDeactivationResponse, + MulticastSessionUpdateFailure, + MulticastSessionUpdateRequest, + MulticastSessionUpdateResponse, + MulticastGroupPaging, + NASNonDeliveryIndication, + NGReset, + NGResetAcknowledge, + NGSetupFailure, + NGSetupRequest, + NGSetupResponse, + OverloadStart, + OverloadStop, + Paging, + PathSwitchRequest, + PathSwitchRequestAcknowledge, + PathSwitchRequestFailure, + PDUSessionResourceModifyConfirm, + PDUSessionResourceModifyIndication, + PDUSessionResourceModifyRequest, + PDUSessionResourceModifyResponse, + PDUSessionResourceNotify, + PDUSessionResourceReleaseCommand, + PDUSessionResourceReleaseResponse, + PDUSessionResourceSetupRequest, + PDUSessionResourceSetupResponse, + PrivateMessage, + PWSCancelRequest, + PWSCancelResponse, + PWSFailureIndication, + PWSRestartIndication, + RANConfigurationUpdate, + RANConfigurationUpdateAcknowledge, + RANConfigurationUpdateFailure, + RANCPRelocationIndication, + RerouteNASRequest, + RetrieveUEInformation, + RRCInactiveTransitionReport, + SecondaryRATDataUsageReport, + TraceFailureIndication, + TraceStart, + UEContextModificationFailure, + UEContextModificationRequest, + UEContextModificationResponse, + UEContextReleaseCommand, + UEContextReleaseComplete, + UEContextReleaseRequest, + UEContextResumeRequest, + UEContextResumeResponse, + UEContextResumeFailure, + UEContextSuspendRequest, + UEContextSuspendResponse, + UEContextSuspendFailure, + UEInformationTransfer, + UERadioCapabilityCheckRequest, + UERadioCapabilityCheckResponse, + UERadioCapabilityIDMappingRequest, + UERadioCapabilityIDMappingResponse, + UERadioCapabilityInfoIndication, + UETNLABindingReleaseRequest, + UplinkNASTransport, + UplinkNonUEAssociatedNRPPaTransport, + UplinkRANConfigurationTransfer, + UplinkRANEarlyStatusTransfer, + UplinkRANStatusTransfer, + UplinkUEAssociatedNRPPaTransport, + WriteReplaceWarningRequest, + WriteReplaceWarningResponse, + UplinkRIMInformationTransfer, + DownlinkRIMInformationTransfer + +FROM NGAP-PDU-Contents + + id-AMFConfigurationUpdate, + id-AMFCPRelocationIndication, + id-AMFStatusIndication, + id-BroadcastSessionModification, + id-BroadcastSessionRelease, + id-BroadcastSessionReleaseRequired, + id-BroadcastSessionSetup, + id-CellTrafficTrace, + id-ConnectionEstablishmentIndication, + id-DeactivateTrace, + id-DistributionSetup, + id-DistributionRelease, + id-DownlinkNASTransport, + id-DownlinkNonUEAssociatedNRPPaTransport, + id-DownlinkRANConfigurationTransfer, + id-DownlinkRANEarlyStatusTransfer, + id-DownlinkRANStatusTransfer, + id-DownlinkUEAssociatedNRPPaTransport, + id-ErrorIndication, + id-HandoverCancel, + id-HandoverNotification, + id-HandoverPreparation, + id-HandoverResourceAllocation, + id-HandoverSuccess, + id-InitialContextSetup, + id-InitialUEMessage, + id-LocationReport, + id-LocationReportingControl, + id-LocationReportingFailureIndication, + id-MulticastSessionActivation, + id-MulticastSessionDeactivation, + id-MulticastSessionUpdate, + id-MulticastGroupPaging, + id-NASNonDeliveryIndication, + id-NGReset, + id-NGSetup, + id-OverloadStart, + id-OverloadStop, + id-Paging, + id-PathSwitchRequest, + id-PDUSessionResourceModify, + id-PDUSessionResourceModifyIndication, + id-PDUSessionResourceNotify, + id-PDUSessionResourceRelease, + id-PDUSessionResourceSetup, + id-PrivateMessage, + id-PWSCancel, + id-PWSFailureIndication, + id-PWSRestartIndication, + id-RANConfigurationUpdate, + id-RANCPRelocationIndication, + id-RerouteNASRequest, + id-RetrieveUEInformation, + id-RRCInactiveTransitionReport, + id-SecondaryRATDataUsageReport, + id-TraceFailureIndication, + id-TraceStart, + id-UEContextModification, + id-UEContextRelease, + id-UEContextReleaseRequest, + id-UEContextResume, + id-UEContextSuspend, + id-UEInformationTransfer, + id-UERadioCapabilityCheck, + id-UERadioCapabilityIDMapping, + id-UERadioCapabilityInfoIndication, + id-UETNLABindingRelease, + id-UplinkNASTransport, + id-UplinkNonUEAssociatedNRPPaTransport, + id-UplinkRANConfigurationTransfer, + id-UplinkRANEarlyStatusTransfer, + id-UplinkRANStatusTransfer, + id-UplinkUEAssociatedNRPPaTransport, + id-WriteReplaceWarning, + id-UplinkRIMInformationTransfer, + id-DownlinkRIMInformationTransfer + +FROM NGAP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +NGAP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} + +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +NGAP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode NGAP-ELEMENTARY-PROCEDURE.&procedureCode ({NGAP-ELEMENTARY-PROCEDURES}), + criticality NGAP-ELEMENTARY-PROCEDURE.&criticality ({NGAP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value NGAP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({NGAP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode NGAP-ELEMENTARY-PROCEDURE.&procedureCode ({NGAP-ELEMENTARY-PROCEDURES}), + criticality NGAP-ELEMENTARY-PROCEDURE.&criticality ({NGAP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value NGAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({NGAP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode NGAP-ELEMENTARY-PROCEDURE.&procedureCode ({NGAP-ELEMENTARY-PROCEDURES}), + criticality NGAP-ELEMENTARY-PROCEDURE.&criticality ({NGAP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value NGAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({NGAP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +NGAP-ELEMENTARY-PROCEDURES NGAP-ELEMENTARY-PROCEDURE ::= { + NGAP-ELEMENTARY-PROCEDURES-CLASS-1 | + NGAP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} + +NGAP-ELEMENTARY-PROCEDURES-CLASS-1 NGAP-ELEMENTARY-PROCEDURE ::= { + aMFConfigurationUpdate | + broadcastSessionModification | + broadcastSessionRelease | + broadcastSessionSetup | + distributionSetup | + distributionRelease | + handoverCancel | + handoverPreparation | + handoverResourceAllocation | + initialContextSetup | + multicastSessionActivation | + multicastSessionDeactivation | + multicastSessionUpdate | + nGReset | + nGSetup | + pathSwitchRequest | + pDUSessionResourceModify | + pDUSessionResourceModifyIndication | + pDUSessionResourceRelease | + pDUSessionResourceSetup | + pWSCancel | + rANConfigurationUpdate | + uEContextModification | + uEContextRelease | + uEContextResume | + uEContextSuspend | + uERadioCapabilityCheck | + uERadioCapabilityIDMapping | + writeReplaceWarning, + ... +} + +NGAP-ELEMENTARY-PROCEDURES-CLASS-2 NGAP-ELEMENTARY-PROCEDURE ::= { + aMFCPRelocationIndication | + aMFStatusIndication | + broadcastSessionReleaseRequired | + cellTrafficTrace | + connectionEstablishmentIndication | + deactivateTrace | + downlinkNASTransport | + downlinkNonUEAssociatedNRPPaTransport | + downlinkRANConfigurationTransfer | + downlinkRANEarlyStatusTransfer | + downlinkRANStatusTransfer | + downlinkRIMInformationTransfer | + downlinkUEAssociatedNRPPaTransport | + errorIndication | + handoverNotification | + handoverSuccess | + initialUEMessage | + locationReport | + locationReportingControl | + locationReportingFailureIndication | + multicastGroupPaging | + nASNonDeliveryIndication | + overloadStart | + overloadStop | + paging | + pDUSessionResourceNotify | + privateMessage | + pWSFailureIndication | + pWSRestartIndication | + rANCPRelocationIndication | + rerouteNASRequest | + retrieveUEInformation | + rRCInactiveTransitionReport | + secondaryRATDataUsageReport | + traceFailureIndication | + traceStart | + uEContextReleaseRequest | + uEInformationTransfer | + uERadioCapabilityInfoIndication | + uETNLABindingRelease | + uplinkNASTransport | + uplinkNonUEAssociatedNRPPaTransport | + uplinkRANConfigurationTransfer | + uplinkRANEarlyStatusTransfer | + uplinkRANStatusTransfer | + uplinkRIMInformationTransfer | + uplinkUEAssociatedNRPPaTransport, + ... + +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +aMFConfigurationUpdate NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE AMFConfigurationUpdate + SUCCESSFUL OUTCOME AMFConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME AMFConfigurationUpdateFailure + PROCEDURE CODE id-AMFConfigurationUpdate + CRITICALITY reject +} + +aMFCPRelocationIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE AMFCPRelocationIndication + PROCEDURE CODE id-AMFCPRelocationIndication + CRITICALITY reject +} + +aMFStatusIndication NGAP-ELEMENTARY-PROCEDURE ::={ + INITIATING MESSAGE AMFStatusIndication + PROCEDURE CODE id-AMFStatusIndication + CRITICALITY ignore +} + +broadcastSessionModification NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BroadcastSessionModificationRequest + SUCCESSFUL OUTCOME BroadcastSessionModificationResponse + UNSUCCESSFUL OUTCOME BroadcastSessionModificationFailure + PROCEDURE CODE id-BroadcastSessionModification + CRITICALITY reject +} + +broadcastSessionRelease NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BroadcastSessionReleaseRequest + SUCCESSFUL OUTCOME BroadcastSessionReleaseResponse + PROCEDURE CODE id-BroadcastSessionRelease + CRITICALITY reject +} + +broadcastSessionReleaseRequired NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BroadcastSessionReleaseRequired + PROCEDURE CODE id-BroadcastSessionReleaseRequired + CRITICALITY reject +} + +broadcastSessionSetup NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BroadcastSessionSetupRequest + SUCCESSFUL OUTCOME BroadcastSessionSetupResponse + UNSUCCESSFUL OUTCOME BroadcastSessionSetupFailure + PROCEDURE CODE id-BroadcastSessionSetup + CRITICALITY reject +} + +cellTrafficTrace NGAP-ELEMENTARY-PROCEDURE ::={ + INITIATING MESSAGE CellTrafficTrace + PROCEDURE CODE id-CellTrafficTrace + CRITICALITY ignore +} + +connectionEstablishmentIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ConnectionEstablishmentIndication + PROCEDURE CODE id-ConnectionEstablishmentIndication + CRITICALITY reject +} + +deactivateTrace NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DeactivateTrace + PROCEDURE CODE id-DeactivateTrace + CRITICALITY ignore +} + +distributionSetup NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DistributionSetupRequest + SUCCESSFUL OUTCOME DistributionSetupResponse + UNSUCCESSFUL OUTCOME DistributionSetupFailure + PROCEDURE CODE id-DistributionSetup + CRITICALITY reject +} + +distributionRelease NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DistributionReleaseRequest + SUCCESSFUL OUTCOME DistributionReleaseResponse + PROCEDURE CODE id-DistributionRelease + CRITICALITY reject +} + +downlinkNASTransport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkNASTransport + PROCEDURE CODE id-DownlinkNASTransport + CRITICALITY ignore +} + +downlinkNonUEAssociatedNRPPaTransport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkNonUEAssociatedNRPPaTransport + PROCEDURE CODE id-DownlinkNonUEAssociatedNRPPaTransport + CRITICALITY ignore +} + +downlinkRANConfigurationTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkRANConfigurationTransfer + PROCEDURE CODE id-DownlinkRANConfigurationTransfer + CRITICALITY ignore +} + +downlinkRANEarlyStatusTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkRANEarlyStatusTransfer + PROCEDURE CODE id-DownlinkRANEarlyStatusTransfer + CRITICALITY ignore +} + +downlinkRANStatusTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkRANStatusTransfer + PROCEDURE CODE id-DownlinkRANStatusTransfer + CRITICALITY ignore +} + +downlinkUEAssociatedNRPPaTransport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkUEAssociatedNRPPaTransport + PROCEDURE CODE id-DownlinkUEAssociatedNRPPaTransport + CRITICALITY ignore +} + +errorIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + +handoverCancel NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverCancel + SUCCESSFUL OUTCOME HandoverCancelAcknowledge + PROCEDURE CODE id-HandoverCancel + CRITICALITY reject +} + +handoverNotification NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverNotify + PROCEDURE CODE id-HandoverNotification + CRITICALITY ignore +} + +handoverPreparation NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverRequired + SUCCESSFUL OUTCOME HandoverCommand + UNSUCCESSFUL OUTCOME HandoverPreparationFailure + PROCEDURE CODE id-HandoverPreparation + CRITICALITY reject +} + +handoverResourceAllocation NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverRequest + SUCCESSFUL OUTCOME HandoverRequestAcknowledge + UNSUCCESSFUL OUTCOME HandoverFailure + PROCEDURE CODE id-HandoverResourceAllocation + CRITICALITY reject +} + +handoverSuccess NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverSuccess + PROCEDURE CODE id-HandoverSuccess + CRITICALITY ignore +} + +initialContextSetup NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InitialContextSetupRequest + SUCCESSFUL OUTCOME InitialContextSetupResponse + UNSUCCESSFUL OUTCOME InitialContextSetupFailure + PROCEDURE CODE id-InitialContextSetup + CRITICALITY reject +} + +initialUEMessage NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InitialUEMessage + PROCEDURE CODE id-InitialUEMessage + CRITICALITY ignore +} + +locationReport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReport + PROCEDURE CODE id-LocationReport + CRITICALITY ignore +} + +locationReportingControl NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReportingControl + PROCEDURE CODE id-LocationReportingControl + CRITICALITY ignore +} + +locationReportingFailureIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReportingFailureIndication + PROCEDURE CODE id-LocationReportingFailureIndication + CRITICALITY ignore +} + +multicastSessionActivation NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MulticastSessionActivationRequest + SUCCESSFUL OUTCOME MulticastSessionActivationResponse + UNSUCCESSFUL OUTCOME MulticastSessionActivationFailure + PROCEDURE CODE id-MulticastSessionActivation + CRITICALITY reject +} + +multicastSessionDeactivation NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MulticastSessionDeactivationRequest + SUCCESSFUL OUTCOME MulticastSessionDeactivationResponse + PROCEDURE CODE id-MulticastSessionDeactivation + CRITICALITY reject +} + +multicastSessionUpdate NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MulticastSessionUpdateRequest + SUCCESSFUL OUTCOME MulticastSessionUpdateResponse + UNSUCCESSFUL OUTCOME MulticastSessionUpdateFailure + PROCEDURE CODE id-MulticastSessionUpdate + CRITICALITY reject +} + +multicastGroupPaging NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MulticastGroupPaging + PROCEDURE CODE id-MulticastGroupPaging + CRITICALITY ignore +} + +nASNonDeliveryIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NASNonDeliveryIndication + PROCEDURE CODE id-NASNonDeliveryIndication + CRITICALITY ignore +} + +nGReset NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NGReset + SUCCESSFUL OUTCOME NGResetAcknowledge + PROCEDURE CODE id-NGReset + CRITICALITY reject +} + +nGSetup NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NGSetupRequest + SUCCESSFUL OUTCOME NGSetupResponse + UNSUCCESSFUL OUTCOME NGSetupFailure + PROCEDURE CODE id-NGSetup + CRITICALITY reject +} + +overloadStart NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OverloadStart + PROCEDURE CODE id-OverloadStart + CRITICALITY ignore +} + +overloadStop NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OverloadStop + PROCEDURE CODE id-OverloadStop + CRITICALITY reject +} + +paging NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Paging + PROCEDURE CODE id-Paging + CRITICALITY ignore +} + +pathSwitchRequest NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PathSwitchRequest + SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge + UNSUCCESSFUL OUTCOME PathSwitchRequestFailure + PROCEDURE CODE id-PathSwitchRequest + CRITICALITY reject +} + +pDUSessionResourceModify NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PDUSessionResourceModifyRequest + SUCCESSFUL OUTCOME PDUSessionResourceModifyResponse + PROCEDURE CODE id-PDUSessionResourceModify + CRITICALITY reject +} + +pDUSessionResourceModifyIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PDUSessionResourceModifyIndication + SUCCESSFUL OUTCOME PDUSessionResourceModifyConfirm + PROCEDURE CODE id-PDUSessionResourceModifyIndication + CRITICALITY reject +} + +pDUSessionResourceNotify NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PDUSessionResourceNotify + PROCEDURE CODE id-PDUSessionResourceNotify + CRITICALITY ignore +} + +pDUSessionResourceRelease NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PDUSessionResourceReleaseCommand + SUCCESSFUL OUTCOME PDUSessionResourceReleaseResponse + PROCEDURE CODE id-PDUSessionResourceRelease + CRITICALITY reject +} + +pDUSessionResourceSetup NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PDUSessionResourceSetupRequest + SUCCESSFUL OUTCOME PDUSessionResourceSetupResponse + PROCEDURE CODE id-PDUSessionResourceSetup + CRITICALITY reject +} + +privateMessage NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + PROCEDURE CODE id-PrivateMessage + CRITICALITY ignore +} + +pWSCancel NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSCancelRequest + SUCCESSFUL OUTCOME PWSCancelResponse + PROCEDURE CODE id-PWSCancel + CRITICALITY reject +} + +pWSFailureIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSFailureIndication + PROCEDURE CODE id-PWSFailureIndication + CRITICALITY ignore +} + +pWSRestartIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSRestartIndication + PROCEDURE CODE id-PWSRestartIndication + CRITICALITY ignore +} + +rANConfigurationUpdate NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RANConfigurationUpdate + SUCCESSFUL OUTCOME RANConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME RANConfigurationUpdateFailure + PROCEDURE CODE id-RANConfigurationUpdate + CRITICALITY reject +} + +rANCPRelocationIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RANCPRelocationIndication + PROCEDURE CODE id-RANCPRelocationIndication + CRITICALITY reject +} + +rerouteNASRequest NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RerouteNASRequest + PROCEDURE CODE id-RerouteNASRequest + CRITICALITY reject +} + + +retrieveUEInformation NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RetrieveUEInformation + PROCEDURE CODE id-RetrieveUEInformation + CRITICALITY reject +} + +rRCInactiveTransitionReport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RRCInactiveTransitionReport + PROCEDURE CODE id-RRCInactiveTransitionReport + CRITICALITY ignore +} + +secondaryRATDataUsageReport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE SecondaryRATDataUsageReport + PROCEDURE CODE id-SecondaryRATDataUsageReport + CRITICALITY ignore +} + +traceFailureIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE TraceFailureIndication + PROCEDURE CODE id-TraceFailureIndication + CRITICALITY ignore +} + +traceStart NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE TraceStart + PROCEDURE CODE id-TraceStart + CRITICALITY ignore +} + +uEContextModification NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationRequest + SUCCESSFUL OUTCOME UEContextModificationResponse + UNSUCCESSFUL OUTCOME UEContextModificationFailure + PROCEDURE CODE id-UEContextModification + CRITICALITY reject +} + +uEContextRelease NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseCommand + SUCCESSFUL OUTCOME UEContextReleaseComplete + PROCEDURE CODE id-UEContextRelease + CRITICALITY reject +} + +uEContextReleaseRequest NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseRequest + PROCEDURE CODE id-UEContextReleaseRequest + CRITICALITY ignore +} + +uEContextResume NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextResumeRequest + SUCCESSFUL OUTCOME UEContextResumeResponse + UNSUCCESSFUL OUTCOME UEContextResumeFailure + PROCEDURE CODE id-UEContextResume + CRITICALITY reject +} + +uEContextSuspend NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextSuspendRequest + SUCCESSFUL OUTCOME UEContextSuspendResponse + UNSUCCESSFUL OUTCOME UEContextSuspendFailure + PROCEDURE CODE id-UEContextSuspend + CRITICALITY reject +} + +uEInformationTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEInformationTransfer + PROCEDURE CODE id-UEInformationTransfer + CRITICALITY reject +} + +uERadioCapabilityCheck NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UERadioCapabilityCheckRequest + SUCCESSFUL OUTCOME UERadioCapabilityCheckResponse + PROCEDURE CODE id-UERadioCapabilityCheck + CRITICALITY reject +} + +uERadioCapabilityIDMapping NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UERadioCapabilityIDMappingRequest + SUCCESSFUL OUTCOME UERadioCapabilityIDMappingResponse + PROCEDURE CODE id-UERadioCapabilityIDMapping + CRITICALITY reject +} + +uERadioCapabilityInfoIndication NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UERadioCapabilityInfoIndication + PROCEDURE CODE id-UERadioCapabilityInfoIndication + CRITICALITY ignore +} + +uETNLABindingRelease NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UETNLABindingReleaseRequest + PROCEDURE CODE id-UETNLABindingRelease + CRITICALITY ignore +} + +uplinkNASTransport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkNASTransport + PROCEDURE CODE id-UplinkNASTransport + CRITICALITY ignore +} + +uplinkNonUEAssociatedNRPPaTransport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkNonUEAssociatedNRPPaTransport + PROCEDURE CODE id-UplinkNonUEAssociatedNRPPaTransport + CRITICALITY ignore +} + +uplinkRANConfigurationTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkRANConfigurationTransfer + PROCEDURE CODE id-UplinkRANConfigurationTransfer + CRITICALITY ignore +} + +uplinkRANEarlyStatusTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkRANEarlyStatusTransfer + PROCEDURE CODE id-UplinkRANEarlyStatusTransfer + CRITICALITY reject +} + +uplinkRANStatusTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkRANStatusTransfer + PROCEDURE CODE id-UplinkRANStatusTransfer + CRITICALITY ignore +} + +uplinkUEAssociatedNRPPaTransport NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkUEAssociatedNRPPaTransport + PROCEDURE CODE id-UplinkUEAssociatedNRPPaTransport + CRITICALITY ignore +} + +writeReplaceWarning NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE WriteReplaceWarningRequest + SUCCESSFUL OUTCOME WriteReplaceWarningResponse + PROCEDURE CODE id-WriteReplaceWarning + CRITICALITY reject +} + +uplinkRIMInformationTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkRIMInformationTransfer + PROCEDURE CODE id-UplinkRIMInformationTransfer + CRITICALITY ignore +} + +downlinkRIMInformationTransfer NGAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkRIMInformationTransfer + PROCEDURE CODE id-DownlinkRIMInformationTransfer + CRITICALITY ignore +} + +END diff --git a/ttcn/LibNGAP/lib/asn1/converter-example.mk b/ttcn/LibNGAP/lib/asn1/converter-example.mk new file mode 100644 index 0000000000000000000000000000000000000000..15c6946f25e5ff9635eea25e855a23d5e5907d0f --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/converter-example.mk @@ -0,0 +1,33 @@ +include Makefile.am.libasncodec + +LIBS += -lm +CFLAGS += $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION -I. +ASN_LIBRARY ?= libasncodec.a +ASN_PROGRAM ?= converter-example +ASN_PROGRAM_SRCS ?= \ + converter-example.c\ + pdu_collection.c + +all: $(ASN_PROGRAM) + +$(ASN_PROGRAM): $(ASN_LIBRARY) $(ASN_PROGRAM_SRCS:.c=.o) + $(CC) $(CFLAGS) $(CPPFLAGS) -o $(ASN_PROGRAM) $(ASN_PROGRAM_SRCS:.c=.o) $(LDFLAGS) $(ASN_LIBRARY) $(LIBS) + +$(ASN_LIBRARY): $(ASN_MODULE_SRCS:.c=.o) + $(AR) rcs $@ $(ASN_MODULE_SRCS:.c=.o) + +.SUFFIXES: +.SUFFIXES: .c .o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + +clean: + rm -f $(ASN_PROGRAM) $(ASN_LIBRARY) + rm -f $(ASN_MODULE_SRCS:.c=.o) $(ASN_PROGRAM_SRCS:.c=.o) + +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c NGAP_CommonDataTypes.asn + diff --git a/ttcn/LibNGAP/lib/asn1/module.mk b/ttcn/LibNGAP/lib/asn1/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..047fef3bcccfa69dfe551cc1171d26b4ce4e9537 --- /dev/null +++ b/ttcn/LibNGAP/lib/asn1/module.mk @@ -0,0 +1,2 @@ +sources := NGAP_CommonDataTypes.asn NGAP_Constants.asn NGAP_Containers.asn NGAP_IEs.asn NGAP_PDU_Contents.asn NGAP_PDU_Descriptions.asn + diff --git a/ttcn/LibNGAP/lib_system/LibNGAP_Interface.ttcn b/ttcn/LibNGAP/lib_system/LibNGAP_Interface.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7a46039f50cd13bf6d75556d8641f7d203acb7dd --- /dev/null +++ b/ttcn/LibNGAP/lib_system/LibNGAP_Interface.ttcn @@ -0,0 +1,77 @@ +/** + * @author ETSI / STF + * @version $URL:$ + * $Id:$ + * @desc This module provides the types used by the test component for NGAP tests. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS / 3GPP TS + */ +module LibNGAP_Interface { + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_Time all; + + // LibNGAP + import from NGAP_IEs language "ASN.1:1997" all; + import from NGAP_PDU_Descriptions language "ASN.1:1997" all; + import from LibNGAP_Pixits all; + + group portDefinitions { + + /** + * @desc NGAP protocol port + */ + type port NGAPPort message { + inout NGAP_PDU + } // End of type NGAPPort + + } // End of group portDefinitions + + group interfacePorts { + type component NGAPComponent extends SelfSyncComp { + // Port + port NGAPPort N2_gNBaMF_P; + + // Global variables + + var boolean vc_serverStop:=false; + + // test adapter params + var charstring vc_ETS_address := ""; //defined in init + var charstring vc_ETS_address2 := ""; //defined in init + var integer vc_ETS_port := 3868; //defined in init + var integer vc_ETS_port2 := 3869; //defined in init + var charstring vc_SUT_address := ""; //defined in init + var integer vc_SUT_port := 3868; //defined in init + + + var NGAP_PDU vc_sendNGAP_PDU ; + var NGAP_PDU vc_recvNGAP_PDU ; + var NGAP_PDU vc_recvNGAP_PDUDefault ; //global variable defined to save Dimeter message received within default altstep + + // Init of values at component started + // Note: generation of following MME and ENB UE IDs can be done randomly in init + //var AMF_UE_NGAP_ID vc_AMF_UE_ID := 10; + //var GNB_UE_NGAP_ID vc_gNB_UE_ID := 11; + + // General timers + timer tc_wait := PX_NGAP_TWAIT; + timer tc_noac := PX_TNOAC; + timer tc_delay := 0.3; // delay next Request + // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) + + // Variables for storing default references + var default vc_default_ngap; + var default vc_def_catchSyncStop_ngap; + + } // End of type component NGAPComponent + + + } // End of group interfacePorts + +} // End of module LibNGAP_Interface + diff --git a/ttcn/LibNGAP/lib_system/LibNGAP_Steps.ttcn b/ttcn/LibNGAP/lib_system/LibNGAP_Steps.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e85d9c51a23b9daa987ad92edf93b6e6eb7a683a --- /dev/null +++ b/ttcn/LibNGAP/lib_system/LibNGAP_Steps.ttcn @@ -0,0 +1,388 @@ +/** + * @author ETSI / + * @version $URL$ + * $Id$ + * @desc This module provides functions used in NGAP. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS / 3GPP TS + */ +module LibNGAP_Steps { + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_VerdictControl all; + import from LibCommon_BasicTypesAndValues all; + + // LibNGAP + import from NGAP_CommonDataTypes language "ASN.1:1997" all; + import from NGAP_PDU_Descriptions language "ASN.1:1997" all; + import from NGAP_IEs language "ASN.1:1997" all; + + import from LibNGAP_TypesAndValues all; + import from LibNGAP_Interface all; + import from LibNGAP_Pixits all; + import from LibNGAP_Templates all; + + /** + * @desc Common functions description + */ + group commonFunctions { + + } // End of group commonFunctions + + /** + * @desc Receive functions description + */ + group receivePDU { + + /** + * @desc This is a test step that assign common NGAP + * @param p_PDU Extract the message payload from the NGAP PDU + */ + function f_NGAPPDU_Get( + inout NGAP_PDU p_PDU + ) runs on NGAPComponent { + + vc_recvNGAP_PDU := p_PDU; + + if (ischosen(p_PDU.initiatingMessage)) { + // Nothing to do + } + if (ischosen(p_PDU.successfulOutcome)) { + // Nothing to do + } + if (ischosen(p_PDU.unsuccessfulOutcome)) { + // Nothing to do + } + } // End of function f_NGAPPDU_Get + + /** + * @desc Receive NGAP PDU from protocol port + * @param p_PDU template of the message to be received + */ + function f_recv_NGAP_PDU( + in template NGAP_PDU p_PDU + ) runs on NGAPComponent { + var NGAP_PDU v_PDU; + + log(">>> f_recv_NGAP_PDU", p_PDU); + tc_wait.start; + alt { + [] N2_gNBaMF_P.receive(p_PDU) -> value v_PDU { + log("f_recv_NGAP_PDU: Got it", v_PDU); + tc_wait.stop; + f_NGAPPDU_Get(v_PDU) + } + [] tc_wait.timeout { + setverdict(inconc,"*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); + //Stop the component in case of timeout + all timer.stop; + f_componentStop(); + } + } + + } // End of function f_recv_NGAP_PDU + + /** + * @desc Receive NGAP PDU with InitiatingMessage payload from protocol port + * @param p_initiatingMessage Receive template for InitiatingMessage message + */ + function f_recv_NGAP_initiatingMessage( + template (present) InitiatingMessage p_initiatingMessage := ? + ) runs on NGAPComponent { + f_recv_NGAP_PDU( { initiatingMessage := p_initiatingMessage }) + } // End of function f_recv_NGAP_initiatingMessage + + /** + * @desc Receive NGAP PDU with SuccessfulOutcome payload from protocol port + * @param p_successfulOutcome Receive template for SuccessfulOutcome message + */ + function f_recv_NGAP_successfulOutcome( + template (present) SuccessfulOutcome p_successfulOutcome := ? + ) runs on NGAPComponent { + f_recv_NGAP_PDU( {successfulOutcome := p_successfulOutcome}) + } // End of f_recv_NGAP_successfulOutcome + + /** + * @desc Receive NGAP PDU with UnsuccessfulOutcome payload from protocol port + * @param p_unsuccessfulOutcome Receive template for UnsuccessfulOutcome message + */ + function f_recv_NGAP_unsuccessfulOutcome( + template (present) UnsuccessfulOutcome p_unsuccessfulOutcome := ? + ) runs on NGAPComponent { + f_recv_NGAP_PDU( {unsuccessfulOutcome := p_unsuccessfulOutcome}) + } // End of function f_recv_NGAP_unsuccessfulOutcome + + + } // End of group receivePDU + + /** + * @desc Send functions description + */ + group sendPDU { + + /** + * @desc This is a test step that assign common NGAP + * @param p_PDU The NGAP protocol message to set up + */ + function f_NGAPPDU_Set( + inout template (value) NGAP_PDU p_PDU + ) runs on NGAPComponent { + + if (ischosen(p_PDU.initiatingMessage)) { + vc_sendNGAP_PDU:=valueof(p_PDU); + } + if (ischosen(p_PDU.successfulOutcome)) { + vc_sendNGAP_PDU:=valueof(p_PDU); + } + if (ischosen(p_PDU.unsuccessfulOutcome)) { + vc_sendNGAP_PDU:=valueof(p_PDU); + } + + } // End of function f_NGAPPDU_Set + + /** + * @desc Send NGAP PDU to protocol port + * @param p_PDU template value message to be send + */ + function f_send_NGAP_PDU( + in template (value) NGAP_PDU p_PDU + ) runs on NGAPComponent { + log(">>> f_send_NGAP_PDU: ", p_PDU) + f_NGAPPDU_Set(p_PDU); + log("f_send_NGAP_PDU: vc_sendNGAP_PDU: ", vc_sendNGAP_PDU) + N2_gNBaMF_P.send(p_PDU); + } // End of function f_send_NGAPPDU + + /** + * @desc Send NGAP PDU with InitiatingMessage payload from protocol port + * @param p_initiatingMessage Send value template for InitiatingMessage message + */ + function f_send_NGAP_initiatingMessage( + in template (value) InitiatingMessage p_initiatingMessage, + in template (value) Criticality p_criticality := reject + ) runs on NGAPComponent { + f_send_NGAP_PDU( {initiatingMessage := p_initiatingMessage}) + } // End of function f_send_NGAP_initiatingMessage + + /** + * @desc Send NGAP PDU with SuccessfulOutcome payload from protocol port + * @param p_successfulOutcome Send value template for SuccessfulOutcome message + */ + function f_send_NGAP_successfulOutcome( + in template (value) SuccessfulOutcome p_successfulOutcome + ) runs on NGAPComponent { + f_send_NGAP_PDU( {successfulOutcome := p_successfulOutcome}) + } // End of function f_send_NGAP_successfulOutcome + + /** + * @desc Send NGAP PDU with UnsuccessfulOutcome payload from protocol port + * @param p_unsuccessfulOutcome Send value template for UnsuccessfulOutcome message + */ + function f_send_NGAP_unsuccessfulOutcome( + in template (value) UnsuccessfulOutcome p_unsuccessfulOutcome + ) runs on NGAPComponent { + f_send_NGAP_PDU( {unsuccessfulOutcome := p_unsuccessfulOutcome}) + } // End of function f_send_NGAP_unsuccessfulOutcome + + } // End of group sendPDU + + /** + * @desc Setup full procedure functions + * @see ETSI TS + */ + group fullProcedures { + } // End of group fullProcedures + + group externalFunctions { + } // End of group externalFunctions + + group preambles { + + group preamble_NGAP{ + + /** + * @desc + * @verdict + */ + function f_preambleNGAP_MME() + runs on NGAPComponent { + // Nothing to do + } // End of function f_preambleNGAP_MME + + /** + * @desc + * @verdict + */ + function f_preambleNGAP_eNB() + runs on NGAPComponent { + // Nothing to do + } // End of function f_preambleNGAP_eNB + + } // End of group preamble_NGAP + + } // End of group preambles + + group postambles { + + group postamble_NGAP{ + + /** + * @desc + * @verdict + */ + function f_postambleNGAP_gNB() + runs on NGAPComponent { + // Nothing to do + } // End of function f_postambleNGAP_gNB + + /** + * @desc + * @verdict + */ + function f_postambleNGAP_AMF() + runs on NGAPComponent { + // Nothing to do + } // End of function f_postambleNGAP_AMF + + } // End of group postamble_NGAP + + } // End of group postambles + + /** + * @desc Global 'altstep' statements description + */ + group globalSteps { + + /** + * @desc This is a test step that init NGAP component + */ + function f_NGAP_Init_Component() + runs on NGAPComponent { + // Nothing to do + } // End of function f_NGAP_Init_Component + + /** + * @desc Component termination + */ + function f_NGAP_terminate_component() + runs on NGAPComponent { + + log("component terminated - forced!"); + deactivate; + stop; + } // End of function f_NGAP_terminate_component + + /** + * @desc Component termination + */ + function f_componentStop() + runs on NGAPComponent { + + syncPort.send(m_syncClientStop); + N2_gNBaMF_P.clear; + stop; + } // End of function f_componentStop + + /** + * @desc Original copied from older LibCommon_VerdictControl + */ + function f_getVerdict() // FIXME Are you sure we really need it??? + return FncRetCode { + + var FncRetCode v_ret := e_error; + if (getverdict == pass or getverdict == none) { + v_ret := e_success; + } + return v_ret; + } // End of function + + } // End of group globalSteps + + /** + * @desc Default 'altstep' statements description + */ + group defaultsTestStep { + + /** + * @desc + * @verdict + */ + altstep a_defaultNGAP() + runs on NGAPComponent { + [] any timer.timeout { + all timer.stop; + if (vc_serverStop==false) { + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + else { + stop; + } + } + [] N2_gNBaMF_P.receive (NGAP_PDU:{initiatingMessage := ?}) -> value vc_recvNGAP_PDUDefault { + repeat; + } + [] N2_gNBaMF_P.receive (NGAP_PDU:{successfulOutcome := ?}) -> value vc_recvNGAP_PDUDefault { + repeat; + } + [] N2_gNBaMF_P.receive (NGAP_PDU:{unsuccessfulOutcome := ?}) -> value vc_recvNGAP_PDUDefault { + repeat; + } + [] N2_gNBaMF_P.receive (NGAP_PDU:?) -> value vc_recvNGAP_PDUDefault { + if (vc_serverStop==false) { + f_selfOrClientSyncAndVerdict("error", e_error); + } + else { + stop; + } + } + [] N2_gNBaMF_P.receive { + if (vc_serverStop==false) { + f_selfOrClientSyncAndVerdict("error", e_error); + } + else { + stop; + } + } + [] a_shutdown() { + // Process temination on error + log("*** a_defaultNGAP() : Process temination on error ***"); + // Terminate component execution + stop; + } + } // End of altstep a_defaultNGAP + + altstep a_defaultNGAP_MME() + runs on NGAPComponent { + [] any timer.timeout { + all timer.stop; + if (vc_serverStop==false) { + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + else { + stop; + } + } + // Note: possible unscollicited messages should be filtered + } // End of altstep a_defaultNGAP_MME + + altstep a_defaultNGAP_eNB() + runs on NGAPComponent { + [] any timer.timeout { + all timer.stop; + if (vc_serverStop==false) { + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + else { + stop; + } + } + // Note: possible unscollicited messages should be filtered + } // End of altstep a_defaultNGAP_eNB + + } // End of group defaultsTestStep + +} // End of module LibNGAP_Steps diff --git a/ttcn/LibNGAP/module.mk b/ttcn/LibNGAP/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..beb3f85c476705b9f066668623465ed374a2304b --- /dev/null +++ b/ttcn/LibNGAP/module.mk @@ -0,0 +1,9 @@ +sources := \ + lib/LibNGAP_TypesAndValues.ttcn \ + lib/LibNGAP_Pixits.ttcn \ + lib/LibNGAP_Templates.ttcn \ + lib/LibNGAP_EncdecDeclarations.ttcn \ + lib_system/LibNGAP_Interface.ttcn \ + lib_system/LibNGAP_Steps.ttcn + +modules := lib/asn1 diff --git a/ttcn/Lib_NG_NAS/LIB_NG_NAS_Functions.ttcn b/ttcn/Lib_NG_NAS/LIB_NG_NAS_Functions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4cb5e0772c54d65e2b2eddc57cbfd7538c5ab6a6 --- /dev/null +++ b/ttcn/Lib_NG_NAS/LIB_NG_NAS_Functions.ttcn @@ -0,0 +1,640 @@ +module LIB_NG_NAS_Functions { + + // Lib_NG_NAS + import from Lib_NG_NAS_Interface all; + import from Lib_NG_NAS_Templates all; + import from Lib_NG_NAS_Pixits all; + + // NG_NAS + import from NG_NAS_TypeDefs all; + import from NG_NAS_TestSystem all; + + // Lib3GPP + import from CommonDefs all; + import from NG_NAS_MsgContainers all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from NG_NAS_Common all; + import from NAS_AuthenticationCommon all; + import from NG_NAS_SecurityFunctions all; + + // Lib_NGAP + import from NGAP_IEs language "ASN.1:2002" all; + import from NGAP_Constants language "ASN.1:2002" all; + import from NGAP_PDU_Descriptions language "ASN.1:2002" all; + import from LibNGAP_Pixits all; + import from LibNGAP_Templates all; + import from LibNGAP_Interface all; + import from LibNGAP_Steps all; + + /** + * @desc Function to send NGSetupRequest message and await for NGSetupResponse message + */ + function f_send_NGSetupRequest_await_NGSetupRespone() runs on NGNASComponent { + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_NGSetupRequest( + m_globalRANNodeID_globalGNB_ID( + m_ie_globalGnbId( + PX_PLMN_IDENTITY, + PX_GNB_ID,//'0000000000000000000000'B,//in template (value) bitstring p_gnbId, + -//in template (omit) GlobalGNB_ID.iE_Extensions p_iE_Extensions := omit + )), + { + m_supportedTAItem( + PX_TACode, + { + m_ie_broadcastPLMNItem( + PX_PLMN_IDENTITY,//m_ie_pLMNIdentity('00f110'O), + { + m_sliceSupportItem( + m_s_NSSAI( + PX_SST, + -,// in template (omit) SD p_sD := omit, + -// in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit + ), + -//in template (omit) SliceSupportItem.iE_Extensions p_iE_Extensions := omit + ) + } + ) + },//in template (value) BroadcastPLMNList p_broadcastPLMNList, + -//in template (omit) SupportedTAItem.iE_Extensions p_iE_Extensions := omit + ) + }, + PX_PAGING_DRX + ))); + f_recv_NGAP_PDU( + mw_ngap_succMsg( + mw_n2_NGSetupResponse( + mw_aMFName(PX_AMF_NAME), + { + *, + mw_servedGUAMIItem( + mw_gUAMI( + PX_PLMN_IDENTITY + )), + * + } + ))); + } + + /** + * @desc Function to send NAS RegistrationRequest message + * @see NG_NASTemplateFunctions.f_Check_NG_RegistrationReqMsg + */ + function f_send_NasRegistrationRequest() runs on NGNASComponent { + vt_NgNasUl_Msg := m_NG_REGISTRATION_REQUEST( + {'0'B,'001'B}, + '111'B, + '0'B, + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT,PX_SUPI_DIGITS) // TODO Use PIXIT here? + ); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + } + + /** + * @desc Function to await NAS NGSetupResponse message + */ + function f_await_registration_accept() runs on NGNASComponent { + // Await request for REGISTRATION_ACCEPT + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_REGISTRATION_ACCEPT( + -, + ?, + mw_PLMN_List( + -, -, + { + *, + PX_PLMN_IDENTITY, + * + } + ), + -,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-, + ? + ), + v_message) == false) { + setverdict(fail); + return; + } + } + + /** + * @desc Function to await NAS AuthorizationRequest message and send AuthorizationResponse message with security computation for future encryption + */ + function f_await_NasAuthorizationRequest_send_NasAuthorizationResponse() runs on NGNASComponent { + // Await request for authorization + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // AuthorizationRequest + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_AUTHENTICATION_REQUEST( + '000'B, + -, + mw_GMM_AuthRAND, + mw_GSM_AUTN + ), + v_message + ) == false) { + setverdict(fail); + return; + } + // Compute RES/XRES + f_5g_aka_compute_res_xres(v_message.authentication_Request.rand.randValue, v_message.authentication_Request.autn.aUTN, v_message.authentication_Request.abba, PX_PLMN_IDENTITY, oct2hex(PX_SUPI_DIGITS), vc_ng_nas_security_params_type); + // Send response + vt_NgNasUl_Msg := m_NG_AUTHENTICATION_RESPONSE( + { iei := '2d'O, iel := '10'O, res := vc_ng_nas_security_params_type.AuthParams.XRES } + ); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + } + + /******************************************************************************** + * + * FIXME Use or enhance check functions from 3GPP library such as NG_NASTemplateFunctions.f_Check_NG_SecurityModeCompleteMsg + * + ********************************************************************************/ + + function f_await_NasSecurityModeCommand() runs on NGNASComponent { + // Await SecurityModeCommand + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // Security mode command + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_SECURITY_MODE_COMMAND, + v_message + ) == false) { + setverdict(fail); + return; + } + } + + function f_await_NasSecurityModeCommand_send_NasSecurityModeComplete() runs on NGNASComponent { + // Await SecurityModeCommand + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_DownlinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + ? // Security mode command + ))); + f_NASPDU_Get(vc_recvNGAP_PDU); + var NG_NAS_DL_Message_Type v_message; + if (f_Check_5GAKA_NAS_DL_Message( + vc_recvNAS_PDU, + mw_NG_SECURITY_MODE_COMMAND, + v_message + ) == false) { + setverdict(fail); + return; + } + // Send SecurityModeComplete + vt_NgNasUl_Msg := m_NG_SECURITY_MODE_COMPLETE( + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT, PX_SUPI_DIGITS), //in template (value) NG_MobileIdentity p_IMEISV, + { iei := omit, iel := int2oct(0, 2), replayedNASMsgContainerValue := ''O } /* 24.301 cl. 9.9.3.51 @sic R5s170597 Baseline Moving sic@ */, //in template (value) ReplayedNASMessageContainer p_NASMsg, + m_NG_MobileIdentitySUCI(PX_SUPI_FORMAT,PX_SUPI_DIGITS) //in template (value) NG_MobileIdentity p_NonIMEISV_PEI + ); + var octetstring os := ''O; // FIXME f_EncodeAndCipher_NG_NasPdu(vt_NgNasUl_Msg, ); How to calculate NG_NAS_MSG_Request_Type + vt_NgNasUl_Msg.security_Protected_Nas_Message := m_NG_SECURITY_PROTECTED_NAS_MESSAGE( + tsc_EPD_GMM, + tsc_SpareHalfOctet, + tsc_SHT_IntegrityProtected_Ciphered, + '00000000'O, // FIXME How to calculate MessageAuthenticationCode? + '00'O, + os // Cyphered NAS message + ) + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + } + + function f_terminate_NasRegistrationRequest_with_reject() runs on NGNASComponent { + // Send error message + vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( + m_GMM_GSM_Cause( + -, + tsc_EmmCause_IllegalMe // '00000110'B; + )); + vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UplinkNASTransport( + PX_AMF_UE_NGAP_ID, + PX_RAN_UE_NGAP_ID, + vc_sendNAS_PDU, + m_uPTransportLayerInformation_userLocationInformationNR( + m_userLocationInformationNR( + m_nR_CGI, + m_tAI + ))))); + } + + function f_send_NGUERadioCApabilityInfoIndication() runs on NGNASComponent { + f_send_NGAP_PDU( + m_ngap_initMsg( + m_n2_UERadioCapabilityInfoIndication( + -, -, + ''O // FIXME FSCOM How to deal with UERadioCapability + ))); + } + + function f_await_NGInitialContextSetupRequest_send_NGInitialContextSetupRespone() runs on NGNASComponent { + f_recv_NGAP_PDU( + mw_ngap_initMsg( + mw_n2_InitialContextSetupRequest_withPDUSessionList( // FIXME FSCOM How to deal with it? + + ))); + f_send_NGAP_PDU( + m_ngap_succMsg( + m_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes + )); + } + + function f_NASPDU_Get(inout NGAP_PDU p_PDU) runs on NGNASComponent { + + vc_recvNGAP_PDU := p_PDU; + + if (ischosen(p_PDU.initiatingMessage)) { + // Nothing to do + if (match(vc_recvNGAP_PDU.initiatingMessage,mw_n2_NGSetupRequest_base)){ + var integer numOfIEs := lengthof(vc_recvNGAP_PDU.initiatingMessage.value_.NGSetupRequest.protocolIEs) + //log("Number of IEs:",numOfIEs); + for (var integer i:=0;i>> f_decode_5G_NAS_DL_Message: ", p_nas_pdu); + + var bitstring v_bs := oct2bit(p_nas_pdu); + var NG_NAS_DL_Message_Type v_message; + if (decvalue(v_bs, v_message) != 0) { + log("f_decode_5G_NAS_DL_Message: decvalue failure"); + return false; + } + log("f_decode_5G_NAS_DL_Message: v_message: ", v_message); + if (ischosen(v_message.security_Protected_Nas_Message)) { + if (v_message.security_Protected_Nas_Message.securityHeaderType == '0100'B) { + // TODO Cyphered message + log("f_decode_5G_NAS_DL_Message: TODO Cyphered message"); + setverdict(inconc); + return false; + } else { + v_bs := oct2bit(v_message.security_Protected_Nas_Message.plainNASMessage); + if (decvalue(v_bs, v_message) != 0) { + log("f_decode_5G_NAS_DL_Message: decvalue failure"); + return false; + } + log("f_decode_5G_NAS_DL_Message: v_message: ", v_message); + if (not(match(v_message, p_NG_NAS_DL_Message_Type))) { + log(match(v_message, p_NG_NAS_DL_Message_Type)); + return false; + } + } + } + log("f_decode_5G_NAS_DL_Message: matching"); + + return true; + } // End of function f_decode_5G_NAS_DL_Message + + function f_Check_5GAKA_NAS_DL_Message( + in NAS_PDU p_nas_pdu, + in template NG_NAS_DL_Message_Type p_NG_NAS_DL_Message_Type, + out NG_NAS_DL_Message_Type p_message + ) return boolean { + log(">>> f_Check_5GAKA_NAS_DL_Message: ", p_nas_pdu); + + var bitstring v_bs := oct2bit(p_nas_pdu); + var NG_NAS_DL_Message_Type v_message; + if (decvalue(v_bs, v_message) != 0) { + log("f_Check_5GAKA_NAS_DL_Message: decvalue failure"); + return false; + } + log("f_Check_5GAKA_NAS_DL_Message: v_message: ", v_message); + if (ischosen(v_message.security_Protected_Nas_Message)) { + if (v_message.security_Protected_Nas_Message.securityHeaderType == '0010'B) { + // TODO Cyphered message + // Decipher NAS container + // v_NonCleartextString := fx_NG_NasDeciphering(v_NonCleartextString, + // p_NasSecurityByRef.Ciphering.Algorithm, + // p_NasSecurityByRef.Ciphering.K_NAS, + // p_NasCount, + // p_NasSecurityByRef.BearerId); + //v_message.security_Protected_Nas_Message.plainNASMessage := v_NonCleartextString; + log("f_Check_5GAKA_NAS_DL_Message: TODO Cyphered message"); + setverdict(inconc); + return false; + } + // Message was decrypted properly + v_bs := oct2bit(v_message.security_Protected_Nas_Message.plainNASMessage); + if (decvalue(v_bs, v_message) != 0) { + log("f_Check_5GAKA_NAS_DL_Message: decvalue failure"); + return false; + } + log("f_Check_5GAKA_NAS_DL_Message: v_message: ", v_message); + } + if (not(match(v_message, p_NG_NAS_DL_Message_Type))) { + log(match(v_message, p_NG_NAS_DL_Message_Type)); + return false; + } + p_message := v_message; + log("f_Check_5GAKA_NAS_DL_Message: matching: p_message: ", p_message); + + return true; + } // End of function f_Check_5GAKA_NAS_DL_Message + + function f_Check_5GAKA_NAS_UL_Message( + in NAS_PDU p_nas_pdu, + in template NG_NAS_UL_Message_Type p_NG_NAS_UL_Message_Type + ) return boolean { + log(">>> f_Check_5GAKA_NAS_UL_Message: ", p_nas_pdu); + + var bitstring v_bs := oct2bit(p_nas_pdu); + var NG_NAS_UL_Message_Type v_message; + if (decvalue(v_bs, v_message) != 0) { + log("f_Check_5GAKA_NAS_UL_Message: decvalue failure"); + return false; + } + log("f_Check_5GAKA_NAS_UL_Message: v_message: ", v_message); + if (ischosen(v_message.security_Protected_Nas_Message)) { + // TODO Decyphered message + log("f_Check_5GAKA_NAS_UL_Message: TODO Decyphered message"); + setverdict(inconc); + return false; + } else { + v_bs := oct2bit(v_message.security_Protected_Nas_Message.plainNASMessage); + if (decvalue(v_bs, v_message) != 0) { + log("f_Check_5GAKA_NAS_UL_Message: decvalue failure"); + return false; + } + log("f_Check_5GAKA_NAS_UL_Message: v_message: ", v_message); + if (not(match(v_message, p_NG_NAS_UL_Message_Type))) { + log(match(v_message, p_NG_NAS_UL_Message_Type)); + return false; + } + } + log("f_Check_5GAKA_NAS_UL_Message: matching"); + + return true; + } // End of function f_Check_5GAKA_NAS_UL_Message + + function f_Check_5GAKA_NAS_DL_Message_is_encrypted(in NAS_PDU p_nas_pdu) return boolean { + log(">>> f_Check_5GAKA_NAS_DL_Message_is_encrypted: ", p_nas_pdu); + + var bitstring v_bs := oct2bit(p_nas_pdu); + var NG_NAS_DL_Message_Type v_message; + if (decvalue(v_bs, v_message) != 0) { + log("f_Check_5GAKA_NAS_DL_Message_is_encrypted: decvalue failure"); + return false; + } + log("f_Check_5GAKA_NAS_DL_Message_is_encrypted: v_message: ", v_message); + if (not ischosen(v_message.security_Protected_Nas_Message)) { + return false + } + + return true; + } // End of function f_Check_5GAKA_NAS_DL_Message_is_encrypted + + function f_Check_5GAKA_NAS_UL_Message_is_encrypted(in NAS_PDU p_nas_pdu) return boolean { + log(">>> f_Check_5GAKA_NAS_UL_Message_is_encrypted: ", p_nas_pdu); + + var bitstring v_bs := oct2bit(p_nas_pdu); + var NG_NAS_UL_Message_Type v_message; + if (decvalue(v_bs, v_message) != 0) { + log("f_Check_5GAKA_NAS_UL_Message_is_encrypted: decvalue failure"); + return false; + } + log("f_Check_5GAKA_NAS_UL_Message_is_encrypted: v_message: ", v_message); + if (not ischosen(v_message.security_Protected_Nas_Message)) { + return false + } + + return true; + } // End of function f_Check_5GAKA_NAS_UL_Message_is_encrypted + + group fiveg_aka_security_network { // FIXME FSCOM To be re-organize later to create a security library + + /** + * @desc Compute RES and XRES values based on rAND & AUTN received in the NG_AUTHENTICATION_REQUEST + * @param [in] p_rand + * @param [in] p_autn + * @param [in] KeySeq + * @param [in,out] p_ng_nas_security_params_type Built security parameters + */ + function f_5g_aka_compute_res_xres( + in B128_Type p_rand, + in B128_Type p_autn, + in ABBA p_abba, + in NAS_PlmnId p_PLMN, + in hexstring p_NID, + inout NG_NAS_SecurityParams_Type p_ng_nas_security_params_type + ) return boolean { + log(">>> f_5g_aka_compute_res_xres: ", p_ng_nas_security_params_type); + + p_ng_nas_security_params_type := valueof(cs_NG_NAS_SecurityParamsInit); + log("f_5g_aka_compute_res_xres: KDF=", p_ng_nas_security_params_type.KDF); + p_ng_nas_security_params_type.ABBA := p_abba.abbaValue; + p_ng_nas_security_params_type.AuthParams.RandValue := p_rand; + p_ng_nas_security_params_type.AuthParams.AUTN := p_autn; + + log("f_5g_aka_compute_res_xres: PX_USIM_SECRET_KEY=", PX_USIM_SECRET_KEY); + + // Extract SQN from v_sqn_ak and XOR it with calculated MAC + var B48_Type v_sqn_ak := substr(p_autn, 0, 48); + var B16_Type v_amf := substr(p_autn, 48, 16); + var B64_Type v_mac := substr(p_autn, 64, 64); + log("f_5g_aka_compute_res_xres: v_sqn_ak=", v_sqn_ak); + log("f_5g_aka_compute_res_xres: v_amf=", v_amf); + log("f_5g_aka_compute_res_xres: v_mac=", v_mac); + + // Set OP + f_set_op(PX_USIM_OPERATOR_VARIANT_ALGORITHM_CONFIGURATION); + // Calculate RES, CK, IK and AK in one step + var B128_Type v_ck; + var B128_Type v_ik; + var B48_Type v_ak; + var B64_Type v_res; + if (f_f2345(PX_USIM_SECRET_KEY, p_rand, v_res, v_ck, v_ik, v_ak) == -1) { + return false; + } + p_ng_nas_security_params_type.AuthParams.CK := v_ck; + log("f_5g_aka_compute_res_xres: CK=", p_ng_nas_security_params_type.AuthParams.CK); + p_ng_nas_security_params_type.AuthParams.IK := v_ik; + log("f_5g_aka_compute_res_xres: IK=", p_ng_nas_security_params_type.AuthParams.IK); + p_ng_nas_security_params_type.Ks := p_ng_nas_security_params_type.AuthParams.CK & p_ng_nas_security_params_type.AuthParams.IK; + log("f_5g_aka_compute_res_xres: Ks=", p_ng_nas_security_params_type.Ks); + var B48_Type v_sqn := v_sqn_ak xor4b v_ak; + log("f_5g_aka_compute_res_xres: v_sqn=", v_sqn); + + // Verify that MAC was accepted + var B64_Type v_mac_p; + if (f_f1(PX_USIM_SECRET_KEY, p_rand, v_sqn, v_amf, v_mac_p) == -1) { + return false; + } + log("f_5g_aka_compute_res_xres: v_mac_p=", v_mac_p); + if (v_mac != v_mac_p) { + return false; + } + + // Compute XRES + p_ng_nas_security_params_type.AuthParams.XRES := f_NG_Authentication_A4(p_PLMN, + p_ng_nas_security_params_type.AuthParams, + p_ng_nas_security_params_type.KDF, + p_ng_nas_security_params_type.Ks, + p_NID); + log("f_5g_aka_compute_res_xres: XRES=", p_ng_nas_security_params_type.AuthParams.XRES); + + // Generate KAUSF + p_ng_nas_security_params_type.KAUSF := f_NG_Authentication_A2(p_ng_nas_security_params_type.AuthParams, + p_ng_nas_security_params_type.KDF, + p_ng_nas_security_params_type.Ks, + p_PLMN, + p_NID); + log("f_5g_aka_compute_res_xres: KAUSF=", p_ng_nas_security_params_type.KAUSF); + + // Generate KSEAF + p_ng_nas_security_params_type.KSEAF := f_NG_Authentication_A6(p_PLMN, + p_ng_nas_security_params_type.KAUSF, + p_ng_nas_security_params_type.KDF, + p_NID + ); + log("f_5g_aka_compute_res_xres: KSEAF=", p_ng_nas_security_params_type.KSEAF); + + // TODO Generate KMAF + // p_ng_nas_security_params_type.KAMF := f_NG_Authentication_A7(p_Identity, + // p_ng_nas_security_params_type.KSEAF, + // p_ng_nas_security_params_type.ABBA, + // p_ng_nas_security_params_type.KDF + // ); + //log("f_5g_aka_compute_res_xres: KAMF=", p_ng_nas_security_params_type.KAMF); + + // TODO Generate KMAF + + + log("<<< f_5g_aka_compute_res_xres: ", p_ng_nas_security_params_type); + return true; + } // End of function f_5g_aka_compute_res_xres + + function f_set_op(in O16_Type p_op) { + fx_set_op(p_op); + } + + function f_f1(in B128_Type p_authK, in B128_Type p_rand, in B48_Type v_sqn, in B16_Type v_amf, out B64_Type v_mac_a) return integer { + return fx_f1(p_authK, p_rand, v_sqn, v_amf, v_mac_a); + } + + function f_f1star(in B128_Type p_authK, in B128_Type p_rand, in B48_Type v_sqn, in B16_Type v_amf, out B64_Type v_mac_s) return integer { + return fx_f1star(p_authK, p_rand, v_sqn, v_amf, v_mac_s); + } + + function f_f2345(in B128_Type p_authK, in B128_Type p_rand, out B64_Type v_res, out B128_Type v_ck, out B128_Type v_ik, out B48_Type v_ak) return integer { + return fx_f2345(p_authK, p_rand, v_res, v_ik, v_ck, v_ak); + } + + function f_f5star(in B128_Type p_authK, in B128_Type p_rand, out B48_Type p_ak) return integer { + return fx_f5star(p_authK, p_rand, p_ak); + } + + external function fx_set_op(in O16_Type p_op); + external function fx_f1(in B128_Type p_authK, in B128_Type p_rand, in B48_Type v_sqn, in B16_Type v_amf, out B64_Type v_mac_a) return integer; + external function fx_f1star(in B128_Type p_authK, in B128_Type p_rand, in B48_Type v_sqn, in B16_Type v_amf, out B64_Type v_mac_s) return integer; + external function fx_f2345(in B128_Type p_authK, in B128_Type p_rand, out B64_Type v_res, out B128_Type v_ck, out B128_Type v_ik, out B48_Type v_ak) return integer; + external function fx_f5star(in B128_Type p_authK, in B128_Type p_rand, out B48_Type p_ak) return integer; + + } // End of function fiveg_aka_security_network + +} // End of module LIB_NG_NAS_Functions \ No newline at end of file diff --git a/ttcn/Lib_NG_NAS/Lib_NG_NAS_Interface.ttcn b/ttcn/Lib_NG_NAS/Lib_NG_NAS_Interface.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..23dca7969370e684c9b7ee38b9bef1138e2225f3 --- /dev/null +++ b/ttcn/Lib_NG_NAS/Lib_NG_NAS_Interface.ttcn @@ -0,0 +1,58 @@ +/** + * @author ETSI / STF + * @version $URL:$ + * $Id:$ + * @desc This module provides the types used by the test component for NGAP tests. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS / 3GPP TS + */ +module Lib_NG_NAS_Interface { + + // LibCommon + import from LibCommon_Sync all; + + //Lib3GPP + import from NG_NAS_MsgContainers all; + import from NG_NAS_SecurityFunctions all; + + // LibNGAP + //import from NGAP_IEs language "ASN.1:1997" all; + //import from NGAP_PDU_Descriptions language "ASN.1:1997" all; + //import from LibNGAP_Pixits all; + import from LibNGAP_Interface all; + + group portDefinitions { + } // End of group portDefinitions + + group interfacePorts { + type component NGNASComponent extends NGAPComponent {//extends SelfSyncComp { + // Port + //port NGAPPort N2_gNBaMF_P; + + // Global variables + var template NG_NAS_UL_Message_Type vt_NgNasUl_Msg := omit; + var template NG_NAS_DL_Message_Type vt_NgNasDl_Msg := omit; + var octetstring vc_sendNAS_PDU :=''O; + var octetstring vc_recvNAS_PDU :=''O; + var octetstring vc_recvNAS_PDUDefault:=''O; + var NG_NAS_SecurityParams_Type vc_ng_nas_security_params_type := {}; + + // Init of values at component started + + // General timers + //timer tc_wait := PX_NGAP_TWAIT; + //timer tc_delay := 0.3; // delay next Request + + // Variables for storing default references + var default vc_default_nas; + var default vc_def_catchSyncStop_nas; + + } // End of type component NASComponent + + } // End of group interfacePorts + +} // End of module Lib_NG_NAS_Interface + diff --git a/ttcn/Lib_NG_NAS/Lib_NG_NAS_Pixits.ttcn b/ttcn/Lib_NG_NAS/Lib_NG_NAS_Pixits.ttcn new file mode 100755 index 0000000000000000000000000000000000000000..bee84881c3a6cae8a271914c4d778a502d17021a --- /dev/null +++ b/ttcn/Lib_NG_NAS/Lib_NG_NAS_Pixits.ttcn @@ -0,0 +1,25 @@ +/** +* @author ETSI / TTF041 +* @version $URL$ +* $Id$ +* @desc This module provides PICS for NGAP tests. +* @copyright ETSI Copyright Notification +* No part may be reproduced except as authorized by written permission. +* The copyright and the foregoing restriction extend to reproduction in all media. +* All rights reserved. +* @see ETSI TS +*/ +module Lib_NG_NAS_Pixits { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + modulepar B4_Type PX_SUPI_FORMAT := '0000'B; + + modulepar octetstring PX_SUPI_DIGITS := '00f110214300014444330302'O; + + modulepar O16_Type PX_USIM_OPERATOR_VARIANT_ALGORITHM_CONFIGURATION := '00000000000000000000000000000000'O; + + modulepar B128_Type PX_USIM_SECRET_KEY := oct2bit('00000000000000000000000000000000'O); + +} // End of module Lib_NG_NAS_Pixits \ No newline at end of file diff --git a/ttcn/Lib_NG_NAS/Lib_NG_NAS_Templates.ttcn b/ttcn/Lib_NG_NAS/Lib_NG_NAS_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9b04cf212df5fbb76c42c2d99424c75c5ca13b79 --- /dev/null +++ b/ttcn/Lib_NG_NAS/Lib_NG_NAS_Templates.ttcn @@ -0,0 +1,2223 @@ +module Lib_NG_NAS_Templates { + + // Lib3GPP/Common + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + // Lib3GPP/NG_NAS + import from NG_NAS_TypeDefs all; + import from NG_NAS_MsgContainers all; + import from NG_NAS_Templates all; + import from NG_NAS_Common all; + + // Lib3GPP/NasEmulation + import from NAS_CommonTemplates all; + + template (omit) NG_NAS_DL_Message_Type m_NG_AUTHENTICATION_REQUEST( + in NAS_KsiValue p_KeySetId, + in template (value) ABBA p_ABBA, + in template (omit) RAND p_RAND := omit, + in template (omit) AUTN p_AUTN := omit, + in template (omit) EAP_Message p_EAP := omit + ) modifies cs_NG_AUTHENTICATION_REQUEST := { + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Request := { + } + } // End of template m_NG_AUTHENTICATION_REQUEST + + template (present) NG_NAS_DL_Message_Type mw_NG_AUTHENTICATION_REQUEST( + template (present) NAS_KsiValue p_KeySetId := ?, + template (present) ABBA p_ABBA := ?, + template RAND p_RAND := *, + template AUTN p_AUTN := *, + template EAP_Message p_EAP := * + ) := { /* 24.501 cl. 8.2.1 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationRequest, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + ngNasKeySetId := cr_NAS_KeySetIdentifier(p_KeySetId, tsc_NasKsi_NativeSecurityContext), /* cl. 9.11.3.32 M V 1/2 */ + abba := p_ABBA, /* cl. 9.11.3.10 M LV 3-n */ + rand := p_RAND, /* cl. 9.11.3.16 O TV 17 IEI=21 */ + autn := p_AUTN, /* cl. 9.11.3.15 O TLV 18 IEI=20 */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + } // End of template mw_NG_AUTHENTICATION_REQUEST + + template (omit) NG_NAS_UL_Message_Type m_NG_AUTHENTICATION_RESPONSE( + in template (value) AuthenticationResponseParameter p_Res, + in template (omit) EAP_Message p_EAP := omit + ) := { /* 24.501 cl. 8.2.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Response := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationResponse, /* cl. 9.7 M V 1 */ + authResponseParam := p_Res, /* cl. 9.11.3.17 O TLV 18 IEI=2D */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + } // End of template m_NG_AUTHENTICATION_RESPONSE + + template (present) NG_NAS_UL_Message_Type mw_NG_AUTHENTICATION_RESPONSE( + template (present) AuthenticationResponseParameter p_Res := mw_AuthenticationResponseParameter(?), + template EAP_Message p_EAP := *) modifies cr_NG_AUTHENTICATION_RESPONSE := + { /* 24.501 cl. 8.2.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Response := {} + } // End of template mw_NG_AUTHENTICATION_RESPONSE + + template (value) NG_NAS_DL_Message_Type m_NG_AUTHENTICATION_RESULT( + in NAS_KsiValue p_KeySetId, + in template (omit) EAP_Message p_EAP, + in template (omit) ABBA p_ABBA + ) modifies cs_NG_AUTHENTICATION_RESULT := { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.3 */ + authentication_Result := { + } + } // End of template m_NG_AUTHENTICATION_RESULT + + template (present) NG_NAS_DL_Message_Type mw_NG_AUTHENTICATION_RESULT( + template (present) NAS_KsiValue p_KeySetId := ?, + template EAP_Message p_EAP := *, + template ABBA p_ABBA := * + ) := { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.3 */ + authentication_Result := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationResult, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + ngNasKeySetId := cr_NAS_KeySetIdentifier(p_KeySetId, tsc_NasKsi_NativeSecurityContext), /* cl. 9.11.3.32 M V 1/2 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + abba := p_ABBA /* cl. 9.11.3.10 M LV 3-n */ + } + } // End of template mw_NG_AUTHENTICATION_RESULT + + template (omit) NG_NAS_UL_Message_Type m_NG_AUTHENTICATION_FAILURE( + in template (value) GMM_GSM_Cause p_Cause, + in template (omit) AuthenticationFailureParameter p_AuthFailParam := omit + ) := { /* 24.501 cl. 8.2.4 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Failure := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationFailure, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + authFailureParam := p_AuthFailParam /* cl. 9.11.3.12 O TLV 16 IEI=30 */ + } + } // End of template m_NG_AUTHENTICATION_FAILURE + + template (present) NG_NAS_UL_Message_Type mw_NG_AUTHENTICATION_FAILURE( + template (present) GMM_GSM_Cause p_Cause := ?, + template AuthenticationFailureParameter p_AuthFailParam := * + ) modifies cr_NG_AUTHENTICATION_FAILURE := { /* 24.501 cl. 8.2.4 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + authentication_Failure := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationFailure, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + authFailureParam := p_AuthFailParam /* cl. 9.11.3.12 O TLV 16 IEI=30 */ + } + } // End of template mw_NG_AUTHENTICATION_FAILURE + + template (omit) NG_NAS_DL_Message_Type m_NG_AUTHENTICATION_REJECT( + in template (omit) EAP_Message p_EAP := omit + ) modifies cs_NG_AUTHENTICATION_REJECT := { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.5 */ + authentication_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationReject, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + } // End of template m_NG_AUTHENTICATION_REJECT + + template NG_NAS_DL_Message_Type mw_NG_AUTHENTICATION_REJECT( + template EAP_Message p_EAP := * + ) := { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.5 */ + authentication_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_AuthenticationReject, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + } + } // End of template mw_NG_AUTHENTICATION_REJECT + + template (omit) NG_NAS_UL_Message_Type m_NG_REGISTRATION_REQUEST( + in template (value) RegistrationType p_RegistrationType, + in template (value) NAS_KsiValue p_KeySetId, + in template (value) B1_Type p_Tsc, + in template (value) NG_MobileIdentity p_MobileId, + in template (omit) NAS_KeySetIdentifier p_NonCurrentKSI := omit, + in template (omit) NG_GMM_Cap p_GMM_Cap := omit, + in template (omit) NG_UE_SecurityCapability p_UESecurityCap := omit, + in template (omit) NSSAI p_ReqNSSAI := omit, + in template (omit) NG_TrackingAreaId p_TAI := omit, + in template (omit) UE_NetworkCap p_UE_NetworkCap := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) UE_Status p_UE_Status := omit, + in template (omit) NG_MobileIdentity p_AddGUTI := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) UE_UsageSetting p_UE_UsageSetting := omit, + in template (omit) NG_DRXparameter p_DRXparam := omit, + in template (omit) EPS_MessageContainer p_EPSMsg := omit, + in template (omit) LADN_Ind p_LADN_Ind := omit, + in template (omit) PayloadContainerType p_ContainerType := omit, // @sic R5w190113 sic@ + in template (omit) PayloadContainer p_Payload := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NG_UpdateType p_NG_UpdateType := omit, + in template (omit) MS_Clsmk2 p_MS_Clsmk2 := omit, + in template (omit) CodecList p_SupportedCodecs := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, // @sic R5s190543 sic@ + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) ExtdDRXParams p_ExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) MappedNSSAI p_MappedNSSAI := omit, + in template (omit) AddInfoRequest p_AddInfoRequest := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) N5GCInd p_N5GCInd := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NID p_NId := omit, + in template (omit) PLMN_IdIE p_MSPLMNwDisasterCondition := omit, + in template (omit) PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit + ) := { /* 24.501 cl. 8.2.6 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationRequest, /* cl. 9.7 M V 1 */ + ngNasKSI := cs_NAS_KeySetIdentifier_lv(valueof(p_KeySetId), valueof(p_Tsc)), /* cl. 9.11.3.32 M V 1/2 */ + registrationType := p_RegistrationType, /* cl. 9.11.3.7 M LV 2 */ + ngMobileId := p_MobileId, /* cl. 9.11.3.4 M LV 5-? */ + nonCurrentNativeKSI := p_NonCurrentKSI, /* cl. 9.11.3.32 O TV 1 IEI=C- */ + gmmCapability := p_GMM_Cap, /* cl. 9.11.3.1 O TLV 3-15 IEI=10 */ + ueSecurityCapability := p_UESecurityCap, /* cl. 9.11.3.54 O TLV 4-10 IEI=2E */ + requestedNSSAI := p_ReqNSSAI, /* cl. 9.11.3.37 O TLV 4-74 IEI=2F */ + lastVisitedRegisteredTai := p_TAI, /* cl. 9.11.3.8 O TV 7 IEI=52 */ + s1_UE_Capability := p_UE_NetworkCap, /* cl. 9.11.3.48 O LV 4-15 IEI=65 */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.3.57 O TLV 4-34 IEI=40 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.3.44 O TLV 4-34 IEI=50 */ + micoInd := p_MICO_Ind, /* cl. 9.11.3.31 O TLV 1 IEI=B */ + ueStatus := p_UE_Status, /* cl. 9.11.3.56 O TLV 3 IEI=2B */ + additionalGUTI := p_AddGUTI, /* cl. 9.11.3.4 O TLV 5-? IEI=2C */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 */ + ueUsageSetting := p_UE_UsageSetting, /* cl. 9.11.3.55 O TLV 3 IEI=60 */ + reqDRXParams := p_DRXparam, /* cl. 9.11.3.22 O TLV ? IEI=51 */ + epsMessage := p_EPSMsg, /* cl. 9.11.3.24 O TLV-E ? IEI=7C */ + ladnInd := p_LADN_Ind, /* cl. 9.11.3.29 O TLV-E 3-811 IEI=7E */ + payloadContainerType := p_ContainerType, /* cl. 9.11.3.40 O TV 1 IEI=8 Mar 19 @sic R5w190113 sic@*/ + payload := p_Payload, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + networkSlicingInd := p_NetworkSlicingInd, /* cl. 9.11.3.36 O TV 1 IEI=9 Dec18 */ + updateType := p_NG_UpdateType, /* cl. 9.11.3.9A O TLV 3 IEI=53 Dec18 */ + msClassmark2 := p_MS_Clsmk2, /* cl. 9.11.3.31C O TLV 5 IEI=41 Sep20 @sic R5s201387 Baseline Moving sic@ */ + supportedCodecs := p_SupportedCodecs, /* cl. 9.11.3.51A O TLV 5-n IEI=42 Sep20 @sic R5s201387 Baseline Moving sic@ */ + nasMsg := p_Msg, /* cl. 9.11.3.33 O TLV-E 4-n IEI=71 Dec18 */ + epsBearerContextStatus := p_EPS_BearerContextStatus, /* cl. 9.11.3.23A O TLV 4 IEI=60 Jun19 @sic R5s190543 sic@ */ + requestedExtdDRXParams := p_ExtdDRXParams, /* cl. 9.11.3.26A O TLV 3 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3324Value := p_T3324, /* cl. 9.11.2.5 O TLV 3 IEI=6A Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapabilityId := p_UERadioCapId, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedMappedNSSAI := p_MappedNSSAI, /* cl. 9.11.3.31B O TLV 3-42 IEI=35 Sep20 @sic R5s201387 Baseline Moving sic@ */ + additionalInfoReq := p_AddInfoRequest, /* cl. 9.11.3.12A O TLV 3 IEI=48 Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedWUSAssistanceInfo := p_WUSAssistInfo, /* cl. 9.11.3.71 O TLV 3-n IEI=1A Sep20 @sic R5s201387 Baseline Moving sic@ */ + n5GCInd := p_N5GCInd, /* cl. 9.11.3.72 O T 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedNB_N1DRXParams := p_NB_N1ModeDRXParams, /* cl. 9.11.3.73 O TLV 3 IEI=30 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict, /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nId := p_NId, /* cl. 9.11.3.79 O TLV 8 IEI=32 Sep22 @sic R5s221179 Baseline Moving sic@ */ + msPLMNwDisasterCondition := p_MSPLMNwDisasterCondition, /* cl. 9.11.3.85 O TLV 5 IEI=16 Sep22 @sic R5s221179 Baseline Moving sic@ */ + requestedPEIPS_AssistInfo := p_RequestedPEIPS_AssistInfo, /* cl. 9.11.3.80 O TLV 3-n IEI=2A Sep22 @sic R5s221179 Baseline Moving sic@ */ + t3512Value := p_T3512 /* cl. 9.11.2.5 O TLV 3 IEI=3B Jun23 @sic R5s230533 sic@ */ + } + } // End of template m_NG_REGISTRATION_REQUEST + + template (present) NG_NAS_UL_Message_Type mw_NG_REGISTRATION_REQUEST( + template (present) RegistrationType p_RegistrationType := ?, + template (present) NAS_KsiValue p_KeySetId := ?, + template (present) B1_Type p_Tsc := ?, + template (present) NG_MobileIdentity p_MobileId := ?, + template NAS_KeySetIdentifier p_NonCurrentKSI := *, + template NG_GMM_Cap p_GMM_Cap := *, + template NG_UE_SecurityCapability p_UESecurityCap := *, + template NSSAI p_ReqNSSAI := *, + template NG_TrackingAreaId p_TAI := *, + template UE_NetworkCap p_UE_NetworkCap := *, + template ULDataStatus p_ULDataStatus := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template MICO_Ind p_MICO_Ind := *, + template UE_Status p_UE_Status := *, + template NG_MobileIdentity p_AddGUTI := *, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := *, + template UE_UsageSetting p_UE_UsageSetting := *, + template NG_DRXparameter p_DRXparam := *, + template EPS_MessageContainer p_EPSMsg := *, + template LADN_Ind p_LADN_Ind := *, + template PayloadContainerType p_ContainerType := *, // @sic R5w190113 sic@ + template PayloadContainer p_Payload := *, + template NetworkSlicingInd p_NetworkSlicingInd := *, + template NG_UpdateType p_NG_UpdateType := *, + template MS_Clsmk2 p_MS_Clsmk2 := *, + template CodecList p_SupportedCodecs := *, + template EPS_BearerContextStatus p_EPS_BearerContextStatus := *, // @sic R5s190543 sic@ + template NASMessageContainer p_Msg := *, + template ExtdDRXParams p_ExtdDRXParams := *, + template GPRS_Timer3 p_T3324 := *, + template UERadioCapId p_UERadioCapId := *, + template MappedNSSAI p_MappedNSSAI := *, + template AddInfoRequest p_AddInfoRequest := *, + template WUSAssistInfo p_WUSAssistInfo := *, + template N5GCInd p_N5GCInd := *, + template NB_N1ModeDRXParams p_NB_N1ModeDRXParams := *, + template UE_RequestType p_UeRequestType := *, + template NG_PagingRestriction p_PagingRestrict := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template NID p_NId := *, + template PLMN_IdIE p_MSPLMNwDisasterCondition := *, + template PEIPS_AssistInfo p_RequestedPEIPS_AssistInfo := *, + template GPRS_Timer3 p_T3512 := * + ) modifies cr_NG_REGISTRATION_REQUEST := { /* 24.501 cl. 8.2.6 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Request := { + } + } // End of template mw_NG_REGISTRATION_REQUEST + + template (value) NG_UpdateType m_NG_Update( + in template (value) B1_Type p_NgRAN_RCU, + in template (value) B1_Type p_SmsRequested, + in template (value) B2_Type p_EPS_PNB_CIoT, + in template (value) B2_Type p_NG_PNB_CIoT + ) := { /* 24.501 cl. 9.11.3.9A; + @sic R5s201387 Baseline Moving sic@ */ + /* @status APPROVED (NR5GC) */ + iei := '53'O, + iel := '01'O, + spare := '00'B, + eps_PNB_CIoT := p_EPS_PNB_CIoT, + ng_PNB_CIoT := p_NG_PNB_CIoT, + ngRAN_RCU := p_NgRAN_RCU, + smsRequested := p_SmsRequested + } // End of template m_NG_Update + + template (present) NG_UpdateType mw_NG_Update( + template (present) B1_Type p_NgRAN_RCU := ?, + template (present) B1_Type p_SmsRequested := ?, + template (present) B2_Type p_EPS_PNB_CIoT := ?, + template (present) B2_Type p_NG_PNB_CIoT := ? + ) modifies cr_NG_Update := { /* 24.501 cl. 9.11.3.9A; + @sic R5s201387 Baseline Moving sic@ */ + /* @status APPROVED (NR5GC) */ + iei := '53'O, + iel := '01'O, + spare := '00'B, + eps_PNB_CIoT := p_EPS_PNB_CIoT, + ng_PNB_CIoT := p_NG_PNB_CIoT, + ngRAN_RCU := p_NgRAN_RCU, + smsRequested := p_SmsRequested + } // End of template mw_NG_Update + + template (value) NG_NAS_DL_Message_Type m_NG_REGISTRATION_ACCEPT( + in template (value) RegistrationResult p_RegistrationResult, + in template (omit) NG_MobileIdentity p_GUTI := omit, + in template (omit) PLMN_List p_EPLMNs := omit, + in template (omit) NG_TrackingAreaIdList p_TAIList := omit, + in template (omit) NSSAI p_AllowedNSSAI := omit, + in template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + in template (omit) NSSAI p_ConfiguredNSSAI := omit, + in template (omit) NG_NetworkFeatureSupport p_NwkFeatureSupport := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) PDU_SessionReactivationResult p_PDU_SessionReactResult := omit, + in template (omit) PDU_SessionReactivationError p_PDU_SessionReactError := omit, + in template (omit) LADN_Info p_LADN_Info := omit, + in template (omit) MICO_Ind p_MICO_Ind := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) ServiceAreaIdList p_SAIList := omit, + in template (omit) GPRS_Timer3 p_T3512 := omit, + in template (omit) GPRS_Timer2 p_Non3GPPDereg := omit, + in template (omit) GPRS_Timer2 p_T3502 := omit, + in template (omit) EmergNumList p_EmergNumList := omit, + in template (omit) ExtdEmergNumList p_ExtdEmergNumList := omit, + in template (omit) SORTransparentContainer p_SOR := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) InclusionModeNSSAI p_InclusionModeNSSAI := omit, + in template (omit) OperatorAccessCatDefinitions p_AccessCatDefinition := omit, + in template (omit) NG_DRXparameter p_NG_DRXparameter := omit, + in template (omit) Non3GPP_NW_ProvidedPolicies p_Non3GPP_NW_ProvidedPolicies := omit, + in template (omit) EPS_BearerContextStatus p_EPS_BearerContextStatus := omit, + in template (omit) ExtdDRXParams p_NegotiatedExtdDRXParams := omit, + in template (omit) GPRS_Timer3 p_T3447 := omit, + in template (omit) GPRS_Timer3 p_T3448 := omit, + in template (omit) GPRS_Timer3 p_T3324 := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) UERadioCapIdDeletion p_UERadioCapIdDeletion := omit, + in template (omit) NSSAI p_PendingNSSAI := omit, + in template (omit) NG_CipheringKeyData p_CipheringKeyData := omit, + in template (omit) CAGInfoList p_CAGInfoList := omit, + in template (omit) TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig := omit, + in template (omit) WUSAssistInfo p_WUSAssistInfo := omit, + in template (omit) NB_N1ModeDRXParams p_NB_N1ModeDRXParams := omit, + in template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) PEIPS_AssistInfo p_NegotiatedPEIPS_AssistInfo := omit, + in template (omit) NG_AddReqResult p_AddRequestResult := omit, + in template (omit) NSSRG_Info p_NssrgInfo := omit, + in template (omit) RegistrationWaitRange p_DisasterRoamingWaitRange := omit, + in template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + in template (omit) DisasterPLMNList p_DisasterPLMNList := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit, + in template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + in template (omit) NSAG_Info p_NsagInfo := omit + ) modifies cs_NG_REGISTRATION_ACCEPT := { /* 24.501 cl. 8.2.7 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Accept := { + } + } // End of template m_NG_REGISTRATION_ACCEPT + + template (present) NG_NAS_DL_Message_Type mw_NG_REGISTRATION_ACCEPT( + template (present) RegistrationResult p_RegistrationResult := ?, + template NG_MobileIdentity p_GUTI := *, + template PLMN_List p_EPLMNs := *, + template NG_TrackingAreaIdList p_TAIList := *, + template NSSAI p_AllowedNSSAI := *, + template RejectedNSSAI p_RejectedNSSAI := *, + template NSSAI p_ConfiguredNSSAI := *, + template NG_NetworkFeatureSupport p_NwkFeatureSupport := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template PDU_SessionReactivationResult p_PDU_SessionReactResult := *, + template PDU_SessionReactivationError p_PDU_SessionReactError := *, + template LADN_Info p_LADN_Info := *, + template MICO_Ind p_MICO_Ind := *, + template NetworkSlicingInd p_NetworkSlicingInd := *, + template ServiceAreaIdList p_SAIList := *, + template GPRS_Timer3 p_T3512 := *, + template GPRS_Timer2 p_Non3GPPDereg := *, + template GPRS_Timer2 p_T3502 := *, + template EmergNumList p_EmergNumList := *, + template ExtdEmergNumList p_ExtdEmergNumList := *, + template SORTransparentContainer p_SOR := *, + template EAP_Message p_EAP := *, + template InclusionModeNSSAI p_InclusionModeNSSAI := *, + template OperatorAccessCatDefinitions p_AccessCatDefinition := *, + template NG_DRXparameter p_NG_DRXparameter := *, + template Non3GPP_NW_ProvidedPolicies p_Non3GPP_NW_ProvidedPolicies := *, + template EPS_BearerContextStatus p_EPS_BearerContextStatus := *, + template ExtdDRXParams p_NegotiatedExtdDRXParams := *, + template GPRS_Timer3 p_T3447 := *, + template GPRS_Timer3 p_T3448 := *, + template GPRS_Timer3 p_T3324 := *, + template UERadioCapId p_UERadioCapId := *, + template UERadioCapIdDeletion p_UERadioCapIdDeletion := *, + template NSSAI p_PendingNSSAI := *, + template NG_CipheringKeyData p_CipheringKeyData := *, + template CAGInfoList p_CAGInfoList := *, + template TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig := *, + template WUSAssistInfo p_WUSAssistInfo := *, + template NB_N1ModeDRXParams p_NB_N1ModeDRXParams := *, + template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template PEIPS_AssistInfo p_NegotiatedPEIPS_AssistInfo := *, + template NG_AddReqResult p_AddRequestResult := *, + template NSSRG_Info p_NssrgInfo := *, + template RegistrationWaitRange p_DisasterRoamingWaitRange := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template DisasterPLMNList p_DisasterPLMNList := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template NSAG_Info p_NsagInfo + ) := { /* 24.501 cl. 8.2.7 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationAccept, /* cl. 9.7 M V 1 */ + registrationResult := p_RegistrationResult, /* cl. 9.11.3.6 M LV 2 */ + guti := p_GUTI, /* cl. 9.11.3.4 O TLV 13 IEI=2C */ + equivalentPlmns := p_EPLMNs, /* cl. 9.11.3.45 O TLV 5-47 IEI=4A */ + taiList := p_TAIList, /* cl. 9.11.3.9 O TLV 9-114 IEI=54 */ + allowedNSSAI := p_AllowedNSSAI, /* cl. 9.11.3.37 O TLV 4-74 IEI=70 */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=0x11 */ + configuredNSSAI := p_ConfiguredNSSAI, /* cl. 9.11.3.37 O TLV 4-146 IEI=31 */ + ngs_NetworkFeatureSupport := p_NwkFeatureSupport, /* cl. 9.11.3.5 O TLV 3-5 IEI=21*/ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.3.44 O TLV 4-34 IEI=50 */ + pduSessionReactivationResult := p_PDU_SessionReactResult, /* cl. 9.11.3.42 O TLV 4-32 IEI=26 */ + pduSessionReactResultError := p_PDU_SessionReactError, /* cl. 9.11.3.43 O TLV-E 5-515 IEI=7E */ + ladnInfo := p_LADN_Info, /* cl. 9.11.3.30 O TLV-E 12-1707 IEI=79 */ + micoInd := p_MICO_Ind, /* cl. 9.11.3.31 O TV 1 IEI=B */ + networkSlicingInd := p_NetworkSlicingInd, /* cl. 9.11.3.36 O TV 1 IEI=9 */ + saiList := p_SAIList, /* cl. 9.11.3.49 O TLV 6-114 IEI=27 */ + t3512Value := p_T3512, /* cl. 9.11.2.5 O TLV 3 IEI=5E */ + non3GPPDeregisterValue := p_Non3GPPDereg, /* cl. 9.11.2.4 O TLV 3 IEI=5D */ + t3502Value := p_T3502, /* cl. 9.11.2.4 O TLV 3 IEI=16 */ + emergencyNumberList := p_EmergNumList, /* cl. 9.11.3.23 O TLV 5-50 IEI=34 */ + xtdEmergencyNumberList := p_ExtdEmergNumList, /* cl. 9.11.3.26 O TLV-E 6-65538 IEI=7A */ + sorTransparentContainer := p_SOR, /* cl. 9.11.3.51 O TLV-E 20-2048 IEI=7F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78*/ + inclusionModeNSSAI := p_InclusionModeNSSAI, /* cl. 9.11.3.37A O TV 1 IEI=A */ + operatorAccessCatDefs := p_AccessCatDefinition, /* cl. 9.11.3.38 O TLV-E 4-n IEI=76 */ + negotiatedDRXParams := p_NG_DRXparameter, /* cl. 9.11.3.2A O TLV 3 IEI=51 */ + non3GPP_NW_ProvidedPolicies := p_Non3GPP_NW_ProvidedPolicies, /* cl. 9.11.3.58 O TV 1 IEI = ? Mar 19 @sic R5w190113 sic@ */ + epsBearerContextStatus := p_EPS_BearerContextStatus, /* cl. 9.11.3.23A O TLV 4 IEI=60 Jun19 @sic R5s190543 sic@ */ + negotiatedExtdDRXParams := p_NegotiatedExtdDRXParams, /* cl. 9.11.3.26A O TLV 3 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3447Value := p_T3447, /* cl. 9.11.2.5 O TLV 3 IEI=6C Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3448Value := p_T3448, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + t3324Value := p_T3324, /* cl. 9.11.2.5 O TLV 3 IEI=6A Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapabilityId := p_UERadioCapId, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapIdDeletionInd := p_UERadioCapIdDeletion, /* cl. 9.11.3.69 O TV 1 IEI=E Sep20 @sic R5s201387 Baseline Moving sic@ */ + pendingNSSAI := p_PendingNSSAI, /* cl. 9.11.3.37 O TLV 4-146 IEI=39 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cipheringKeyData := p_CipheringKeyData, /* cl. 9.11.3.18C O TLV-E 34-n IEI=74 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + truncatedS_TMSIConfig := p_TruncatedS_TMSIConfig, /* cl. 9.11.3.70 O TLV 3 IEI=1B Sep20 @sic R5s201387 Baseline Moving sic@ */ + negotiatedWUSAssistanceInfo := p_WUSAssistInfo, /* cl. 9.11.3.71 O TLV 3-n IEI=1C Sep20 @sic R5s201387 Baseline Moving sic@ */ + negotiatedNB_N1DRXParams := p_NB_N1ModeDRXParams, /* cl. 9.11.3.73 O TLV 3 IEI=29 Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=7B Sep22 @sic R5s221179 Baseline Moving sic@ */ + negotiatedPEIPS_AssistInfo := p_NegotiatedPEIPS_AssistInfo, /* cl. 9.11.3.80 O TLV 3-n IEI=33 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ngAddRequestResult := p_AddRequestResult, /* cl. 9.11.3.81 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nssrgInfo := p_NssrgInfo, /* cl. 9.11.3.82 O TLV-E 7-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterRoamingWaitRange := p_DisasterRoamingWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=14 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterPLMNList := p_DisasterPLMNList, /* cl. 9.11.3.83 O TLV 2-n IEI=13 Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService, /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nsagInfo := p_NsagInfo /* cl. 9.11.3.87 O TLV-E 10-n IEI=7C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_REGISTRATION_ACCEPT + + template (value) NG_NAS_UL_Message_Type m_NG_REGISTRATION_COMPLETE( + in template (value) SORTransparentContainer p_SOR + ) := { /* 24.501 cl. 8.2.8 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Complete := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationComplete, /* cl. 9.7 M V 1 */ + sorTransparentContainer := p_SOR /* cl. 9.11.3.49 O TLV-E 20-2048 IEI=7F */ + } + } // End of template m_NG_REGISTRATION_COMPLETE + + template (present) NG_NAS_UL_Message_Type mw_NG_REGISTRATION_COMPLETE( + template SORTransparentContainer p_SOR := ? + ) modifies cr_NG_REGISTRATION_COMPLETE := { /* 24.501 cl. 8.2.8 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + registration_Complete := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationComplete, /* cl. 9.7 M V 1 */ + sorTransparentContainer := p_SOR /* cl. 9.11.3.49 O TLV-E 20-2048 IEI=7F */ + } + } // End of template mw_NG_REGISTRATION_COMPLETE + + template (value) NG_NAS_DL_Message_Type m_NG_REGISTRATION_REJECT( + in template (value) GMM_GSM_Cause p_Cause, + in template (omit) GPRS_Timer2 p_T3346 := omit, + in template (omit) GPRS_Timer2 p_T3502 := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + in template (omit) CAGInfoList p_CAGInfoList := omit, + in template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + in template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + in template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + in template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit + ) modifies cs_NG_REGISTRATION_REJECT := { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 8.2.9 */ + registration_Reject := { + } + } // End of template m_NG_REGISTRATION_REJECT + + template (present) NG_NAS_DL_Message_Type mw_NG_REGISTRATION_REJECT( + template (present) GMM_GSM_Cause p_Cause := ?, + template GPRS_Timer2 p_T3346 := *, + template GPRS_Timer2 p_T3502 := *, + template EAP_Message p_EAP := *, + template RejectedNSSAI p_RejectedNSSAI := *, + template CAGInfoList p_CAGInfoList := *, + template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template GPRS_Timer3 p_LowerBoundTimerValue := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + ) := { /* @status APPROVED (NR5GC, NR5GC_IRAT) */ + /* 24.501 cl. 8.2.9 */ + registration_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_RegistrationReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + t3346 := p_T3346, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + t3502 := p_T3502, /* cl. 9.11.2.4 O TLV 3 IEI=16 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=69 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + lowerBoundTimerValue := p_LowerBoundTimerValue, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=3B Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=3C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_REGISTRATION_REJECT + + template (value) NG_NAS_UL_Message_Type m_NG_DEREGISTRATION_REQUEST_MO( + in template (value) DeregisterType p_DeregisterType, + in template (value) NAS_KeySetIdentifier p_KSI, + in template (value) NG_MobileIdentity p_MobileId + ) := { /* 24.501 cl. 8.2.12 (UE originating deregister) */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + deregistration_RequestMO := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationRequest_MO, /* cl. 9.7 M V 1 */ + ngKSI := p_KSI, /* cl. 9.11.3.32 M V 1/2 */ + deregistrationType := p_DeregisterType, /* cl. 9.11.3.20 M V 1/2 */ + ngMobileId := p_MobileId /* cl. 9.11.3.4 M LV 5-? */ + } + } // End of template m_NG_DEREGISTRATION_REQUEST_MO + + template (present) NG_NAS_UL_Message_Type mw_NG_DEREGISTRATION_REQUEST_MO( + template (present) DeregisterType p_DeregisterType := ?, + template (present) NAS_KeySetIdentifier p_KSI := ?, + template (present) NG_MobileIdentity p_MobileId := ? + ) modifies cr_NG_DEREGISTRATION_REQUEST_MO := + { /* 24.501 cl. 8.2.12 (UE originating deregister) */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + deregistration_RequestMO := { + } + } // End of template mw_NG_DEREGISTRATION_REQUEST_MO + + template (value) NG_NAS_DL_Message_Type m_NG_DEREGISTRATION_ACCEPT_MO modifies cs_NG_DEREGISTRATION_ACCEPT := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.13/15 (DL) */ + deregistration_Accept := { + } + } // End of template m_NG_DEREGISTRATION_ACCEPT_MO + + template (present) NG_NAS_UL_Message_Type mw_NG_DEREGISTRATION_ACCEPT_MO modifies cr_NG_DEREGISTRATION_ACCEPT := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.13/15 (UL) */ + deregistration_Accept := { + } + } // End of template mw_NG_DEREGISTRATION_ACCEPT_MO + + template (omit) NG_NAS_DL_Message_Type m_NG_DEREGISTRATION_REQUEST_MT( + in template (value) DeregisterType p_Type, + in template (omit) GMM_GSM_Cause p_Cause := omit, + in template (omit) GPRS_Timer2 p_T3346 := omit, + in template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + in template (omit) CAGInfoList p_CAGInfoList := omit, + in template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + in template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + in template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + in template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit + ) modifies cs_NG_DEREGISTRATION_REQUEST_MT := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.14 (UE terminated deregister) */ + deregistration_RequestMT := { + } + } // End of template m_NG_DEREGISTRATION_REQUEST_MT + + template (present) NG_NAS_DL_Message_Type mw_NG_DEREGISTRATION_REQUEST_MT( + template (present) DeregisterType p_Type := ?, + template GMM_GSM_Cause p_Cause := *, + template GPRS_Timer2 p_T3346 := *, + template RejectedNSSAI p_RejectedNSSAI := *, + template CAGInfoList p_CAGInfoList := *, + template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template GPRS_Timer3 p_LowerBoundTimerValue := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + ) := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.14 (UE terminated deregister) */ + deregistration_RequestMT := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationRequest_MT, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + deregistrationType := p_Type, /* cl. 9.11.3.20 M V 1/2 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 O TV 2 IEI=058 */ + t3346 := p_T3346, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=69 Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + lowerBoundTimerValue := p_LowerBoundTimerValue, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=3B Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=3C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_DEREGISTRATION_REQUEST_MT + + template (value) NG_NAS_DL_Message_Type m_NG_DEREGISTRATION_ACCEPT_MT modifies cs_NG_DEREGISTRATION_ACCEPT := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.13/15 (DL) */ + deregistration_Accept := { + } + } // End of template m_NG_DEREGISTRATION_ACCEPT_MT + + template (present) NG_NAS_UL_Message_Type mw_NG_DEREGISTRATION_ACCEPT_MT modifies cr_NG_DEREGISTRATION_ACCEPT := + { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.2.13/15 (UL) */ + deregistration_Accept := { + } + } // End of template mw_NG_DEREGISTRATION_ACCEPT_MT + + template (omit) NG_NAS_DL_Message_Type m_NG_SECURITY_MODE_COMMAND( + in template (value) NG_NAS_SecurityAlgorithms p_Algs, + in NAS_KsiValue p_KeySetId, + in NG_UE_SecurityCapability p_UECap, + in template (omit) IMEISV_Request p_IMEISV := omit, + in template (omit) NAS_SecurityAlgorithms p_EPSAlgs := omit, + in template (omit) AdditionalSecurityInfo p_AddInfo := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) ABBA p_ABBA := omit, + in template (omit) S1_UE_SecurityCapability p_ReplayedSecurityCap := omit + ) modifies cs_NG_SECURITY_MODE_COMMAND := { /* 24.501 cl. 8.2.25 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Mode_Command := { + } + } // End of template m_NG_SECURITY_MODE_COMMAND + + template (present) NG_NAS_DL_Message_Type mw_NG_SECURITY_MODE_COMMAND( + template (present) NG_NAS_SecurityAlgorithms p_Algs := ?, + template (present) NAS_KsiValue p_KeySetId := ?, + template (present) NG_UE_SecurityCapability p_UECap := ?, + template IMEISV_Request p_IMEISV := *, + template NAS_SecurityAlgorithms p_EPSAlgs := *, + template AdditionalSecurityInfo p_AddInfo := *, + template EAP_Message p_EAP := *, + template ABBA p_ABBA := *, + template S1_UE_SecurityCapability p_ReplayedSecurityCap := * + ) := { /* 24.501 cl. 8.2.25 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Mode_Command := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeCommand, /* cl. 9.7 M V 1 */ + nasSecurityAlgorithms := p_Algs, /* cl. 9.11.3.34 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + ngNasKSI := {iei := ?, tsc := ?, nasKeySetId := p_KeySetId}, // FIXME FSCOM To be enhanced + ueSecurityCapability := p_UECap, /* cl. 9.11.3.54 M LV 3-9 */ + imeisvRequest := p_IMEISV, /* cl. 9.11.3.28 O TV 1 IEI=E */ + epsSecurityAlgorithms := p_EPSAlgs, /* cl. 9.11.3.25 O TV 2 IEI=57 */ + add5GSecurityInfo := p_AddInfo, /* cl. 9.11.3.12 O TLV 3 IEI=36 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + abba := p_ABBA, /* cl. 9.11.3.10 O TLV 4-n IEI=38 Dec18 */ + replayedUESecurityCap := p_ReplayedSecurityCap /* cl. 9.11.3.48 O TLV 4-7 IEI=19 Dec18 */ + } + } // End of template mw_NG_SECURITY_MODE_COMMAND + + template (value) NG_NAS_UL_Message_Type m_NG_SECURITY_MODE_COMPLETE( + in template (value) NG_MobileIdentity p_IMEISV, + in template (value) ReplayedNASMessageContainer p_NASMsg, + in template (value) NG_MobileIdentity p_NonIMEISV_PEI + ) := { /* 24.501 cl. 8.2.26 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Mode_Complete := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeComplete, /* cl. 9.7 M V 1 */ + imeisv := p_IMEISV, /* cl. 9.11.3.4 O TLV 11 IEI=2C */ + nasMsg := p_NASMsg, /* cl. 9.11.3.33 O TLV-E 3-n IEI=7D */ + nonIMEISV_PEI := p_NonIMEISV_PEI /* cl. 9.11.3.4 O TLV-E 7-n IEI=78 Sep20 @sic R5s201387 Baseline Moving sic@ */ + } + } // End of template m_NG_SECURITY_MODE_COMPLETE + + template (present) NG_NAS_UL_Message_Type mw_NG_SECURITY_MODE_COMPLETE( + template (present) NG_MobileIdentity p_IMEISV := ?, + template (present) ReplayedNASMessageContainer p_NASMsg := ?, + template (present) NG_MobileIdentity p_NonIMEISV_PEI := ? + ) modifies cr_NG_SECURITY_MODE_COMPLETE := { /* 24.501 cl. 8.2.26 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + security_Mode_Complete := { + } + } // End of template mw_NG_SECURITY_MODE_COMPLETE + + template (value) NG_NAS_UL_Message_Type m_NG_SECURITY_MODE_REJECT( + in template (value) GMM_GSM_Cause p_Cause + ) := { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.27 */ + security_Mode_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause /* cl. 9.11.3.2 M V 1 */ + } + } // End of template m_NG_SECURITY_MODE_REJECT + + template (present) NG_NAS_UL_Message_Type mw_NG_SECURITY_MODE_REJECT( + template (present) GMM_GSM_Cause p_Cause := ? + ) modifies cr_NG_SECURITY_MODE_REJECT := + { /* @status APPROVED (NR5GC) */ + /* 24.501 cl. 8.2.27 */ + security_Mode_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_SecurityModeReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause /* cl. 9.11.3.2 M V 1 */ + } + } // End of template mw_NG_SECURITY_MODE_REJECT + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_ESTABLISHMENT_REQUEST( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI, + in template (omit) PDU_SessionType p_PDU_SessionType := omit, + in template (omit) SSC_Mode p_SSC_Mode := omit, + in template (omit) NG_UE_SM_Cap p_UECap := omit, + in template (omit) MaxNumPacketFilters p_MaxNumPacketFilters := omit, + in template (omit) IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := omit, + in template (omit) AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := omit, + in template (omit) SM_PDU_DN_RequestContainer p_PDUReq := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + in template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + in template (omit) DS_TT_EthernetPortMACAddr p_DS_TT_EthernetPortMACAddr := omit, + in template (omit) UE_DS_TT_ResidenceTime p_UE_DS_TT_ResidenceTime := omit, + in template (omit) PortManagementInfoContainer p_PortManagementInfoContainer := omit, + in template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + in template (omit) PDU_Address p_SuggestedInterfaceId := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) RequestedMBSContainer p_RequestedMBS := omit, + in template (omit) PDUSessionPairId p_PduSessionPairId := omit, + in template (omit) RSN p_RSN := omit + ) := { /* 24.501 cl. 8.3.1 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + pdu_Session_Establishment_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionEstablishmentRequest, /* cl. 9.7 M V 1 */ + integrityProtMaxDataRate := p_IntegrityProtMaxDataRate, /* cl. 9.11.4.7 M V 2 */ + pduSessionType := p_PDU_SessionType, /* cl. 9.11.4.11 O TV 1 IEI=9 */ + sscMode := p_SSC_Mode, /* cl. 9.11.4.16 O TV 1 IEI=A */ + smCapability := p_UECap, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + maxNumPacketFilters := p_MaxNumPacketFilters, /* cl. 9.11.4.6 O TV 3 IEI=55 */ + alwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq, /* cl. 9.11.4.4 O TV 1 IEI=B */ + smPDU_RequestContainer := p_PDUReq, /* cl. 9.11.4.15 O TLV ? ? */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ds_TT_EthernetPortMACAddr := p_DS_TT_EthernetPortMACAddr, /* cl. 9.11.4.25 O TLV 8 IEI=6E Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueDS_TT_ResidenceTime := p_UE_DS_TT_ResidenceTime, /* cl. 9.11.4.26 O TLV 10 IEI=6F Sep20 @sic R5s201387 Baseline Moving sic@ */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + suggestedInterfaceId := p_SuggestedInterfaceId, /* cl. 9.11.4.10 O TLV 11 IEI=29 Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + requestedMBS := p_RequestedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pduSessionPairId := p_PduSessionPairId, /* cl. 9.11.4.32 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + rsn := p_RSN /* cl. 9.11.4.33 O TLV 3 IEI=35 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template m_NG_PDU_SESSION_ESTABLISHMENT_REQUEST + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_ESTABLISHMENT_REQUEST( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template PDU_SessionType p_PDU_SessionType, + template SSC_Mode p_SSC_Mode := *, + template NG_UE_SM_Cap p_UECap := *, + template MaxNumPacketFilters p_MaxNumPacketFilters := *, + template IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := *, + template AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := *, + template SM_PDU_DN_RequestContainer p_PDUReq := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template IPHeaderCompressionConfig p_IPHeaderCompConfig := *, + template DS_TT_EthernetPortMACAddr p_DS_TT_EthernetPortMACAddr := *, + template UE_DS_TT_ResidenceTime p_UE_DS_TT_ResidenceTime := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := *, + template PDU_Address p_SuggestedInterfaceId := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template RequestedMBSContainer p_RequestedMBS := *, + template PDUSessionPairId p_PduSessionPairId := *, + template RSN p_RSN + ) modifies cr_NG_PDU_SESSION_ESTABLISHMENT_REQUEST := { /* 24.501 cl. 8.3.1 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + pdu_Session_Establishment_Request := { + } + } // End of template mw_NG_PDU_SESSION_ESTABLISHMENT_REQUEST + + template (value) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in ProcedureTransactionIdentifier p_PTI, + in template (value) SSC_Mode p_SSC_Mode, + in template (value) PDU_SessionType p_PDU_SessionType, + in template (value) QoS_Rules p_QoS_Rules, + in template (value) Session_AMBR p_Session_AMBR, + in template (omit) GMM_GSM_Cause p_Cause := omit, + in template (omit) PDU_Address p_PDU_Address := omit, + in template (omit) GPRS_Timer p_RQTimer := omit, + in template (omit) S_NSSAI_Type p_S_NSSAI := omit, + in template (omit) AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd := omit, + in template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) QoSFlowDescr p_QoSFlowDescr := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + in template (omit) DNN p_DNN := omit, + in template (omit) NGSM_NetworkFeatureSupport p_NGSM_NtwkFeatSupport := omit, + in template (omit) ServingPLMNRateControl p_ServingPLMNRateCtrl := omit, + in template (omit) ATSSSContainer p_ATSSSContainer := omit, + in template (omit) ControlPlaneInd p_ControlPlaneInd := omit, + in template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + in template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) ReceivedMBSContainer p_ReceivedMBS := omit + ) modifies cs_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT := { /* 24.501 cl. 8.3.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + pdu_Session_Establishment_Accept := { + } + } // End of template m_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) SSC_Mode p_SSC_Mode := ?, + template (present) PDU_SessionType p_PDU_SessionType := ?, + template (present) QoS_Rules p_QoS_Rules := ?, + template (present) Session_AMBR p_Session_AMBR := ?, + template GMM_GSM_Cause p_Cause := *, + template PDU_Address p_PDU_Address := *, + template GPRS_Timer p_RQTimer := *, + template S_NSSAI_Type p_S_NSSAI := *, + template AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd := *, + template MappedEPSBearerContexts p_MappedEPSBearerContexts := *, + template EAP_Message p_EAP := *, + template QoSFlowDescr p_QoSFlowDescr := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template DNN p_DNN := *, + template NGSM_NetworkFeatureSupport p_NGSM_NtwkFeatSupport := *, + template ServingPLMNRateControl p_ServingPLMNRateCtrl := *, + template ATSSSContainer p_ATSSSContainer := *, + template ControlPlaneInd p_ControlPlaneInd := *, + template IPHeaderCompressionConfig p_IPHeaderCompConfig := *, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template ReceivedMBSContainer p_ReceivedMBS := * + ) := { /* 24.501 cl. 8.3.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + pdu_Session_Establishment_Accept := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionEstablishmentAccept, /* cl. 9.7 M V 1 */ + sscMode := p_SSC_Mode, /* cl. 9.11.4.16 M V 1/2 */ + pduSessionType := p_PDU_SessionType, /* cl. 9.11.4.11 M V 1/2 */ + authorizedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 M LV-E 7-65538 */ + sessionAMBR := p_Session_AMBR, /* cl. 9.11.4.14 M LV ? */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + pduAddress := p_PDU_Address, /* cl. 9.11.4.10 O TLV 7-15 IEI=29 */ + rqTimerValue := p_RQTimer, /* cl. 9.11.2.3 O TLV 2 IEI=56 */ + s_NSSAI := p_S_NSSAI, /* cl. 9.11.2.6 O TLV 3-10 IEI=22 */ + alwaysOnPDUSessionInd := p_AlwaysOnPDUSessionInd, /* c. 9.11.4.3 O TV 1 IEI=8 */ + mappedEPSContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.9 O TLV-E 7-65538 IEI=7F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + authorizedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 6-65538 IEI=79 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + dnn := p_DNN, /* cl. 9.11.2.1A O TLV 3-102 IEI=25 */ + ngs_NetworkFeatureSupport := p_NGSM_NtwkFeatSupport, /* cl. 9.11.4.18 O TLV 3-15 IEI=17 Sep20 @sic R5s201387 Baseline Moving sic@ */ + servingPLMNRateControl := p_ServingPLMNRateCtrl, /* cl. 9.11.4.20 O TLV 4 IEI=18 Sep20 @sic R5s201387 Baseline Moving sic@ */ + atsssContainer := p_ATSSSContainer, /* cl. 9.11.4.22 O TLV-E 3-65538 IEI=77 Sep20 @sic R5s201387 Baseline Moving sic@ */ + controlPlaneOnlyIndication := p_ControlPlaneInd, /* cl. 9.11.4.23 O TV 1 IEI=C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + receivedMBS := p_ReceivedMBS /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT + + template (omit) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_ESTABLISHMENT_REJECT( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI, + in template (value) GMM_GSM_Cause p_Cause, + in template (omit) GPRS_Timer3 p_BackOff := omit, + in template (omit) AllowedSSCMode p_SSC_Mode := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + in template (omit) ReAttemptIndicator p_ReAttemptIndicator := omit, + in template (omit) NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd := omit, // @sic R5s190543 sic@ + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit + ) modifies cs_NG_PDU_SESSION_ESTABLISHMENT_REJECT := { /* 24.501 cl. 8.3.3 */ + /* @status APPROVED (NR5GC) */ + pdu_Session_Establishment_Reject := { + } + } // End of template m_NG_PDU_SESSION_ESTABLISHMENT_REJECT + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_ESTABLISHMENT_REJECT( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) GMM_GSM_Cause p_Cause := ?, + template GPRS_Timer3 p_BackOff := *, + template AllowedSSCMode p_SSC_Mode := *, + template EAP_Message p_EAP := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template ReAttemptIndicator p_ReAttemptIndicator := *, + template NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd := *, // @sic R5s190543 sic@ + template ServiceLvlAAContainer p_ServiceLvlAA := * + ) := { /* 24.501 cl. 8.3.3 */ + /* @status APPROVED (NR5GC) */ + pdu_Session_Establishment_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionEstablishmentReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + backOffTimerValue := p_BackOff, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + allowedSSCMode := p_SSC_Mode, /* cl. 9.11.4.5 O TV 1 IEI=F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + ngsmCongestionReattemptInd := p_NGSM_CongestionReattemptInd, /* cl. 9.11.4.2A O TLV 3 IEI=61 Jun19 @sic R5s201387, R5s210444 Baseline Moving sic@ */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + reattemptInd := p_ReAttemptIndicator, /* cl. 9.11.4.17 O TLV 3 IEI=1D Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template m_NG_PDU_SESSION_ESTABLISHMENT_REJECT + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_RELEASE_REQUEST( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI, + in template (omit) GMM_GSM_Cause p_Cause := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit + ) := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.12 */ + pdu_Session_Release_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseRequest, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template m_NG_PDU_SESSION_RELEASE_REQUEST + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_RELEASE_REQUEST( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template GMM_GSM_Cause p_Cause := *, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) modifies cr_NG_PDU_SESSION_RELEASE_REQUEST := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.12 */ + pdu_Session_Release_Request := { + } + } // End of template mw_NG_PDU_SESSION_RELEASE_REQUEST + + template (omit) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_RELEASE_REJECT( + in NG_PDU_SessionId p_PDU_SessionId, + in ProcedureTransactionIdentifier p_PTI, + in GMM_GSM_Cause p_Cause, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit + ) modifies cs_NG_PDU_SESSION_RELEASE_REJECT := { /* 24.501 cl. 8.3.13 */ + pdu_Session_Release_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template m_NG_PDU_SESSION_RELEASE_REJECT + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_RELEASE_REJECT( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) GMM_GSM_Cause p_Cause := ?, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) := { /* 24.501 cl. 8.3.13 */ + pdu_Session_Release_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template mw_NG_PDU_SESSION_RELEASE_REJECT + + template (omit) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_RELEASE_COMMAND( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in ProcedureTransactionIdentifier p_PTI, + in template (value) GMM_GSM_Cause p_Cause, + in template (omit) GPRS_Timer3 p_BackOffTimer := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd := omit, // @sic R5s190543 sic@ + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + in template (omit) AccessType p_AccessType := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit + ) modifies cs_NG_PDU_SESSION_RELEASE_COMMAND := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.14 */ + pdu_Session_Release_Command := { + } + } // End of template m_NG_PDU_SESSION_RELEASE_COMMAND + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_RELEASE_COMMAND( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) GMM_GSM_Cause p_Cause := ?, + template GPRS_Timer3 p_BackOffTimer := *, + template EAP_Message p_EAP := *, + template NGSM_CongestionReattemptInd p_NGSM_CongestionReattemptInd := *, // @sic R5s190543 sic@ + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template AccessType p_AccessType := *, + template ServiceLvlAAContainer p_ServiceLvlAA := * + ) := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.14 */ + pdu_Session_Release_Command := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseCommand, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 M V 1 */ + backOffTimerValue := p_BackOffTimer, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + ngsmCongestionReattemptInd := p_NGSM_CongestionReattemptInd, /* cl. 9.11.4.2A O TLV 3 IEI=61 Jun19 @sic R5s190543 sic@ */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + accessType := p_AccessType, /* cl. 9.11.2.1A O TV 1 IEI=D Sep20 @sic R5s201387 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_PDU_SESSION_RELEASE_COMMAND + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_RELEASE_COMPLETE( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI, + in template (omit) GMM_GSM_Cause p_Cause := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit + ) := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.15 */ + pdu_Session_Release_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionReleaseComplete, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template m_NG_PDU_SESSION_RELEASE_COMPLETE + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_RELEASE_COMPLETE( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template GMM_GSM_Cause p_Cause := *, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) modifies cr_NG_PDU_SESSION_RELEASE_COMPLETE := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + /* 24.501 cl. 8.3.15 */ + pdu_Session_Release_Complete := { + } + } // End of template mw_NG_PDU_SESSION_RELEASE_COMPLETE + + template (value) NG_NAS_DL_Message_Type m_NG_IDENTITY_REQUEST( + in NAS_IdType p_IdType + ) modifies cs_NG_IDENTITY_REQUEST := { + identity_Request :={} + } // End of template m_NG_IDENTITY_REQUEST + + template (present) NG_NAS_DL_Message_Type mw_NG_IDENTITY_REQUEST( + template (present) NAS_IdType p_IdType := ? + ) := { + identity_Request :={ + protocolDiscriminator := tsc_EPD_GMM, + spareHalfOctet := tsc_SpareHalfOctet, + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_IdentityRequest, + spareHalfOctet2 := tsc_SpareHalfOctet, + identityType := mw_IdentityType(p_IdType) + } + } // End of template mw_NG_IDENTITY_REQUEST + + template (value) NG_NAS_UL_Message_Type m_NG_IDENTITY_RESPONSE( + in NG_MobileIdentity p_MobileId + ) := { + identity_Response :={ + protocolDiscriminator := tsc_EPD_GMM, + spareHalfOctet := tsc_SpareHalfOctet, + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_IdentityResponse, + ngMobileId := p_MobileId + } + } // End of template m_NG_IDENTITY_RESPONSE + + template (present) NG_NAS_UL_Message_Type mw_NG_IDENTITY_RESPONSE( + template (present) NG_MobileIdentity p_MobileId := ? + ) modifies cr_NG_IDENTITY_RESPONSE := { + identity_Response :={} + } // End of template mw_NG_IDENTITY_RESPONSE + + template (omit) NG_NAS_DL_Message_Type m_NG_CONFIGURATION_UPDATE_COMMAND( + in template (omit) ConfigUpdateInd p_ConfigUpdateInd := omit, + in template (omit) NG_MobileIdentity p_Guti := omit, + in template (omit) NG_TrackingAreaIdList p_TaiList := omit, + in template (omit) NSSAI p_AllowedNSSAI := omit, + in template (omit) ServiceAreaIdList p_SaiList := omit, + in template (omit) NetworkName p_FullNetworkName := omit, + in template (omit) NetworkName p_ShortNetworkName := omit, + in template (omit) TimeZone p_LocalTimeZone := omit, + in template (omit) TimeZoneAndTime p_LocalTimeZoneAndTime := omit, + in template (omit) DaylightSavingTime p_DaylightSavingTime := omit, + in template (omit) LADN_Info p_LadnInfo := omit, + in template (omit) MICO_Ind p_MicoInd := omit, + in template (omit) NetworkSlicingInd p_NetworkSlicingInd := omit, + in template (omit) NSSAI p_ConfiguredNSSAI := omit, + in template (omit) RejectedNSSAI p_RejectedNSSAI := omit, + in template (omit) OperatorAccessCatDefinitions p_OperatorAccessCatDefs := omit, + in template (omit) SMSInd p_SmsInd := omit, + in template (omit) GPRS_Timer3 p_T3447 := omit, + in template (omit) CAGInfoList p_CAGInfoList := omit, + in template (omit) UERadioCapId p_UERadioCapId := omit, + in template (omit) UERadioCapIdDeletion p_UERadioCapIdDeletion := omit, + in template (omit) RegistrationResult p_RegistrationResult := omit, + in template (omit) TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig := omit, + in template (omit) AddConfigInfo p_AddConfigInfo := omit, + in template (omit) ExtdRejectedNSSAI p_ExtdRejectedNSSAI := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit, + in template (omit) NSSRG_Info p_NssrgInfo := omit, + in template (omit) RegistrationWaitRange p_DisasterRoamingWaitRange := omit, + in template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + in template (omit) DisasterPLMNList p_DisasterPLMNList := omit, + in template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + in template (omit) PEIPS_AssistInfo p_UpdatedPEIPS_AssistInfo := omit, + in template (omit) NSAG_Info p_NsagInfo := omit, + in template (omit) PriorityInd p_PriorityInd := omit + ) modifies cs_NG_CONFIGURATION_UPDATE_COMMAND := { + configuration_Update_Command := {} + } // End of template m_NG_CONFIGURATION_UPDATE_COMMAND + + template NG_NAS_DL_Message_Type mw_NG_CONFIGURATION_UPDATE_COMMAND( + template ConfigUpdateInd p_ConfigUpdateInd := *, + template NG_MobileIdentity p_Guti := *, + template NG_TrackingAreaIdList p_TaiList := *, + template NSSAI p_AllowedNSSAI := *, + template ServiceAreaIdList p_SaiList := *, + template NetworkName p_FullNetworkName := *, + template NetworkName p_ShortNetworkName := *, + template TimeZone p_LocalTimeZone := *, + template TimeZoneAndTime p_LocalTimeZoneAndTime := *, + template DaylightSavingTime p_DaylightSavingTime := *, + template LADN_Info p_LadnInfo := *, + template MICO_Ind p_MicoInd := *, + template NetworkSlicingInd p_NetworkSlicingInd := *, + template NSSAI p_ConfiguredNSSAI := *, + template RejectedNSSAI p_RejectedNSSAI := *, + template OperatorAccessCatDefinitions p_OperatorAccessCatDefs := *, + template SMSInd p_SmsInd := *, + template GPRS_Timer3 p_T3447 := *, + template CAGInfoList p_CAGInfoList := *, + template UERadioCapId p_UERadioCapId := *, + template UERadioCapIdDeletion p_UERadioCapIdDeletion := *, + template RegistrationResult p_RegistrationResult := *, + template TruncatedS_TMSIConfig p_TruncatedS_TMSIConfig := *, + template AddConfigInfo p_AddConfigInfo := *, + template ExtdRejectedNSSAI p_ExtdRejectedNSSAI := *, + template ServiceLvlAAContainer p_ServiceLvlAA := *, + template NSSRG_Info p_NssrgInfo := *, + template RegistrationWaitRange p_DisasterRoamingWaitRange := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template DisasterPLMNList p_DisasterPLMNList := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template PEIPS_AssistInfo p_UpdatedPEIPS_AssistInfo := *, + template NSAG_Info p_NsagInfo := *, + template PriorityInd p_PriorityInd := * + ) := { + configuration_Update_Command := { + protocolDiscriminator := tsc_EPD_GMM , /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, /* cl. 9.3 M V 1/2 */ + messageType := tsc_MT_NG_ConfigurationUpdateCommand, /* cl. 9.7 M V 1 */ + configUpdateInd := p_ConfigUpdateInd, /* cl. 9.11.3.18 M TV 1 IEI=D */ + guti := p_Guti, /* cl. 9.11.3.4 O TLV 13 IEI=77 Dec18 */ + taiList := p_TaiList, /* cl. 9.11.3.9 O TLV 9-114 IEI=54 */ + allowedNSSAI := p_AllowedNSSAI, /* cl. 9.11.3.37 O TLV 4-74 IEI=15 */ + saiList := p_SaiList, /* cl. 9.11.3.49 O TLV 6-114 IEI=27 */ + fullNetworkName := p_FullNetworkName, /* cl. 9.11.3.35 O TLV 3-? IEI=43 */ + shortNetworkName := p_ShortNetworkName, /* cl. 9.11.3.35 O TLV 3-? IEI=45 */ + localTimeZone := p_LocalTimeZone, /* cl. 9.11.3.52 O TV 2 IEI=46 */ + localTimeZoneAndTime := p_LocalTimeZoneAndTime, /* cl. 9.11.3.53 O TV 8 IEI=47 */ + daylightSavingTime := p_DaylightSavingTime, /* cl. 9.11.3.19 O TLV 3 IEI=49 */ + ladnInfo := p_LadnInfo, /* cl. 9.11.3.30 O TLV-E 3-1715 IEI=79 */ + micoInd := p_MicoInd, /* cl. 9.11.3.31 O TLV 1 IEI=B */ + networkSlicingInd := p_NetworkSlicingInd, /* cl. 9.11.3.36 O TV 1 IEI=9 */ + configuredNSSAI := p_ConfiguredNSSAI, /* cl. 9.11.3.37 O TLV 4-146 IEI=31 */ + rejectedNSSAI := p_RejectedNSSAI, /* cl. 9.11.3.46 O TLV 4-42 IEI=11 */ + operatorAccessCatDefs := p_OperatorAccessCatDefs, /* cl. 9.11.3.38 O TLV-E 4-n IEI=76 Dec18 */ + smsInd := p_SmsInd, /* cl. 9.10.3.50A O TV 1 IEI=F Dec18 */ + t3447Value := p_T3447, /* cl. 9.11.2.5 O TLV 3 IEI=6C Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapabilityId := p_UERadioCapId, /* cl. 9.11.3.68 O TLV 3-n IEI=67 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ueRadioCapIdDeletionInd := p_UERadioCapIdDeletion, /* cl. 9.11.3.69 O TV 1 IEI=E Sep20 @sic R5s201387 Baseline Moving sic@ */ + registrationResult := p_RegistrationResult, /* cl. 9.11.3.6 O TLV 3 IEI=44 Sep20 @sic R5s201387 Baseline Moving sic@ */ + truncatedS_TMSIConfig := p_TruncatedS_TMSIConfig, /* cl. 9.11.3.70 O TLV 3 IEI=1B Sep20 @sic R5s201387 Baseline Moving sic@ */ + addConfigInfo := p_AddConfigInfo, /* cl. 9.11.3.74 O TV 1 IEI=C Sep20 @sic R5s201387 Baseline Moving sic@ */ + extdRejectedNSSAI := p_ExtdRejectedNSSAI, /* cl. 9.11.3.75 O TLV 5-90 IEI=68 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA, /* cl. 9.11.2.10 O TLV-E 6-n IEI=7B Sep22 @sic R5s221179 Baseline Moving sic@ */ + nssrgInfo := p_NssrgInfo, /* cl. 9.11.3.82 O TLV-E 7-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterRoamingWaitRange := p_DisasterRoamingWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=14 Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + disasterPLMNList := p_DisasterPLMNList, /* cl. 9.11.3.83 O TLV 2-n IEI=13 Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + updatedPEIPS_AssistInfo := p_UpdatedPEIPS_AssistInfo, /* cl. 9.11.3.80 O TLV 3-n IEI=33 Sep22 @sic R5s221179 Baseline Moving sic@ */ + nsagInfo := p_NsagInfo, /* cl. 9.11.3.87 O TLV-E 10-n IEI=7C Sep22 @sic R5s221179 Baseline Moving sic@ */ + priorityInd := p_PriorityInd /* cl. 9.11.3.91 O TV 1 IEI=E- Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template m_NG_CONFIGURATION_UPDATE_COMMAND + + template (value) NG_NAS_UL_Message_Type m_NG_CONFIGURATION_UPDATE_COMPLETE := { + configuration_Update_Complete := { + protocolDiscriminator := tsc_EPD_GMM , /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, /* cl. 9.3 M V 1/2 */ + messageType := tsc_MT_NG_ConfigurationUpdateComplete /* cl. 9.7 M V 1 */ + } + } // End of template m_NG_CONFIGURATION_UPDATE_COMPLETE + + template (present) NG_NAS_UL_Message_Type mw_NG_CONFIGURATION_UPDATE_COMPLETE modifies cr_NG_CONFIGURATION_UPDATE_COMPLETE := { + configuration_Update_Complete := { + protocolDiscriminator := tsc_EPD_GMM , /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, /* cl. 9.3 M V 1/2 */ + messageType := tsc_MT_NG_ConfigurationUpdateComplete /* cl. 9.7 M V 1 */ + } + } // End of template mw_NG_CONFIGURATION_UPDATE_COMPLETE + + template (omit) NG_NAS_UL_Message_Type m_NG_UL_NAS_TRANSPORT( + in template (value) PayloadContainerType p_PayloadContainerType, + in template (value) PayloadContainer p_PayloadContainer, + in template (omit) NG_PDU_SessionId p_PDU_SessionId := omit, + in template (omit) NG_PDU_SessionId p_OldPDU_SessionId := omit, + in template (omit) NG_Request_Type p_RequestType := omit, + in template (omit) S_NSSAI_Type p_S_NSSAI := omit, + in template (omit) DNN p_DNN := omit, + in template (omit) AdditionalInformation p_AdditionalInfo := omit, + in template (omit) MA_PDUSessionInfo p_MA_PDUSessionInfo := omit, + in template (omit) ReleaseAssistanceInd p_ReleaseAssistanceInd := omit + ) := { + ul_Nas_Transport := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_UL_NASTransport, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 M V 1/2 */ + payload := p_PayloadContainer, /* cl. 9.11.3.39 M LV-E 3-65537 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=70 */ + oldPDUSessionId := p_OldPDU_SessionId, /* cl. 9.11.3.41 O TV 3 IEI=61 */ + requestType := p_RequestType, /* cl. 9.`0.3.47 O TV 1 IEI=8 */ + s_NSSAI := p_S_NSSAI, /* cl. 9.11.2.8 O TLV 3-10 IEI=22 */ + dnn := p_DNN, /* cl. 9.11.3.21 O TLV 3-102 IEI=25 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + maPDUSessionInfo := p_MA_PDUSessionInfo, /* cl. 9.11.3.31A O TV 1 IEI=A Sep20 @sic R5s201387 Baseline Moving sic@ */ + releaseAssistanceInd := p_ReleaseAssistanceInd /* cl. 9.11.3.46A O TV 1 IEI=F Sep20 @sic R5s201387 Baseline Moving sic@ */ + } + } // End of template m_NG_UL_NAS_TRANSPORT + + template (present) NG_NAS_UL_Message_Type mw_NG_UL_NAS_TRANSPORT( + template (present) PayloadContainerType p_PayloadContainerType := ?, + template NG_PDU_SessionId p_PDU_SessionId := *, + template NG_PDU_SessionId p_OldPDU_SessionId := *, + template NG_Request_Type p_RequestType := *, + template S_NSSAI_Type p_S_NSSAI := *, + template DNN p_DNN := *, + template AdditionalInformation p_AdditionalInfo := *, + template MA_PDUSessionInfo p_MA_PDUSessionInfo := *, + template ReleaseAssistanceInd p_ReleaseAssistanceInd := * + ) modifies cr_NG_UL_NAS_TRANSPORT := { + ul_Nas_Transport := {} + } // End of template mw_NG_UL_NAS_TRANSPORT + + template (omit) NG_NAS_DL_Message_Type m_NG_DL_NAS_TRANSPORT( + in template (value) PayloadContainerType p_PayloadContainerType, + in template (value) PayloadContainer p_Payload, + in template (omit) NG_PDU_SessionId p_PDU_SessionId := omit, + in template (omit) AdditionalInformation p_AdditionalInfo := omit, + in template (omit) GMM_GSM_Cause p_Cause := omit, + in template (omit) GPRS_Timer3 p_BackOff := omit, + in template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit + ) modifies cs_NG_DL_NAS_TRANSPORT := { + dl_Nas_Transport := {} + } // End of template m_NG_DL_NAS_TRANSPORT + + template (present) NG_NAS_DL_Message_Type mw_NG_DL_NAS_TRANSPORT( + template (present) PayloadContainerType p_PayloadContainerType := ?, + template (present) PayloadContainer p_Payload := ?, + template NG_PDU_SessionId p_PDU_SessionId := *, + template AdditionalInformation p_AdditionalInfo := *, + template GMM_GSM_Cause p_Cause := *, + template GPRS_Timer3 p_BackOff := *, + template GPRS_Timer3 p_LowerBoundTimerValue := * + ) := { + dl_Nas_Transport := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DL_NASTransport, /* cl. 9.7 M V 1 */ + spareHalfOctet2 := tsc_SpareHalfOctet, /* cl. 9.5 M V 1/2 */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 M V 1/2 */ + payload := p_Payload, /* cl. 9.11.3.39 M LV-E 3-65537 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=70 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 O TV 2 IEI=58 */ + backOffTimerValue := p_BackOff, /* cl. 9.11.2.5 O TLV 3 IEI=37 */ + lowerBoundTimerValue := p_LowerBoundTimerValue /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_DL_NAS_TRANSPORT + + template (omit) NG_NAS_UL_Message_Type m_NG_SERVICE_REQUEST( + in template (value) B4_Type p_ServiceType, + in template (value) NAS_KeySetIdentifier p_KSI, + in template (value) NG_MobileIdentity p_S_TMSI, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) NASMessageContainer p_Msg := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict + ) modifies cr_NG_SERVICE_REQUEST := { + service_Request := {} + } // End of template m_NG_SERVICE_REQUEST + + template (present) NG_NAS_UL_Message_Type mw_NG_SERVICE_REQUEST( + template (present) B4_Type p_ServiceType := ?, + template (present) NAS_KeySetIdentifier p_KSI := ?, + template (present) NG_MobileIdentity p_S_TMSI := ?, + template ULDataStatus p_ULDataStatus := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := *, + template NASMessageContainer p_Msg := *, + template UE_RequestType p_UeRequestType := *, + template NG_PagingRestriction p_PagingRestrict := * + ) := { + service_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_ServiceRequest, /* cl. 9.7 M V 1 */ + serviceType := p_ServiceType, /* cl. 9.11.3.50 M V 1/2 */ + ngKSI := p_KSI, /* cl. 9.11.3.32 M V 1/2 */ + s_TMSI := p_S_TMSI, /* cl. 9.11.3.4 M LV 6 */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 */ + nasMsg := p_Msg, /* cl. 9.11.3.33 O TLV-E 4-n IEI=71 Dec18 */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_SERVICE_REQUEST + + template (omit) NG_NAS_DL_Message_Type m_NG_SERVICE_ACCEPT( + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) PDU_SessionReactivationResult p_PDU_SessionReactivationResult := omit, + in template (omit) PDU_SessionReactivationError p_PDU_SessionReactivationError := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) GPRS_Timer2 p_T3448 := omit, + in template (omit) NG_AddReqResult p_AddRequestResult := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit + ) modifies cs_NG_SERVICE_ACCEPT := { + service_Accept := {} + } // End of template m_NG_SERVICE_ACCEPT + + template NG_NAS_DL_Message_Type mw_NG_SERVICE_ACCEPT( + template PDU_SessionStatus p_PDU_SessionStatus := *, + template PDU_SessionReactivationResult p_PDU_SessionReactivationResult := *, + template PDU_SessionReactivationError p_PDU_SessionReactivationError := *, + template EAP_Message p_EAP := *, + template GPRS_Timer2 p_T3448 := *, + template NG_AddReqResult p_AddRequestResult := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + ) := { + service_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_ServiceAccept, /* cl. 9.7 M V 1 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + pduSessionReactivationResult := p_PDU_SessionReactivationResult, /* cl. 9.11.3.42 O TLV 4-32 IEI=26 */ + pduSessionReactResultError := p_PDU_SessionReactivationError, /* cl. 9.11.3.43 O TLV-E 5-515 IEI=7E */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78*/ + t3448 := p_T3448, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + ngAddRequestResult := p_AddRequestResult, /* cl. 9.11.3.81 O TLV 3 IEI=34 Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=1D Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=1E Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_SERVICE_ACCEPT + + template (omit) NG_NAS_DL_Message_Type m_NG_SERVICE_REJECT( + in template (value) GMM_GSM_Cause p_Cause, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) GPRS_Timer2 p_T3346 := omit, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) GPRS_Timer2 p_T3448 := omit, + in template (omit) CAGInfoList p_CAGInfoList := omit, + in template (omit) RegistrationWaitRange p_DisasterReturnWaitRange := omit, + in template (omit) ExtdCAGInfoList p_ExtdCAGInfoList := omit, + in template (omit) GPRS_Timer3 p_LowerBoundTimerValue := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_Roaming := omit, + in template (omit) NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := omit + ) modifies cs_NG_SERVICE_REJECT := { + service_Reject := {} + } // End of template m_NG_SERVICE_REJECT + + template (present) NG_NAS_DL_Message_Type mw_NG_SERVICE_REJECT( + template (present) GMM_GSM_Cause p_Cause := ?, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template GPRS_Timer2 p_T3346 := *, + template EAP_Message p_EAP := *, + template GPRS_Timer2 p_T3448 := *, + template CAGInfoList p_CAGInfoList := *, + template RegistrationWaitRange p_DisasterReturnWaitRange := *, + template ExtdCAGInfoList p_ExtdCAGInfoList := *, + template GPRS_Timer3 p_LowerBoundTimerValue := *, + template NG_TrackingAreaIdList p_ForbidTAIList_Roaming := *, + template NG_TrackingAreaIdList p_ForbidTAIList_RegProvService := * + ) := { + service_Reject := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_ServiceReject, /* cl. 9.7 M V 1 */ + gmmCause := p_Cause, /* cl. 9.11.3.2 M V 1 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + t3346 := p_T3346, /* cl. 9.11.2.4 O TLV 3 IEI=5F */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + t3448 := p_T3448, /* cl. 9.11.2.4 O TLV 3 IEI=6B Sep20 @sic R5s201387 Baseline Moving sic@ */ + cagInfoList := p_CAGInfoList, /* cl. 9.11.3.18A O TLV-E 3-n IEI=75 Sep20 @sic R5s201387 Baseline Moving sic@ */ + disasterReturnWaitRange := p_DisasterReturnWaitRange, /* cl. 9.11.3.84 O TLV 4 IEI=2C Sep22 @sic R5s221179 Baseline Moving sic@ */ + extdCAGInfoList := p_ExtdCAGInfoList, /* cl. 9.11.3.86 O TLV-E 3-n IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + lowerBoundTimerValue := p_LowerBoundTimerValue, /* cl. 9.11.2.5 O TLV 3 IEI=3A Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_Roaming := p_ForbidTAIList_Roaming, /* cl. 9.11.3.9 O TLV 9-114 IEI=3B Sep22 @sic R5s221179 Baseline Moving sic@ */ + forbidTAIList_RegProvService := p_ForbidTAIList_RegProvService /* cl. 9.11.3.9 O TLV 9-114 IEI=3C Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_SERVICE_REJECT + + template (omit) NG_NAS_UL_Message_Type m_NG_CP_SERVICE_REQUEST( + in template (value) NAS_KeySetIdentifier p_NAS_KeySetIdentifier, + in template (value) CP_ServiceType p_CP_ServiceType, + in template (omit) CIoTSmallDataRxdString p_CIoTSmallDataContainer := omit, + in template (omit) PayloadContainerType p_PayloadContainerType := omit, + in template (omit) PayloadContainer p_PayloadContainer := omit, + in template (omit) NG_PDU_SessionId p_NG_PDU_SessionId := omit, + in template (omit) PDU_SessionStatus p_PDU_SessionStatus := omit, + in template (omit) ReleaseAssistanceInd p_ReleaseAssistanceInd := omit, + in template (omit) ULDataStatus p_ULDataStatus := omit, + in template (omit) AdditionalInformation p_AdditionalInfo := omit, + in template (omit) AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := omit, + in template (omit) NASMessageContainer p_NASMsg := omit, + in template (omit) UE_RequestType p_UeRequestType := omit, + in template (omit) NG_PagingRestriction p_PagingRestrict := omit + ) modifies cr_NG_CP_SERVICE_REQUEST := { + cp_Service_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_CP_Service_Request, /* cl. 9.7 M V 1 */ + ngKSI := p_NAS_KeySetIdentifier, /* cl. 9.11.3.32 M V 1/2 */ + cpServiceType := p_CP_ServiceType, /* cl. 9.11.3.18D M V 1/2 */ + cIoTSmallDataContainer := p_CIoTSmallDataContainer, /* cl. 9.11.3.18B O TLV 4-257 IEI=6F */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 O TV 1 IEI=8 */ + payload := p_PayloadContainer, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + pduSessionId := p_NG_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=12 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + releaseAssistanceInd := p_ReleaseAssistanceInd, /* cl. 9.11.3.46A O TV 1 IEI=F */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + nasMsg := p_NASMsg, /* cl. 9.11.3.33 O TLV-E 3-n IEI=71 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template m_NG_CP_SERVICE_REQUEST + + template (present) NG_NAS_UL_Message_Type mw_NG_CP_SERVICE_REQUEST( + template (present) NAS_KeySetIdentifier p_NAS_KeySetIdentifier := ?, + template (present) CP_ServiceType p_CP_ServiceType := ?, + template CIoTSmallDataRxdString p_CIoTSmallDataContainer := *, + template PayloadContainerType p_PayloadContainerType := *, + template PayloadContainer p_PayloadContainer := *, + template NG_PDU_SessionId p_NG_PDU_SessionId := *, + template PDU_SessionStatus p_PDU_SessionStatus := *, + template ReleaseAssistanceInd p_ReleaseAssistanceInd := *, + template ULDataStatus p_ULDataStatus := *, + template AdditionalInformation p_AdditionalInfo := *, + template AllowedPDU_SessionStatus p_AllowedPDU_SessionStatus := *, + template NASMessageContainer p_NASMsg := *, + template UE_RequestType p_UeRequestType := *, + template NG_PagingRestriction p_PagingRestrict := * + ) := { + cp_Service_Request := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_CP_Service_Request, /* cl. 9.7 M V 1 */ + ngKSI := p_NAS_KeySetIdentifier, /* cl. 9.11.3.32 M V 1/2 */ + cpServiceType := p_CP_ServiceType, /* cl. 9.11.3.18D M V 1/2 */ + cIoTSmallDataContainer := p_CIoTSmallDataContainer, /* cl. 9.11.3.18B O TLV 4-257 IEI=6F */ + payloadContainerType := p_PayloadContainerType, /* cl. 9.11.3.40 O TV 1 IEI=8 */ + payload := p_PayloadContainer, /* cl. 9.11.3.39 O TLV-E 4-65538 IEI=7B */ + pduSessionId := p_NG_PDU_SessionId, /* cl. 9.11.3.41 C TV 2 IEI=12 */ + pduSessionStatus := p_PDU_SessionStatus, /* cl. 9.11.2.44 O TLV 4-34 IEI=50 */ + releaseAssistanceInd := p_ReleaseAssistanceInd, /* cl. 9.11.3.46A O TV 1 IEI=F */ + ulDataStatus := p_ULDataStatus, /* cl. 9.11.2.57 O TLV 4-34 IEI=40 */ + nasMsg := p_NASMsg, /* cl. 9.11.3.33 O TLV-E 3-n IEI=71 */ + additionalInfo := p_AdditionalInfo, /* cl. 9.11.2.1 O TLV 3-n IEI=24 */ + allowedPDUSessionStatus := p_AllowedPDU_SessionStatus, /* cl. 9.11.3.13 O TLV 4-34 IEI=25 Sep22 @sic R5s221179 Baseline Moving sic@ */ + ueRequestType := p_UeRequestType, /* cl. 9.11.3.76 O TLV 3 IEI=29 Sep22 @sic R5s221179 Baseline Moving sic@ */ + pagingRestrict := p_PagingRestrict /* cl. 9.11.3.77 O TLV 3-35 IEI=28 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template m_NG_CP_SERVICE_REQUEST + + template (omit) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_AUTHENTICATION_COMMAND( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in ProcedureTransactionIdentifier p_PTI, + in template (value) EAP_Message p_EAP, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit + ) modifies cs_NG_PDU_SESSION_AUTHENTICATION_COMMAND := { + pdu_Session_Authentication_Command := {} + } // End of template m_NG_PDU_SESSION_AUTHENTICATION_COMMAND + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_AUTHENTICATION_COMMAND( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) EAP_Message p_EAP := ?, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) := { + pdu_Session_Authentication_Command := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationCommand, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 M LV-E 6-1502 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template mw_NG_PDU_SESSION_AUTHENTICATION_COMMAND + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_AUTHENTICATION_COMPLETE( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI, + in template (value) EAP_Message p_EAP, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO) := { + pdu_Session_Authentication_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationComplete, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 M LV-E 6-1502 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template m_NG_PDU_SESSION_AUTHENTICATION_COMPLETE + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_AUTHENTICATION_COMPLETE( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template (present) EAP_Message p_EAP := ?, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) modifies cr_NG_PDU_SESSION_AUTHENTICATION_COMPLETE := { + pdu_Session_Authentication_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationComplete, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP , /* cl. 9.11.2.2 M LV-E 6-1502 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template mw_NG_PDU_SESSION_AUTHENTICATION_COMPLETE + + template (value) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_AUTHENTICATION_RESULT( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in ProcedureTransactionIdentifier p_PTI, + in template (omit) EAP_Message p_EAP := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit + ) modifies cs_NG_PDU_SESSION_AUTHENTICATION_RESULT := { + pdu_Session_Authentication_Result := {} + } // End of template m_NG_PDU_SESSION_AUTHENTICATION_RESULT + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_AUTHENTICATION_RESULT( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template EAP_Message p_EAP := *, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) := { + pdu_Session_Authentication_Result := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionAuthenticationResult, /* cl. 9.7 M V 1 */ + eapMessage := p_EAP, /* cl. 9.11.2.2 O TLV-E 7-1503 IEI=78 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template mw_NG_PDU_SESSION_AUTHENTICATION_RESULT + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_MODIFICATION_REQUEST( + template (value) NG_PDU_SessionId p_PDU_SessionId, + template (value) ProcedureTransactionIdentifier p_PTI, + template (omit) NG_UE_SM_Cap p_NG_UE_SM_Cap := omit, + template (omit) GMM_GSM_Cause p_Cause := omit, + template (omit) MaxNumPacketFilters p_MaxNumPacketFilters := omit, + template (omit) AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := omit, + template (omit) IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := omit, + template (omit) QoS_Rules p_QoS_Rules := omit, + template (omit) QoSFlowDescr p_QoSFlowDescr := omit, + template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts := omit, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + template (omit) PortManagementInfoContainer p_PortManagementInfoContainer := omit, + template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + template (omit) RequestedMBSContainer p_RequestedMBS := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit + ) := { + pdu_Session_Modification_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationRequest, /* cl. 9.7 M V 1 */ + smCapability := p_NG_UE_SM_Cap, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + maxNumPacketFilters := p_MaxNumPacketFilters, /* c. 9.11.4.9 O TV 3 IEI=55 */ + alwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq, /* c. 9.11.4.4 O TV 1 IEI=B */ + integrityProtMaxDataRate := p_IntegrityProtMaxDataRate, /* c. 9.11.4.7 O TV 2 IEI=13 */ + requestedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + requestedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 5-65538 IEI=79 */ + mappedEPSbearerContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=7F Dec18 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedMBS := p_RequestedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template m_NG_PDU_SESSION_MODIFICATION_REQUEST + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_MODIFICATION_REQUEST( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := ?, + template NG_UE_SM_Cap p_NG_UE_SM_Cap := *, + template GMM_GSM_Cause p_Cause := *, + template MaxNumPacketFilters p_MaxNumPacketFilters := *, + template AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := *, + template IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := *, + template QoS_Rules p_QoS_Rules := *, + template QoSFlowDescr p_QoSFlowDescr := *, + template MappedEPSBearerContexts p_MappedEPSBearerContexts := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *, + template IPHeaderCompressionConfig p_IPHeaderCompConfig := *, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := *, + template RequestedMBSContainer p_RequestedMBS := *, + template ServiceLvlAAContainer p_ServiceLvlAA := * + ) modifies cr_NG_PDU_SESSION_MODIFICATION_REQUEST := { + pdu_Session_Modification_Request := {} + } // End of template mw_NG_PDU_SESSION_MODIFICATION_REQUEST + + template (value) NG_NAS_DL_Message_Type m_NG_PDU_SESSION_MODIFICATION_COMMAND( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in ProcedureTransactionIdentifier p_PTI, + in template (omit) GMM_GSM_Cause p_Cause := omit, + in template (omit) Session_AMBR p_Session_AMBR := omit, + in template (omit) GPRS_Timer p_RQTimer := omit, + in template (omit) AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd := omit, + in template (omit) QoS_Rules p_QoS_Rules := omit, + in template (omit) QoSFlowDescr p_QoSFlowDescr := omit, + in template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts := omit, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + in template (omit) ATSSSContainer p_ATSSSContainer := omit, + in template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + in template (omit) PortManagementInfoContainer p_PortManagementInfoContainer := omit, + in template (omit) ServingPLMNRateControl p_ServingPLMNRateCtrl := omit, + in template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + in template (omit) ReceivedMBSContainer p_ReceivedMBS := omit, + in template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit + ) modifies cs_NG_PDU_SESSION_MODIFICATION_COMMAND := { + pdu_Session_Modification_Command := {} + } // End of template m_NG_PDU_SESSION_MODIFICATION_COMMAND + + template (present) NG_NAS_DL_Message_Type mw_NG_PDU_SESSION_MODIFICATION_COMMAND( + template (present) NG_PDU_SessionId p_PDU_SessionId, + template (present) ProcedureTransactionIdentifier p_PTI, + template GMM_GSM_Cause p_Cause := *, + template Session_AMBR p_Session_AMBR := *, + template GPRS_Timer p_RQTimer := *, + template AlwaysOnPDUSessionInd p_AlwaysOnPDUSessionInd := *, + template QoS_Rules p_QoS_Rules := *, + template QoSFlowDescr p_QoSFlowDescr := *, + template MappedEPSBearerContexts p_MappedEPSBearerContexts := *, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template ATSSSContainer p_ATSSSContainer := *, + template IPHeaderCompressionConfig p_IPHeaderCompConfig := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := *, + template ServingPLMNRateControl p_ServingPLMNRateCtrl := *, + template EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := *, + template ReceivedMBSContainer p_ReceivedMBS := *, + template ServiceLvlAAContainer p_ServiceLvlAA := * + ) := { + pdu_Session_Modification_Command := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationCommand, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + sessionAMBR := p_Session_AMBR, /* cl. 9.11.4.14 O TLV 8 IEI=2A */ + rqTimerValue := p_RQTimer, /* cl. 9.11.2.3 O TV 2 IEI=56 */ + alwaysOnPDUSessionInd := p_AlwaysOnPDUSessionInd, /* c. 9.11.4.3 O TV 1 IEI=8 */ + authorizedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + mappedEPSContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=7F */ + authorizedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 6-65538 IEI=79 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + atsssContainer := p_ATSSSContainer, /* cl. 9.11.4.22 O TLV-E 3-65538 IEI=77 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + servingPLMNRateControl := p_ServingPLMNRateCtrl, /* cl. 9.11.4.20 O TLV 4 IEI=18 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + receivedMBS := p_ReceivedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=71 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } + } // End of template mw_NG_PDU_SESSION_MODIFICATION_COMMAND + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_MODIFICATION_COMPLETE( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI := '00'O, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + in template (omit) PortManagementInfoContainer p_PortManagementInfoContainer := omit + ) := { + pdu_Session_Modification_Complete := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationComplete, /* cl. 9.7 M V 1 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + portManagementInfoContainer := p_PortManagementInfoContainer /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + } + } // End of template m_NG_PDU_SESSION_MODIFICATION_COMPLETE + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_MODIFICATION_COMPLETE( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := '00'O, + template ExtdProtocolConfigOptions p_ExtdPCO := *, + template PortManagementInfoContainer p_PortManagementInfoContainer := * + ) modifies cr_NG_PDU_SESSION_MODIFICATION_COMPLETE := { + pdu_Session_Modification_Complete := {} + } // End of template mw_NG_PDU_SESSION_MODIFICATION_COMPLETE + + template (omit) NG_PDU_SESSION_MODIFICATION_REJECT m_NG_PDU_SESSION_MODIFICATION_REJECT( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) NG_PDU_SessionId p_pduSessionId, + in template (value) ProcedureTransactionIdentifier p_procedureTransactionIdentifier, + in template (value) MessageType p_messageType, + in template (value) GMM_GSM_Cause p_gsmCause, + in template (omit) GPRS_Timer3 p_backOffTimerValue := omit, + in template (omit) NGSM_CongestionReattemptInd p_ngsmCongestionReattemptInd := omit, + in template (omit) ExtdProtocolConfigOptions p_extdProtocolConfigurationOptions := omit, + in template (omit) ReAttemptIndicator p_reattemptInd := omit + ) := { + protocolDiscriminator := p_protocolDiscriminator, + pduSessionId := p_pduSessionId, + procedureTransactionIdentifier := p_procedureTransactionIdentifier, + messageType := p_messageType, + gsmCause := p_gsmCause, + backOffTimerValue := p_backOffTimerValue, + ngsmCongestionReattemptInd := p_ngsmCongestionReattemptInd, + extdProtocolConfigurationOptions := p_extdProtocolConfigurationOptions, + reattemptInd := p_reattemptInd + } // End of tmplate m_NG_PDU_SESSION_MODIFICATION_REJECT + + template (present) NG_PDU_SESSION_MODIFICATION_REJECT mw_NG_PDU_SESSION_MODIFICATION_REJECT( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator, + template (present) NG_PDU_SessionId p_pduSessionId, + template (present) ProcedureTransactionIdentifier p_procedureTransactionIdentifier, + template (present) MessageType p_messageType, + template (present) GMM_GSM_Cause p_gsmCause, + template GPRS_Timer3 p_backOffTimerValue := *, + template NGSM_CongestionReattemptInd p_ngsmCongestionReattemptInd := *, + template ExtdProtocolConfigOptions p_extdProtocolConfigurationOptions := *, + template ReAttemptIndicator p_reattemptInd := * + ) := { + protocolDiscriminator := p_protocolDiscriminator, + pduSessionId := p_pduSessionId, + procedureTransactionIdentifier := p_procedureTransactionIdentifier, + messageType := p_messageType, + gsmCause := p_gsmCause, + backOffTimerValue := p_backOffTimerValue, + ngsmCongestionReattemptInd := p_ngsmCongestionReattemptInd, + extdProtocolConfigurationOptions := p_extdProtocolConfigurationOptions, + reattemptInd := p_reattemptInd + } // End of tmplate mw_NG_PDU_SESSION_MODIFICATION_REJECT + + template (omit) NG_NAS_UL_Message_Type m_NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT( + in template (value) NG_PDU_SessionId p_PDU_SessionId, + in template (value) ProcedureTransactionIdentifier p_PTI := '00'O, + in template (value) GMM_GSM_Cause p_Cause, + in template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit + ) := { + pdu_Session_Modification_Command_Reject := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationCommandReject, /* cl. 9.7 M V 1 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + extdProtocolConfigurationOptions := p_ExtdPCO /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + } + } // End of template m_NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT + + template (present) NG_NAS_UL_Message_Type mw_NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT( + template (present) NG_PDU_SessionId p_PDU_SessionId := ?, + template (present) ProcedureTransactionIdentifier p_PTI := '00'O, + template (present) GMM_GSM_Cause p_Cause := ?, + template ExtdProtocolConfigOptions p_ExtdPCO := * + ) modifies cr_NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT := { + pdu_Session_Modification_Command_Reject := {} + } // End of template mw_NG_PDU_SESSION_MODIFICATION_COMMAND_REJECT + + template (value) NG_GMM_STATUS m_NG_GMM_STATUS( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) SpareHalfOctet p_spareHalfOctet, + in template (value) SecurityHeaderType p_securityHeaderType, + in template (value) MessageType p_messageType, + in template (value) GMM_GSM_Cause p_gmmCause + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + gmmCause := p_gmmCause + } // End of template m_NG_GMM_STATUS + + template (present) NG_GMM_STATUS mw_NG_GMM_STATUS( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) SpareHalfOctet p_spareHalfOctet := ?, + template (present) SecurityHeaderType p_securityHeaderType := ?, + template (present) MessageType p_messageType := ?, + template (present) GMM_GSM_Cause p_gmmCause := ? + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + gmmCause := p_gmmCause + } // End of template mw_NG_GMM_STATUS + + template (value) NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND m_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) SpareHalfOctet p_spareHalfOctet, + in template (value) SecurityHeaderType p_securityHeaderType, + in template (value) MessageType p_messageType, + in template (value) S_NSSAI_LV p_sNSSAI, + in template (value) EAP_Message p_eapMessage + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + sNSSAI := p_sNSSAI, + eapMessage := p_eapMessage + } // End of template m_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND + + template (present) NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND mw_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) SpareHalfOctet p_spareHalfOctet := ?, + template (present) SecurityHeaderType p_securityHeaderType := ?, + template (present) MessageType p_messageType := ?, + template (present) S_NSSAI_LV p_sNSSAI := ?, + template (present) EAP_Message p_eapMessage := ? + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + sNSSAI := p_sNSSAI, + eapMessage := p_eapMessage + } // End of template mw_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMMAND + + template (value) NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE m_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) SpareHalfOctet p_spareHalfOctet, + in template (value) SecurityHeaderType p_securityHeaderType, + in template (value) MessageType p_messageType, + in template (value) S_NSSAI_LV p_sNSSAI, + in template (value) EAP_Message p_eapMessage + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + sNSSAI := p_sNSSAI, + eapMessage := p_eapMessage + } // End of template m_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE + + template (present) NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE mw_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) SpareHalfOctet p_spareHalfOctet := ?, + template (present) SecurityHeaderType p_securityHeaderType := ?, + template (present) MessageType p_messageType := ?, + template (present) S_NSSAI_LV p_sNSSAI := ?, + template (present) EAP_Message p_eapMessage := ? + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + sNSSAI := p_sNSSAI, + eapMessage := p_eapMessage + } // End of template mw_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_COMPLETE + + template (value) NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT m_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) SpareHalfOctet p_spareHalfOctet, + in template (value) SecurityHeaderType p_securityHeaderType, + in template (value) MessageType p_messageType, + in template (value) S_NSSAI_LV p_sNSSAI, + in template (value) EAP_Message p_eapMessage + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + sNSSAI := p_sNSSAI, + eapMessage := p_eapMessage + } // End of template m_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT + + template (present) NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT mw_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) SpareHalfOctet p_spareHalfOctet := ?, + template (present) SecurityHeaderType p_securityHeaderType := ?, + template (present) MessageType p_messageType := ?, + template (present) S_NSSAI_LV p_sNSSAI := ?, + template (present) EAP_Message p_eapMessage := ? + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + sNSSAI := p_sNSSAI, + eapMessage := p_eapMessage + } // End of template mw_NG_NETWORK_SLICE_SPECIFIC_AUTHENTICATION_RESULT + + template (value) NG_NOTIFICATION m_NG_NOTIFICATION( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) SpareHalfOctet p_spareHalfOctet, + in template (value) SecurityHeaderType p_securityHeaderType, + in template (value) MessageType p_messageType, + in template (value) SpareHalfOctet p_spareHalfOctet2, + in template (value) AccessType p_accessType + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + spareHalfOctet2 := p_spareHalfOctet2, + accessType := p_accessType + } // End of template m_NG_NOTIFICATION + + template (present) NG_NOTIFICATION mw_NG_NOTIFICATION( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) SpareHalfOctet p_spareHalfOctet := ?, + template (present) SecurityHeaderType p_securityHeaderType := ?, + template (present) MessageType p_messageType := ?, + template (present) SpareHalfOctet p_spareHalfOctet2 := ?, + template (present) AccessType p_accessType := ? + ) := { + protocolDiscriminator := p_protocolDiscriminator, + spareHalfOctet := p_spareHalfOctet, + securityHeaderType := p_securityHeaderType, + messageType := p_messageType, + spareHalfOctet2 := p_spareHalfOctet2, + accessType := p_accessType + } // End of template mw_NG_NOTIFICATION + + template (value) NG_GSM_STATUS m_NG_GSM_STATUS( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) NG_PDU_SessionId p_pduSessionId, + in template (value) ProcedureTransactionIdentifier p_procedureTransactionIdentifier, + in template (value) MessageType p_messageType, + in template (value) GMM_GSM_Cause p_gsmCause + ) := { + protocolDiscriminator := p_protocolDiscriminator, + pduSessionId := p_pduSessionId, + procedureTransactionIdentifier := p_procedureTransactionIdentifier, + messageType := p_messageType, + gsmCause := p_gsmCause + } // End of template m_NG_GSM_STATUS + + template (present) NG_GSM_STATUS mw_NG_GSM_STATUS( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) NG_PDU_SessionId p_pduSessionId := ?, + template (present) ProcedureTransactionIdentifier p_procedureTransactionIdentifier := ?, + template (present) MessageType p_messageType := ?, + template (present) GMM_GSM_Cause p_gsmCause := ? + ) := { + protocolDiscriminator := p_protocolDiscriminator, + pduSessionId := p_pduSessionId, + procedureTransactionIdentifier := p_procedureTransactionIdentifier, + messageType := p_messageType, + gsmCause := p_gsmCause + } // End of template mw_NG_GSM_STATUS + + template (value) AuthenticationResponseParameter m_AuthenticationResponseParameter( + in template (value) Type4Length_Type p_iel, + in template (value) B32_128_Type p_ExpectedRES + ) := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '2D'O, + iel := p_iel, /* RES has length of 32..128 bits i.e. 4..16 octets */ + res := p_ExpectedRES + } // End of template m_AuthenticationResponseParameter + + template (present) AuthenticationResponseParameter mw_AuthenticationResponseParameter( + template (present) B32_128_Type p_ExpectedRES := ? + ) modifies cr_AuthenticationResponseParameter := { /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := '2D'O, + iel := ?, /* RES has length of 32..128 bits i.e. 4..16 octets */ + res := p_ExpectedRES + } // End of template mw_AuthenticationResponseParameter + + template (omit) GMM_GSM_Cause m_GMM_GSM_Cause( + in template (omit) IEI8_Type p_IEI := omit, + in template (value) NAS_CauseValue_Type p_Cause + ) := { /* 24.501 cl. 9.11.3.2, 9.11.4.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, /* present in case of TV; omit in case of V */ + causeValue := p_Cause + } // End of template m_GMM_GSM_Cause + + template (present) GMM_GSM_Cause mw_GMM_GSM_Cause( + template (present) IEI8_Type p_IEI := ?, + template (present) NAS_CauseValue_Type p_Cause := ? + ) := { /* 24.501 cl. 9.11.3.2, 9.11.4.2 */ + /* @status APPROVED (IMS, NR5GC, NR5GC_IRAT, POS) */ + iei := p_IEI, /* present in case of TV; omit in case of V */ + causeValue := p_Cause + } // End of template mw_GMM_GSM_Cause + + template (value) IdentityType m_IdentityType( + in NAS_IdType p_NAS_IdType + ) modifies cs_IdentityType := { + } // End of template m_IdentityType + + template (present) IdentityType mw_IdentityType( + template (present) NAS_IdType p_NAS_IdType := ? + ) := { + spare := '0'B, + typeOfId := p_NAS_IdType + } // End of template mw_IdentityType + + //from template (present) NG_MobileIdentity cr_NG_MobileIdentitySUCI - NG_NAS_Common + template (value) NG_MobileIdentity m_NG_MobileIdentitySUCI(template (value) B4_Type p_SUPIFormat, + template (value) octetstring p_OtherDigits) := + { /* @status APPROVED (NR5GC) */ + iei := omit, + iel := int2oct(1+lengthof(p_OtherDigits), 2), // @sic R5s190719 sic@ + idDigit1 := p_SUPIFormat, // 4 bits + oddEvenInd := '0'B, // 1 bit + typeOfId := tsc_IdType_NG_SUCI, // 3 bits + otherDigits := p_OtherDigits + }; + + template RegistrationType m_rt(B1_Type p_fOR, B3_Type p_registrationType):= { /* 24.501 cl. 9.11.3.7 */ + // IEI is always skipped + fOR := p_fOR, + registrationType := p_registrationType + }; + + template (omit) PayloadContainer m_PayloadContainer( + in template (omit) IEI8_Type p_IEI := omit, + in template (value) Type6Length_Type p_IEL, + in template (value) octetstring p_payload + ) := { + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := p_IEL, /* allow any length */ + payload := p_payload /* allow any value for now */ + } // End of template m_PayloadContainer + + template (present) PayloadContainer mw_PayloadContainer( + template IEI8_Type p_IEI := ? + ) modifies cr_PayloadContainer := { + } // End of template mw_PayloadContainer + + template (value) NG_SECURITY_PROTECTED_NAS_MESSAGE m_NG_SECURITY_PROTECTED_NAS_MESSAGE( + in template (value) ExtdProtocolDiscriminator p_protocolDiscriminator, + in template (value) SpareHalfOctet p_spareHalfOctet, + in template (value) SecurityHeaderType p_securityHeaderType, + in template (value) MessageAuthenticationCode p_messageAuthenticationCode, + in template (value) NAS_SequenceNumber p_sequenceNumber, + in template (value) NG_NAS_Message p_plainNASMessage + ) := { /* 24.501 cl. 8.2.28 Significance: dual Direction: both */ + protocolDiscriminator := p_protocolDiscriminator, /* cl. 9.2 M V 1 */ + spareHalfOctet := p_spareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := p_securityHeaderType, /* cl. 9.3 M V 1/2 */ + messageAuthenticationCode := p_messageAuthenticationCode, /* cl. 9.8 M V 4 */ + sequenceNumber := p_sequenceNumber, /* cl. 9.10 M V 1 */ + plainNASMessage := p_plainNASMessage /* cl. 9.9 M V 3-n */ + } // End of template m_NG_SECURITY_PROTECTED_NAS_MESSAGE + + template (present) NG_SECURITY_PROTECTED_NAS_MESSAGE mw_NG_SECURITY_PROTECTED_NAS_MESSAGE( + template (present) ExtdProtocolDiscriminator p_protocolDiscriminator := ?, + template (present) SpareHalfOctet p_spareHalfOctet := ?, + template (present) SecurityHeaderType p_securityHeaderType := ?, + template (present) MessageAuthenticationCode p_messageAuthenticationCode := ?, + template (present) NAS_SequenceNumber p_sequenceNumber := ?, + template (present) NG_NAS_Message p_plainNASMessage := ? + ) := { /* 24.501 cl. 8.2.28 Significance: dual Direction: both */ + protocolDiscriminator := p_protocolDiscriminator, /* cl. 9.2 M V 1 */ + spareHalfOctet := p_spareHalfOctet, /* cl. 9.5 M V 1/2 */ + securityHeaderType := p_securityHeaderType, /* cl. 9.3 M V 1/2 */ + messageAuthenticationCode := p_messageAuthenticationCode, /* cl. 9.8 M V 4 */ + sequenceNumber := p_sequenceNumber, /* cl. 9.10 M V 1 */ + plainNASMessage := p_plainNASMessage /* cl. 9.9 M V 3-n */ + } // End of template mw_NG_SECURITY_PROTECTED_NAS_MESSAGE + + template (present) RAND mw_GMM_AuthRAND( + template (present) B128_Type p_rand := ? + ) := { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '21'O, + randValue := p_rand + } // End of template mw_GMM_AuthRAND + + template (present) AUTN mw_GSM_AUTN( + template (present) B128_Type p_autn := ? + ) := { /* @status APPROVED (IMS, IMS_IRAT, LTE_A_IRAT, LTE_IRAT, NR5GC, NR5GC_IRAT, POS, SSNITZ, UTRAN) */ + iei := '20'O, + iel := '10'O, // Length of 16 octets + aUTN := p_autn // value of Authentication Parameter AUTN + } // End of template mw_GSM_AUTN + + template (value) NAS_KeySetIdentifier m_NAS_KeySetIdentifier( + in NAS_KsiValue p_NasKeySetId, + in B1_Type p_Tsc, + in IEI4_Type p_iei + ) modifies cs_NAS_KeySetIdentifier_lv := { + iei := p_iei + } // End of template m_NAS_KeySetIdentifier + + template (present) NAS_KeySetIdentifier mw_NAS_KeySetIdentifier( + template (present) NAS_KsiValue p_KsiValue, + template (present) B1_Type p_Tsc, + template (present) IEI4_Type p_iei + ) modifies cr_NAS_KeySetIdentifier := { + iei := p_iei + } // End of template mw_NAS_KeySetIdentifier + +} // End of module Lib_NG_NAS_Templates \ No newline at end of file diff --git a/ttcn/Lib_NG_NAS/NG_NAS_BaseTemplates.ttcn b/ttcn/Lib_NG_NAS/NG_NAS_BaseTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c09f7d24507556c2c2a3ae71ee33cb429d59b3cd --- /dev/null +++ b/ttcn/Lib_NG_NAS/NG_NAS_BaseTemplates.ttcn @@ -0,0 +1,3 @@ +module NG_NAS_BaseTemplates{ + +} diff --git a/ttcn/Lib_NG_NAS/NG_NAS_EncdecDeclarations b/ttcn/Lib_NG_NAS/NG_NAS_EncdecDeclarations new file mode 100644 index 0000000000000000000000000000000000000000..7f65093940e261c773bbd481df1fe094e041262c --- /dev/null +++ b/ttcn/Lib_NG_NAS/NG_NAS_EncdecDeclarations @@ -0,0 +1,50 @@ +module NG_NAS_EncdecDeclarations { + + import from NG_NAS_MsgContainers all; + import from NG_NAS_TypeDefs all; + import from EAP_TypeDefs all; + + + external function fx_enc_NG_NAS_UL_Message_Type (NG_NAS_UL_Message_Type p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_NG_NAS_UL_Message_Type (inout bitstring pdu, out NG_NAS_UL_Message_Type p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_NG_NAS_DL_Message_Type (NG_NAS_DL_Message_Type p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_NG_NAS_DL_Message_Type (inout bitstring pdu, out NG_NAS_DL_Message_Type p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + //external function fx_dec_NG_NAS_DL_Message_Type (in octetstring pdu) return NG_NAS_DL_Message_Type + //with {extension "prototype(convert) decode(RAW)"} + + external function fx_enc_NG_SECURITY_PROTECTED_NAS_MESSAGE(NG_SECURITY_PROTECTED_NAS_MESSAGE p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_NG_SECURITY_PROTECTED_NAS_MESSAGE(in octetstring pdu) return NG_SECURITY_PROTECTED_NAS_MESSAGE + //with {extension "prototype(sliding) decode(NAS Types)"} + + external function fx_enc_IntraN1TransparentContainer (IntraN1TransparentContainer p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_IntraN1TransparentContainer (inout bitstring pdu, out IntraN1TransparentContainer p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + external function fx_enc_CIoTSmallDataContainer (CIoTSmallDataContainer p) return bitstring + //with {extension "prototype(convert) encode(NAS Types)"} + + external function fx_dec_CIoTSmallDataContainer (inout bitstring pdu, out CIoTSmallDataContainer p) return integer + //with {extension "prototype(sliding) decode(NAS Types)"} + + + + external function fx_enc_EAP_Message_Type (EAP_Message_Type p) return bitstring + with {extension "prototype(convert) encode(EAP Types)"} + + external function fx_dec_EAP_Message_Type (inout bitstring pdu, out EAP_Message_Type p) return integer + with {extension "prototype(sliding) decode(EAP Types)"} + +} // End of module module NG_NAS_EncdecDeclarations diff --git a/ttcn/Lib_NG_NAS/module.mk b/ttcn/Lib_NG_NAS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..34a512a884a16880a2e9aaf42b267947b0fa481b --- /dev/null +++ b/ttcn/Lib_NG_NAS/module.mk @@ -0,0 +1,13 @@ +sources := \ + Lib_NG_NAS_Interface.ttcn \ + Lib_NG_NAS_Templates.ttcn \ + LIB_NG_NAS_Functions.ttcn \ + Lib_NG_NAS_Pixits.ttcn \ + + #../Lib3GPP/NG_NAS_EncdecDeclarations.ttcn + +#modules := \ +# ../Lib3GPP + + + diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module new file mode 160000 index 0000000000000000000000000000000000000000..f6b2d2ba3f486dea778e108ce60e02a3fcae9ff8 --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module @@ -0,0 +1 @@ +Subproject commit f6b2d2ba3f486dea778e108ce60e02a3fcae9ff8 diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..9b0b530e68349c8056d17bf0cfc676adf70adcb8 --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk @@ -0,0 +1,2 @@ +sources := module/src/Abstract_Socket.cc +includes := module/src \ No newline at end of file diff --git a/ttcn/patch_abstract_socket/Abstract_Socket.cc.patch b/ttcn/patch_abstract_socket/Abstract_Socket.cc.patch new file mode 100644 index 0000000000000000000000000000000000000000..55f334a33e59cce9da9b4fe7d2155b7821c735c9 --- /dev/null +++ b/ttcn/patch_abstract_socket/Abstract_Socket.cc.patch @@ -0,0 +1,117 @@ +diff --git a/src/Abstract_Socket.cc b/src/Abstract_Socket.cc +index 8b7b753..5e4addf 100644 +--- a/src/Abstract_Socket.cc ++++ b/src/Abstract_Socket.cc +@@ -40,6 +40,7 @@ + # include + #endif + ++#include + + #define AS_TCP_CHUNCK_SIZE 4096 + #define AS_SSL_CHUNCK_SIZE 16384 +@@ -171,6 +172,7 @@ Abstract_Socket::Abstract_Socket() { + remote_host_name = NULL; + remote_port_number = 0; + ai_family = AF_UNSPEC; // default: Auto ++ ip_proto = IPPROTO_TCP; // default + test_port_type=NULL; + test_port_name=NULL; + ttcn_buffer_usercontrol=false; +@@ -199,6 +201,7 @@ Abstract_Socket::Abstract_Socket(const char *tp_type, const char *tp_name) { + remote_host_name = NULL; + remote_port_number = 0; + ai_family = AF_UNSPEC; // default: Auto ++ ip_proto = IPPROTO_TCP; // default + test_port_type=tp_type; + test_port_name=tp_name; + ttcn_buffer_usercontrol=false; +@@ -261,6 +264,10 @@ bool Abstract_Socket::parameter_set(const char *parameter_name, + else if (strcasecmp(parameter_value,"IPv4")==0 || strcasecmp(parameter_value,"AF_INET")==0) ai_family = AF_INET; + else if (strcasecmp(parameter_value,"UNSPEC")==0 || strcasecmp(parameter_value,"AF_UNSPEC")==0) ai_family = AF_UNSPEC; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ai_family_name()); ++ } else if(strcmp(parameter_name, ip_proto_name()) == 0){ ++ if (strcasecmp(parameter_value,"IPPROTO_TCP")==0) ip_proto = IPPROTO_TCP; ++ else if (strcasecmp(parameter_value,"IPPROTO_SCTP")==0) ip_proto = IPPROTO_SCTP; ++ else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ip_proto_name()); + } else if(strcmp(parameter_name, local_port_name()) == 0){ + int a; + if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: %s", parameter_value); +@@ -760,6 +767,7 @@ int Abstract_Socket::open_listen_port(const char* localHostname, const char* loc + hints.ai_flags = /*AI_ALL|*/AI_ADDRCONFIG|AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family; ++ hints.ai_protocol = ip_proto; + + error = getaddrinfo(localHostname, localServicename, &hints, &aip); + if (error != 0) { +@@ -1143,6 +1151,7 @@ int Abstract_Socket::open_client_connection(const char* remoteHostname, const ch + } + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family; ++ hints.ai_protocol = ip_proto; + + error = getaddrinfo(remoteHostname, remoteServicename, &hints, &res); + if (error != 0) { +@@ -1191,9 +1200,11 @@ int Abstract_Socket::open_client_connection(const char* remoteHostname, const ch + } + } + +- log_debug("Using address family for socket %d: %s",socket_fd, ++ log_debug("Using address family for socket %d: %s - %s",socket_fd, + ((aip->ai_family==AF_INET)?"IPv4": +- ((aip->ai_family==AF_INET6)?"IPv6":"unknown")) ++ ((aip->ai_family==AF_INET6)?"IPv6":"unknown")), ++ ((aip->ai_protocol==IPPROTO_TCP)?"IPPROTO_TCP": ++ ((aip->ai_protocol==IPPROTO_SCTP)?"IPPROTO_SCTP":"unknown")) + ); + + +@@ -1225,6 +1236,7 @@ int Abstract_Socket::open_client_connection(const char* remoteHostname, const ch + hints.ai_flags = AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family;//aip->ai_family; // NOTE: On solaris 10 if is set to aip->ai_family, getaddrinfo will crash for IPv4-mapped addresses! ++ hints.ai_protocol = ip_proto; + + error = getaddrinfo(localHostname, localServicename, &hints, &localAddrinfo); + if (error != 0) { +@@ -1390,10 +1402,13 @@ int Abstract_Socket::open_client_connection(const char* remoteHostname, const ch + } + + log_debug( +- "connected to: host %s service %s via address family %s\n", ++ "connected to: host %s service %s via address family %s with ip_proto %s\n", + remoteHostname, remoteServicename, + ((aip->ai_family==AF_INET)?"IPv4": +- ((aip->ai_family==AF_INET6)?"IPv6":"unknown"))); ++ ((aip->ai_family==AF_INET6)?"IPv6":"unknown")), ++ ((aip->ai_protocol==IPPROTO_TCP)?"IPPROTO_TCP": ++ ((aip->ai_protocol==IPPROTO_SCTP)?"IPPROTO_SCTP":"unknown")) ++ ); + break; + } + if (aip==NULL) { +@@ -1774,18 +1789,19 @@ const char* Abstract_Socket::remote_address_name() { return "destIPAddr + const char* Abstract_Socket::local_address_name() { return "serverIPAddr";} + const char* Abstract_Socket::remote_port_name() { return "destPort";} + const char* Abstract_Socket::ai_family_name() { return "ai_family";} ++const char* Abstract_Socket::ip_proto_name() { return "ip_proto";} + const char* Abstract_Socket::use_connection_ASPs_name() { return "use_connection_ASPs";} + const char* Abstract_Socket::halt_on_connection_reset_name(){ return "halt_on_connection_reset";} +-const char* Abstract_Socket::client_TCP_reconnect_name() { return "client_TCP_reconnect";} ++const char* Abstract_Socket::client_TCP_reconnect_name() { return "client_TCP_reconnect";} + const char* Abstract_Socket::TCP_reconnect_attempts_name() { return "TCP_reconnect_attempts";} +-const char* Abstract_Socket::TCP_reconnect_delay_name() { return "TCP_reconnect_delay";} ++const char* Abstract_Socket::TCP_reconnect_delay_name() { return "TCP_reconnect_delay";} + const char* Abstract_Socket::server_mode_name() { return "server_mode";} + const char* Abstract_Socket::socket_debugging_name() { return "socket_debugging";} + const char* Abstract_Socket::nagling_name() { return "nagling";} + const char* Abstract_Socket::use_non_blocking_socket_name() { return "use_non_blocking_socket";} + const char* Abstract_Socket::server_backlog_name() { return "server_backlog";} +-bool Abstract_Socket::add_user_data(int) {return true;} +-bool Abstract_Socket::remove_user_data(int) {return true;} ++bool Abstract_Socket::add_user_data(int) {return true;} ++bool Abstract_Socket::remove_user_data(int) {return true;} + bool Abstract_Socket::user_all_mandatory_configparameters_present() { return true; } + + diff --git a/ttcn/patch_abstract_socket/Abstract_Socket.hh.patch b/ttcn/patch_abstract_socket/Abstract_Socket.hh.patch new file mode 100644 index 0000000000000000000000000000000000000000..bce5667c9379427f8c787a494a45063e633ca6cb --- /dev/null +++ b/ttcn/patch_abstract_socket/Abstract_Socket.hh.patch @@ -0,0 +1,38 @@ +diff --git a/src/Abstract_Socket.hh b/src/Abstract_Socket.hh +index 6d7bc3d..a068662 100644 +--- a/src/Abstract_Socket.hh ++++ b/src/Abstract_Socket.hh +@@ -134,7 +134,7 @@ protected: + bool get_handle_half_close() const {return handle_half_close;} + int get_socket_fd() const; + int get_listen_fd() const {return listen_fd;} +- ++ + //set non-blocking mode + int set_non_block_mode(int fd, bool enable_nonblock); + +@@ -149,6 +149,8 @@ protected: + const struct sockaddr_in & get_local_addr() {return localAddr; }; /* FIXME: This function is deprecated and should be removed! */ + const int& get_ai_family() const {return ai_family;} + void set_ai_family(int parameter_value) {ai_family=parameter_value;} ++ const int& get_ip_proto() const {return ip_proto;} ++ void set_ip_proto(int parameter_value) {ip_proto=parameter_value;} + bool get_ttcn_buffer_usercontrol() const {return ttcn_buffer_usercontrol; } + void set_nagling(bool parameter_value) {nagling=parameter_value;} + void set_server_mode(bool parameter_value) {server_mode=parameter_value;} +@@ -204,6 +206,7 @@ protected: + virtual const char* local_address_name(); + virtual const char* remote_port_name(); + virtual const char* ai_family_name(); ++ virtual const char* ip_proto_name(); + virtual const char* use_connection_ASPs_name(); + virtual const char* halt_on_connection_reset_name(); + virtual const char* client_TCP_reconnect_name(); +@@ -269,6 +272,7 @@ private: + char* remote_host_name; + unsigned int remote_port_number; + int ai_family; // address family to use ++ int ip_proto; // protocol to use (e.g. IPPROTO_TCP, IPPROTO_SCTP) + // remoteAddr and localAddr is filled when map_user is called + struct sockaddr_in remoteAddr; /* FIXME: not used! should be removed */ + struct sockaddr_in localAddr; /* FIXME: not used! should be removed */ diff --git a/ttcn/patch_lib_common_titan/module.mk b/ttcn/patch_lib_common_titan/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..b4b7cd736054dea420eca51497e97decb81ba2be --- /dev/null +++ b/ttcn/patch_lib_common_titan/module.mk @@ -0,0 +1,9 @@ +sources := \ + ../patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn \ + ../patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn \ + ../patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn \ + ../patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn \ + ttcn/LibCommon_TextStrings.ttcn \ + ttcn/LibCommon_Time.ttcn \ + ttcn/LibCommon_VerdictControl.ttcn + diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8ae5f859cfc20f83233a6a500d67ebc45abb7d80 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn @@ -0,0 +1,137 @@ +/** + * @author ETSI + * @version $URL$ + * $Id$ + * @desc A collection of functions for abstract data types which may be + * useful in the implementation of any TTCN-3 test suite. + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ + module LibCommon_AbstractData { + + import from LibCommon_BasicTypesAndValues all; + + group stringStack { + + type record StringStack { + UInt stackSize, + StringItems stringItems + } + + type record of charstring StringItems; + + /** + * @desc Constant which can be used to initialize a + * string stack. A string stack can be intialized by + * assigning this value in the variable declariation. + * An alternative is to call the initlialization function. + * @see LibCommon_AbstractData.f_initStringStack + * @remark Note that an initlialized stack stack is not + * necessarily the same as an empty string stack. + * An empty tring stack as 0 zero elements but may + * have a non empty list of (empty) items. + */ + const StringStack c_initStringStack := { 0, {} } + + /** + * @desc The invocation of this function will initialize + * a string stack to an empty string stack. + * An alternative is to initlialize a stack using a + * constant value. + * @see LibCommon_AbstractData.c_initStringStack + * @param p_stack String stack to be initialized. + */ + function f_initStringStack ( inout StringStack p_stack ) { + p_stack := c_initStringStack + } + + /** + * @desc This function checks if a string stack is empty. + * @param p_stack String stack to be checked. + * @return true if empty, false if not empty + */ + function f_isStringStackEmpty ( inout StringStack p_stack ) + return boolean { + if ( p_stack.stackSize == 0 ) {return true} + else {return false} + } + + /** + * @desc This function checks if a given string is on the + * string stack. + * @param p_stack String stack where the string item + * is to be looked for. + * @param p_item String to be checked for. + * @return true if found, false if not found + */ + function f_isItemOnStringStack ( inout StringStack p_stack, + in charstring p_item ) + return boolean { + var integer i; + for (i := 0; i < p_stack.stackSize; i := i+1 ) { + if ( p_stack.stringItems[i] == p_item ) { + return true; + } + } + return false; + } + + /** + * @desc This function checks if a given string is on the + * string stack. + * @param p_stack String stack where the string item + * is to be looked for. + * @param p_item String item on top of the stack. + * @return false if stack is empty, true otherwise + */ + function f_peekStringStackTop ( inout StringStack p_stack, + out charstring p_item) + return boolean { + if (p_stack.stackSize == 0) { + p_item := "f_peekTopStringStack: String stack is empty!"; + return false; + } + p_item := valueof(p_stack.stringItems[p_stack.stackSize-1]); + return true; + } + + + /** + * @desc This function puts a string to the top of a + * string stack. + * @param p_stack String stack to which the string item + * is to be added. + * @param p_item String to be added. + */ + function f_pushStringStack ( inout StringStack p_stack, + in charstring p_item ) { + p_stack.stringItems[p_stack.stackSize] := p_item; + p_stack.stackSize := p_stack.stackSize + 1; + } + + /** + * @desc This function removes the string from the top of a + * string stack. If the stack is empty nothing is done + * @param p_stack String stack from which the top string item + * is to be removed. + */ + function f_popStringStack ( inout StringStack p_stack ) { + if ( p_stack.stackSize > 0 ) { + p_stack.stackSize := p_stack.stackSize-1; + // "delete" top stack item to be safe + // Note: due to record of index the "old top" is size-1! + p_stack.stringItems[p_stack.stackSize] := ""; + } + } + + } // end group stringStack + +} // end module LibCommon_AbstractData diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1077c603348eb4d6659c2de38dc5d71fa85adbd5 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn @@ -0,0 +1,247 @@ +/** + * @author ETSI + * @version $URL$ + * $Id$ + * @desc A collection of basic type and value definitions which may be + * useful in the implementation of any TTCN-3 test suite.

+ * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ + module LibCommon_BasicTypesAndValues { + + /** + * @remark Number in subtype name always indicates encoding length + * in _bits_ + */ + group unsignedIntegerDefintions { + + const integer c_uInt1Max := 1; + const integer c_uInt2Max := 3; + const integer c_uInt3Max := 7; + const integer c_uInt4Max := 15; + const integer c_uInt5Max := 31; + const integer c_uInt6Max := 63; + const integer c_uInt7Max := 127; + const integer c_uInt8Max := 255; + const integer c_uInt9Max := 511; + const integer c_uInt10Max := 1023; + const integer c_uInt11Max := 2047; + const integer c_uInt12Max := 4095; + const integer c_uInt13Max := 8191; + const integer c_uInt14Max := 16383; + const integer c_uInt15Max := 32767; + const integer c_uInt16Max := 65535; + const integer c_uInt17Max := 131071; + const integer c_uInt18Max := 262143; + const integer c_uInt19Max := 524287; + const integer c_uInt20Max := 1048575; + const integer c_uInt21Max := 2097151; + const integer c_uInt22Max := 4194303; + const integer c_uInt23Max := 8388607; + const integer c_uInt24Max := 16777215; + const integer c_uInt25Max := 33554431; + const integer c_uInt26Max := 67108863; + const integer c_uInt27Max := 134217727; + const integer c_uInt28Max := 268435456; + const integer c_uInt29Max := 536870911; + const integer c_uInt30Max := 1073741823; + const integer c_uInt31Max := 2147483647; + const integer c_uInt32Max := 4294967295; + const integer c_uInt36Max := 68719476735; + const integer c_uInt48Max := 281474976710655; + const integer c_uInt52Max := 4503599627370495; + const integer c_uInt64Max := 18446744073709551615; + + type integer UInt (0 .. infinity); + type integer UInt1 (0 .. c_uInt1Max) with {variant "unsigned 1 bit"}; + type integer UInt2 (0 .. c_uInt2Max) with {variant "unsigned 2 bit"}; + type integer UInt3 (0 .. c_uInt3Max) with {variant "unsigned 3 bit"}; + type integer UInt4 (0 .. c_uInt4Max) with {variant "unsigned 4 bit"}; + type integer UInt5 (0 .. c_uInt5Max) with {variant "unsigned 5 bit"}; + type integer UInt6 (0 .. c_uInt6Max) with {variant "unsigned 6 bit"}; + type integer UInt7 (0 .. c_uInt7Max) with {variant "unsigned 7 bit"}; + type integer UInt8 (0 .. c_uInt8Max) with {variant "unsigned 8 bit"}; + type integer UInt9 (0 .. c_uInt9Max) with {variant "unsigned 9 bit"}; + type integer UInt10 (0 .. c_uInt10Max) with {variant "unsigned 10 bit"}; + type integer UInt11 (0 .. c_uInt11Max) with {variant "unsigned 11 bit"}; + type integer UInt12 (0 .. c_uInt12Max) with {variant "unsigned 12 bit"}; + type integer UInt13 (0 .. c_uInt13Max) with {variant "unsigned 13 bit"}; + type integer UInt14 (0 .. c_uInt14Max) with {variant "unsigned 14 bit"}; + type integer UInt15 (0 .. c_uInt15Max) with {variant "unsigned 15 bit"}; + type integer UInt16 (0 .. c_uInt16Max) with {variant "unsigned 16 bit"}; + type integer UInt17 (0 .. c_uInt17Max) with {variant "unsigned 17 bit"}; + type integer UInt18 (0 .. c_uInt18Max) with {variant "unsigned 18 bit"}; + type integer UInt19 (0 .. c_uInt19Max) with {variant "unsigned 19 bit"}; + type integer UInt20 (0 .. c_uInt20Max) with {variant "unsigned 20 bit"}; + type integer UInt21 (0 .. c_uInt21Max) with {variant "unsigned 21 bit"}; + type integer UInt22 (0 .. c_uInt22Max) with {variant "unsigned 22 bit"}; + type integer UInt23 (0 .. c_uInt23Max) with {variant "unsigned 23 bit"}; + type integer UInt24 (0 .. c_uInt24Max) with {variant "unsigned 24 bit"}; + type integer UInt25 (0 .. c_uInt25Max) with {variant "unsigned 25 bit"}; + type integer UInt26 (0 .. c_uInt26Max) with {variant "unsigned 26 bit"}; + type integer UInt27 (0 .. c_uInt27Max) with {variant "unsigned 27 bit"}; + type integer UInt28 (0 .. c_uInt28Max) with {variant "unsigned 28 bit"}; + type integer UInt29 (0 .. c_uInt29Max) with {variant "unsigned 29 bit"}; + type integer UInt30 (0 .. c_uInt30Max) with {variant "unsigned 30 bit"}; + type integer UInt31 (0 .. c_uInt31Max) with {variant "unsigned 31 bit"}; + type integer UInt32 (0 .. c_uInt32Max) with {variant "unsigned 32 bit"}; + type integer UInt36 (0 .. c_uInt36Max) with {variant "unsigned 36 bit"}; + type integer UInt48 (0 .. c_uInt48Max) with {variant "unsigned 48 bit"}; + type integer UInt52 (0 .. c_uInt52Max) with {variant "unsigned 52 bit"}; + type integer UInt64 (0 .. c_uInt64Max) with {variant "unsigned 64 bit"}; + + } // end group unsignedIntegerDefintions + + /** + * @remark Number in subtype name always indicates encoding length + * in _bits_ + */ + group signedIntegerDefintions { + + const integer c_int1Min := -1; + const integer c_int1Max := 0; + const integer c_int2Min := -2; + const integer c_int2Max := 1; + const integer c_int3Min := -4; + const integer c_int3Max := 3; + const integer c_int4Min := -8; + const integer c_int4Max := 7; + const integer c_int5Min := -16; + const integer c_int5Max := 15; + const integer c_int6Min := -32; + const integer c_int6Max := 31; + const integer c_int7Min := -64; + const integer c_int7Max := 63; + const integer c_int8Min := -128; + const integer c_int8Max := 127; + const integer c_int9Min := -256; + const integer c_int9Max := 255; + const integer c_int10Min := -512; + const integer c_int10Max := 511; + const integer c_int11Min := -1024; + const integer c_int11Max := 1023; + const integer c_int12Min := -2048; + const integer c_int12Max := 2047; + const integer c_int13Min := -4096; + const integer c_int13Max := 4095; + const integer c_int14Min := -8192; + const integer c_int14Max := 8191; + const integer c_int15Min := -16384; + const integer c_int15Max := 16383; + const integer c_int16Min := -32768; + const integer c_int16Max := 32767; + const integer c_int17Min := -65536; + const integer c_int17Max := 65535; + const integer c_int18Min := -131072; + const integer c_int18Max := 131071; + const integer c_int19Min := -262144; + const integer c_int19Max := 262143; + const integer c_int20Min := -524288; + const integer c_int20Max := 524287; + const integer c_int21Min := -1048576; + const integer c_int21Max := 1048575; + const integer c_int22Min := -2097152; + const integer c_int22Max := 2097151; + const integer c_int23Min := -4194304; + const integer c_int23Max := 4194303; + const integer c_int24Min := -8388608; + const integer c_int24Max := 8388607; + const integer c_int25Min := -16777216; + const integer c_int25Max := 16777215; + const integer c_int26Min := -33554432; + const integer c_int26Max := 33554431; + const integer c_int27Min := -67108864; + const integer c_int27Max := 67108863; + const integer c_int28Min := -134217728; + const integer c_int28Max := 134217727; + const integer c_int29Min := -268435456; + const integer c_int29Max := 268435456; + const integer c_int30Min := -536870912; + const integer c_int30Max := 536870911; + const integer c_int31Min := -1073741824; + const integer c_int31Max := 1073741823; + const integer c_int32Min := -2147483648; + const integer c_int32Max := 2147483647; + + type integer Int; + type integer Int1 (c_int1Min .. c_int1Max) with { variant "1 bit"}; + type integer Int2 (c_int2Min .. c_int2Max) with { variant "2 bit"}; + type integer Int3 (c_int3Min .. c_int3Max) with { variant "3 bit"}; + type integer Int4 (c_int4Min .. c_int4Max) with { variant "4 bit"}; + type integer Int5 (c_int5Min .. c_int5Max) with { variant "5 bit"}; + type integer Int6 (c_int6Min .. c_int6Max) with { variant "6 bit"}; + type integer Int7 (c_int7Min .. c_int7Max) with { variant "7 bit"}; + type integer Int8 (c_int8Min .. c_int8Max) with { variant "8 bit"}; + type integer Int9 (c_int9Min .. c_int9Max) with { variant "9 bit"}; + type integer Int10 (c_int10Min .. c_int10Max) with { variant "10 bit"}; + type integer Int11 (c_int11Min .. c_int11Max) with { variant "11 bit"}; + type integer Int12 (c_int12Min .. c_int12Max) with { variant "12 bit"}; + type integer Int13 (c_int13Min .. c_int13Max) with { variant "13 bit"}; + type integer Int14 (c_int14Min .. c_int14Max) with { variant "14 bit"}; + type integer Int15 (c_int15Min .. c_int15Max) with { variant "15 bit"}; + type integer Int16 (c_int16Min .. c_int16Max) with { variant "16 bit"}; + type integer Int17 (c_int17Min .. c_int17Max) with { variant "17 bit"}; + type integer Int18 (c_int18Min .. c_int18Max) with { variant "18 bit"}; + type integer Int19 (c_int19Min .. c_int19Max) with { variant "19 bit"}; + type integer Int20 (c_int20Min .. c_int20Max) with { variant "20 bit"}; + type integer Int21 (c_int21Min .. c_int21Max) with { variant "21 bit"}; + type integer Int22 (c_int22Min .. c_int22Max) with { variant "22 bit"}; + type integer Int23 (c_int23Min .. c_int23Max) with { variant "23 bit"}; + type integer Int24 (c_int24Min .. c_int24Max) with { variant "24 bit"}; + type integer Int25 (c_int25Min .. c_int25Max) with { variant "25 bit"}; + type integer Int26 (c_int26Min .. c_int26Max) with { variant "26 bit"}; + type integer Int27 (c_int27Min .. c_int27Max) with { variant "27 bit"}; + type integer Int28 (c_int28Min .. c_int28Max) with { variant "28 bit"}; + type integer Int29 (c_int29Min .. c_int29Max) with { variant "29 bit"}; + type integer Int30 (c_int30Min .. c_int30Max) with { variant "30 bit"}; + type integer Int31 (c_int31Min .. c_int31Max) with { variant "31 bit"}; + type integer Int32 (c_int32Min .. c_int32Max) with { variant "32 bit"}; + + } // end group signedIntegerDefintions + + group zeroedIntegers { + + const UInt1 c_uInt1Zero := 0; + const UInt2 c_uInt2Zero := 0; + const UInt3 c_uInt3Zero := 0; + const UInt4 c_uInt4Zero := 0; + const UInt5 c_uInt5Zero := 0; + const UInt6 c_uInt6Zero := 0; + const UInt7 c_uInt7Zero := 0; + const UInt8 c_uInt8Zero := 0; + const UInt10 c_uInt10Zero := 0; + const UInt12 c_uInt12Zero := 0; + const UInt14 c_uInt14Zero := 0; + const UInt16 c_uInt16Zero := 0; + const UInt24 c_uInt24Zero := 0; + const UInt32 c_uInt32Zero := 0; + const UInt48 c_uInt48Zero := 0; + + }//end group zeroedInt + + /** + * @remark Number in subtype name always indicates encoding length + * in _bits_ + */ + group booleanDefintions { + + type boolean Bool1 with { variant "1 bit" }; + type boolean Bool2 with { variant "2 bit" }; + type boolean Bool3 with { variant "3 bit" }; + type boolean Bool4 with { variant "4 bit" }; + type boolean Bool5 with { variant "5 bit" }; + type boolean Bool6 with { variant "6 bit" }; + type boolean Bool7 with { variant "7 bit" }; + type boolean Bool8 with { variant "8 bit" }; + + } // end group booleanDefintions + +} // end module LibCommon_BasicTypesAndValues diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..0ee60f2fc782e88848d98433ec05663f379373f8 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn @@ -0,0 +1,168 @@ +/** + * + * @author ETSI + * @version $URL$ + * $Id$ + * @desc A collection of data string type and value definitions which + * may be useful in the implementation of any TTCN-3 test + * suite. "Data string" refers to TTCN-3 hexstring, octetstring + * and bitstring types. + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ + module LibCommon_DataStrings { + + /** + * @remark Number in name indicates string length in number of + * _bits_ + */ + group bitStringSubTypes { + + type bitstring Bit1 length(1) with {encode "length(1)"}; + type bitstring Bit2 length(2) with {encode "length(2)"}; + type bitstring Bit3 length(3) with {encode "length(3)"}; + type bitstring Bit4 length(4) with {encode "length(4)"}; + type bitstring Bit5 length(5) with {encode "length(5)"}; + type bitstring Bit6 length(6) with {encode "length(6)"}; + type bitstring Bit7 length(7) with {encode "length(7)"}; + type bitstring Bit8 length(8) with {encode "length(8)"}; + type bitstring Bit9 length(9) with {encode "length(9)"}; + type bitstring Bit10 length(10) with {encode "length(10)"}; + type bitstring Bit11 length(11) with {encode "length(11)"}; + type bitstring Bit12 length(12) with {encode "length(12)"}; + type bitstring Bit13 length(13) with {encode "length(13)"}; + type bitstring Bit14 length(14) with {encode "length(14)"}; + type bitstring Bit15 length(15) with {encode "length(15)"}; + type bitstring Bit16 length(16) with {encode "length(16)"}; + type bitstring Bit17 length(17) with {encode "length(17)"}; + type bitstring Bit18 length(18) with {encode "length(18)"}; + type bitstring Bit19 length(19) with {encode "length(19)"}; + type bitstring Bit20 length(20) with {encode "length(20)"}; + type bitstring Bit21 length(21) with {encode "length(21)"}; + type bitstring Bit22 length(22) with {encode "length(22)"}; + type bitstring Bit23 length(23) with {encode "length(23)"}; + type bitstring Bit24 length(24) with {encode "length(24)"}; + type bitstring Bit25 length(25) with {encode "length(25)"}; + type bitstring Bit26 length(26) with {encode "length(26)"}; + type bitstring Bit27 length(27) with {encode "length(27)"}; + type bitstring Bit28 length(28) with {encode "length(28)"}; + type bitstring Bit29 length(29) with {encode "length(29)"}; + type bitstring Bit30 length(30) with {encode "length(30)"}; + type bitstring Bit31 length(31) with {encode "length(31)"}; + type bitstring Bit32 length(32) with {encode "length(32)"}; + type bitstring Bit40 length(40) with {encode "length(40)"}; + + type bitstring Bit48 length(48) with {encode "length(48)"}; + type bitstring Bit64 length(64) with {encode "length(64)"}; + type bitstring Bit72 length(72) with {encode "length(72)"}; + type bitstring Bit128 length(128) with {encode "length(128)"}; + type bitstring Bit144 length(144) with {encode "length(144)"}; + type bitstring Bit256 length(256) with {encode "length(256)"}; + + } // end group bitStringSubTypes + + group zeroedBits { + + const Bit1 c_1ZeroBit := int2bit(0,1); + const Bit2 c_2ZeroBits := int2bit(0,2); + const Bit4 c_4ZeroBits := int2bit(0,4); + const Bit5 c_5ZeroBits := int2bit(0,5); + const Bit6 c_6ZeroBits := int2bit(0,6); + const Bit8 c_8ZeroBits := int2bit(0,8); + const Bit14 c_14ZeroBits := int2bit(0,14); + const Bit64 c_64ZeroBits := int2bit(0,64); + + }//end group zeroedBits + + /** + * @remark Number in name indicates string length in number of + * _octets_ + */ + group octetStringSubTypes { + + type octetstring Oct1 length(1) with {encode "length(1)"}; + type octetstring Oct2 length(2) with {encode "length(2)"}; + type octetstring Oct3 length(3) with {encode "length(3)"}; + type octetstring Oct4 length(4) with {encode "length(4)"}; + type octetstring Oct5 length(5) with {encode "length(5)"}; + type octetstring Oct6 length(6) with {encode "length(6)"}; + type octetstring Oct7 length(7) with {encode "length(7)"}; + type octetstring Oct8 length(8) with {encode "length(8)"}; + type octetstring Oct9 length(9) with {encode "length(9)"}; + type octetstring Oct10 length(10) with {encode "length(10)"}; + type octetstring Oct11 length(11) with {encode "length(11)"}; + type octetstring Oct12 length(12) with {encode "length(12)"}; + type octetstring Oct13 length(13) with {encode "length(13)"}; + type octetstring Oct14 length(14) with {encode "length(14)"}; + type octetstring Oct15 length(15) with {encode "length(15)"}; + type octetstring Oct16 length(16) with {encode "length(16)"}; + + type octetstring Oct20 length(20) with {encode "length(20)"}; + type octetstring Oct32 length(32) with {encode "length(32)"}; + type octetstring Oct48 length(48) with {encode "length(48)"}; + type octetstring Oct64 length(64) with {encode "length(64)"}; + type octetstring Oct80 length(80) with {encode "length(80)"}; + type octetstring Oct96 length(96) with {encode "length(96)"}; + type octetstring Oct128 length(128) with {encode "length(128)"}; + type octetstring Oct160 length(160) with {encode "length(160)"}; + type octetstring Oct320 length(320) with {encode "length(320)"}; + type octetstring Oct640 length(640) with {encode "length(640)"}; + type octetstring Oct1280 length(1280) with {encode "length(1280)"}; + type octetstring Oct1380 length(1380) with {encode "length(1380)"}; + + type octetstring Oct0to3 length(0..3) with {encode "length(0..3)"}; + type octetstring Oct0to8 length(0..16) with {encode "length(0..8)"}; + type octetstring Oct0to12 length(0..12) with {encode "length(0..12)"}; + type octetstring Oct0to16 length(0..16) with {encode "length(0..16)"}; + type octetstring Oct0to31 length(0..31) with {encode "length(0..31)"}; + type octetstring Oct0to20 length(0..20) with {encode "length(0..20)"}; + type octetstring Oct0to30 length(0..20) with {encode "length(0..30)"}; + type octetstring Oct0to127 length(0..127) with {encode "length(0..127)"}; + type octetstring Oct0to255 length(0..255) with {encode "length(0..255)"}; + + type octetstring Oct1to15 length(1..15) with {encode "length(1..15)"}; + type octetstring Oct1to31 length(1..31) with {encode "length(1..31)"}; + type octetstring Oct1to128 length(1..128) with {encode "length(1..128)"}; + type octetstring Oct1to254 length(1..254) with {encode "length(1..254)"}; + type octetstring Oct1to255 length(1..255) with {encode "length(1..255)"}; + + type octetstring Oct4to16 length(4..16) with {encode "length(4..16)"}; + type octetstring Oct6to15 length(6..15) with {encode "length(6..15)"}; + + } // end group octetStringSubTypes + + group zeroedBytes { + const Oct1 c_1ZeroByte := int2oct(0,1); + const Oct2 c_2ZeroBytes := int2oct(0,2); + const Oct4 c_4ZeroBytes := int2oct(0,4); + const Oct6 c_6ZeroBytes := int2oct(0,6); + const Oct8 c_8ZeroBytes := int2oct(0,8); + const Oct9 c_9ZeroBytes := int2oct(0,9); + const Oct12 c_12ZeroBytes := int2oct(0,12); + const Oct16 c_16ZeroBytes := int2oct(0,16); + const Oct20 c_20ZeroBytes := int2oct(0,20); + + const Oct80 c_80ZeroBytes := int2oct(0,80); + const Oct160 c_160ZeroBytes := int2oct(0,160); + const Oct320 c_320ZeroBytes := int2oct(0,320); + const Oct640 c_640ZeroBytes := int2oct(0,640); + const Oct1280 c_1280ZeroBytes := int2oct(0,1280); + const Oct1380 c_1380ZeroBytes := int2oct(0,1380); + const octetstring c_256ZeroBytes := int2oct(0,256); + const octetstring c_1KZeroBytes := int2oct(0,1024); + const octetstring c_4KZeroBytes := int2oct(0,4096); + const octetstring c_16KZeroBytes := int2oct(0,16384); + const octetstring c_64KZeroBytes := int2oct(0,65536); + const octetstring c_128KZeroBytes := int2oct(0,131072); + + }//end group zeroedBytes + +} // end module LibCommon_DataStrings diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eb11aef6902e2e36bf670457b6d30362093def84 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn @@ -0,0 +1,1360 @@ +/** + * @author ETSI + * @version $URL$ + * $Id$ + * @desc This module implements _one_ generic synchronization mechanism + * for TTCN-3 test cases with one or more test components. + * Key concept is here that one test component acts as a + * synchronization server which listens and triggers one or more + * synchronization clients. It is recomended to use the MTC always as + * the synchronization server but in theory also a PTC can act as such + * a server.

+ * This synchronization is used by calling a function on + * the server test component to wait for a desired amount of clients + * to notify the server that they have reached a specific synchronization + * point. Each client test component must call another + * function to perform this notification.

+ * In the event that a client is not able to reach a synchronization + * point the server sends out a signal to all clients to abort the + * test case. This signal is a STOP message which can be caught by + * a test component default which in turn can then run a proper + * shut down behavior based on the current state of the test + * component.

+ * Note that this synchronization mechanism can also be used + * in a special mode called "self synchronization" when a test case + * only has one test component. Here, the test component in essence + * acts as a server and client at the same time. The main benefit of + * using self synchoronization is that the same shutdown mechanisms + * can also be reused fomr the multi component test cases.

+ * This module contains a lot of TTCN-3 definitions. It has been + * structured into tree main groups to help the user to identify + * quickly relevant TTCN-3 definitions. For rookie users of this + * module basicUserRelevantDefinitions should offer all the needed + * definitions. Advanced users can consider use of definitions in + * advancedUserRelevantDefinitions. Finally, internalDefinitions + * are definitions which are required for the module to work + * properly but do not need to be used in your code. Remember that + * the main motiviation of this sychronization module is to offer + * are _simple_ user interface. Practice has shown that when writing + * actual test component behavior _only a handful_ of functions + * usually wind up being used! Also check the synchronization examples + * module for example uses of this synchronization mechanism.

+ * The invocation of the sync functions is also closely tied + * to the verdict control functions which should also be reviewed + * prior to using this module.

+ * This module has been derived from EtsiCommon_Synchronization + * which was created in ETSIs STF256/276. It has been kept + * intentionally separate to avoid conflicts with future ETSI + * test suite releases. + * @see LibCommon_Sync.basicUserRelevantDefinitions + * @see LibCommon_Sync.advancedUserRelevantDefinitions + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module LibCommon_Sync { + + //Common + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_AbstractData all; + import from LibCommon_VerdictControl all; + + group basicUserRelevantDefinitions { + + group importantSyncTypeDefinitions { + + group compTypeRelated { + + /** + * @desc This type is used to be the base of any synchronization + * behavior which is to be executed on a sync server + * component. The test component which acts as a + * sync server in a test case must NOT directly use + * this component type in its runs on clause! + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component BaseSyncComp { + port SyncPort syncPort; + timer tc_sync := PX_TSYNC_TIME_LIMIT; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is to be executed on a sync server + * component. The test component which acts as a + * sync server in a test case may - but does + * not have to - directly use this component type its + * runs on clause. + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component ServerSyncComp extends BaseSyncComp { + timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is to be executed on a sync client + * component. The test component(s) which act as a + * sync client in a test case may - but do not have + * to - directly use this component type their runs + * on clause. + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component ClientSyncComp extends BaseSyncComp { + var StringStack v_stateStack:= c_initStringStack; + var TestcaseStep vc_testcaseStep := e_preamble; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is relevant to non-concurrent test + * cases. + * Note that self synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + * Note also that this type is type compatible to the + * ClientSyncComp type so that shutdown altsteps from + * concurrent test cases can also be reused in single + * component test cases! + * @see LibCommon_Sync.ClientSyncComp + */ + type component SelfSyncComp extends ClientSyncComp { + port SyncPort syncSendPort; + } + + /** + * @desc This port type must be imported into test suites + * when defining test component types which are + * type compatible to a synchronization component + * type + * @see LibCommon_Sync.SelfSyncComp + * @see LibCommon_Sync.ServerSyncComp + * @see LibCommon_Sync.ClientSyncComp + */ + type port SyncPort message { + inout SyncCmd + } with { + extension "internal" + } + + + /** + * @desc Describes in which step of execution is the testcase + */ + type enumerated TestcaseStep { + e_preamble, + e_testBody, + e_postamble + } + + } // end compTypeRelated + + group standardSyncPointNames { + const charstring c_prDone := "preambleDone"; + const charstring c_poDone := "postambleDone"; + const charstring c_tbDone := "testBodyDone"; + const charstring c_initDone := "initDone"; + } + + } // end group importantSyncTypeDefinitions + + group syncCompTestConfiguration { + + /** + * @desc Calls self connect function if invoking + * component is the MTC or otherwise connects the client + * the server. This function allows to implement preambles + * in a way that they can be used by test components + * in both non-concurrent as well as concurrent test + * cases! + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_connect4ClientSync + * should be used instead. + * @see LibCommon_Sync.f_connect4SelfSync + * @see LibCommon_Sync.f_connect4ClientSync + */ + function f_connect4SelfOrClientSync() + runs on SelfSyncComp { + if ( self == mtc ) { + f_connect4SelfSync(); + } else { + f_connect4ClientSync(); + } + } + + /** + * @desc Calls self connect function if the invoking + * component is the MTC or otherwise disconnects the client + * from the server. This function allows to implement + * postambles in a way that they can be used in both + * non-concurrent as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_disconnect4ClientSync + * should be used instead. + * @see LibCommon_Sync.f_disconnect4SelfSync + * @see LibCommon_Sync.f_disconnect4ClientSync + */ + function f_disconnect4SelfOrClientSync() + runs on SelfSyncComp { + if ( self == mtc ) { + f_disconnect4SelfSync(); + } else { + f_disconnect4ClientSync(); + } + } + + } // end group syncCompTestConfiguration + + group syncFunctions { + + /** + * @desc Implements synchronization of 2 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync2ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(2, p_syncPointIds); + } + + /** + * @desc Implements synchronization of 3 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync3ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(3, p_syncPointIds); + } + + /** + * @desc Implements synchronization of 4 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync4ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(4, p_syncPointIds); + } + + /** + * @desc Implements synchronization of N clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_numClients number of synchronization clients + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSyncNClientsAndStop ( + in UInt p_numClients, + in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed ( + p_numClients, + valueof(p_syncPointIds[i]), + PX_TSYNC_TIME_LIMIT ); + } + f_serverWaitForAllClientsToStop(); + } + + /** + * @desc Implements synchronization of 2 clients and 1 UT from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync2ClientsUtAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(3,valueof(p_syncPointIds[i]), PX_TSYNC_TIME_LIMIT); + } + f_serverWaitForAllClientsToStop(); + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets the verdict based on the specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdict + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdict + */ + function f_selfOrClientSyncAndVerdict( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdict(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdict(p_syncPoint, p_ret); + } + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets a preamble specific verdict based on the + * specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdictPreamble + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdictPreamble + */ + function f_selfOrClientSyncAndVerdictPreamble( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdictPreamble(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdictPreamble(p_syncPoint, p_ret); + } + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets a preamble specific verdict based on the + * specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdictTestBody + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdictPreamble + */ + function f_selfOrClientSyncAndVerdictTestBody( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdictTestBody(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdictTestBody(p_syncPoint, p_ret); + } + } + + /** + * @desc Function kept for backward compatibility + * @see f_selfOrClientSyncAndVerdictPreamble + * + */ + function f_selfOrClientSyncAndVerdictPR( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + f_selfOrClientSyncAndVerdictPreamble(p_syncPoint, p_ret); + } + + } // end group syncFunctions + + group syncCompStateHandling { + + /** + * + * @desc This function updates the state (stack) of a + * sync client or self sync component. This stack is + * key in the shutdown handling of test components. + * It adds the new state name to the top of the + * sync component stack of states. + * The state will only be added in case of a current + * execution status of e_success. + * @param p_newSyncCompState Name of state which was attempted to be reached. + * @param p_ret Current behavior execution status + * @remark If the state of component changes this function must be + * _at least_ called from your test suite prior to f_selfSync + * or f_clientSync which is the only definite place for the + * shutdown default invocation! + * @see LibCommon_Sync.a_dummyShutDown + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_clientSync + */ + function f_addSyncCompState(in charstring p_newSyncCompState, + in FncRetCode p_ret) + runs on ClientSyncComp { + if ( p_ret == e_success ) { + if ( f_isItemOnStringStack(v_stateStack,p_newSyncCompState) ) { + log("**** f_addSyncCompState: WARNING: Attempt to add state which is already on sync state stack! No additition done.****"); + } else { + f_pushStringStack(v_stateStack,p_newSyncCompState); + } + } + } // end function f_addSyncCompState + + /** + * + * @desc This function returns the top state on the sync + * state stack of a sync client or self sync + * component and removes it from the stack + * This function cna be used, e.g., in a while + * statement within a postamble or shutdown + * implementation + * @param p_state State on top of the state stack. + * @return false if state stack is empty, true otherwise + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_getTopSyncCompState( out charstring p_state ) + runs on ClientSyncComp + return boolean { + if ( not f_peekStringStackTop(v_stateStack,p_state) ) { + p_state := "IDLE"; + return false; + } + f_popStringStack(v_stateStack); + return true; + } // end function f_getTopSyncCompState + + /* + * @desc This function removes the last state on the state stack + * of a sync client or self sync component. + * This stack is key in the shutdown handling of test + * components. + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_popSyncCompState() + runs on ClientSyncComp { + f_popStringStack(v_stateStack); + } // end function f_popSyncCompState + + /** + * + * @desc This function returns the top state on the sync state + * stack of a sync client or self sync component. It + * does not remove it from the stack + * This stack is key in the shutdown handling of test + * components. + * @param p_state State on top of the state stack. + * @return false if state stack is empty, true otherwise + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_peekTopSyncCompState(out charstring p_state) + runs on ClientSyncComp + return boolean { + return f_peekStringStackTop(v_stateStack,p_state); + } // end function f_peekTopSyncCompState + + /** + * @desc This function checks if the sync state stack + * of a sync client or self sync component is empty. + * This stack is key in the shutdown handling of test + * components. + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_isSyncCompStateStackEmpty() + runs on ClientSyncComp + return boolean { + return f_isStringStackEmpty(v_stateStack); + } // end function f_isSyncCompStateStackEmpty + + } // end group syncCompStateHandling + + group shutDownAltsteps { + + /** + * @desc This is an example of a shutdown altstep which can be + * used as a "template" for a interface specific shutdown + * altstep or possily as a first temporary solution in + * test case development.

+ * This altstep shall be activated as a default as the + * first statement in each test case function which drives + * an interface, i.e., in MTC behavior of single component + * and in each client behavior of multi component test + * cases.
+ * The required behavior from this altstep is to:

+ * 1) expect the STOP either via the test component + * syncPort

+ * 2) upon its arrival it should shut down the SUT + * gracefully based on the current component state

+ * The current component state should have been + * previously kept uptodate from a test suite via the + * f_addSyncCompState function. This default will then be + * (automatically) invoked either from within f_selfSync + * or f_clientSync.
+ * Note that shutdown defaults can be written as + * _interface specific_ - they do not need to be test case + * or test component specific! See another example of a + * shutdown altstep in the sync module. + * @see LibCommon_Sync.f_addSyncCompState + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_SyncExamples.a_exampleShutDown + * @remark Your application specific shutdown altstep + * implementation(s) should _not_ be defined in this + * module but as part of your test suite or application specific + * modules. + */ + altstep a_dummyShutDown() + runs on SelfSyncComp { + [] syncPort.receive(m_syncServerStop){ + var charstring v_state := ""; + tc_sync.stop; + log("**** a_dummyShutDown: Test component received STOP signal from sync server - going to IDLE state ****"); + while ( f_getTopSyncCompState(v_state) ) { + if ( v_state == "x" ) { + // then do something + } else if ( v_state == "y" ) { + // then do something else + } + } // end while + f_disconnect4SelfOrClientSync(); + // unmap/disconnect more if needed + log("**** a_dummyShutDown: -> Test component stopping itself now! ****") ; + stop ; + } + } // end altstep a_dummyShutDown + + /** + * @desc Shutdown alstep in case the sync server is requesting shutdown. + * + * @remark User shall stop the component + */ + altstep a_shutdown() + runs on BaseSyncComp { + [] syncPort.receive(m_syncServerStop){ + tc_sync.stop ; + log("**** a_shutdown: Test component received STOP signal from MTC **** "); + } + } + + } // end group shutDownAltsteps + + } // end group basicUserRelevantDefinitions + + group advancedUserRelevantDefinitions { + + group serverRelated { + + /** + * @desc Implements synchronization of "n" clients from server + * side. If a problem occurs, then server sends STOP to + * all clients. Waits for PX_TSYNC_TIME_LIMIT to let + * clients finish executing their behavior until this + * synchronization point. See f_serverSyncClientsTimed for + * overwriting this later timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync port! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @param p_noOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + */ + function f_serverSyncClients( in UInt p_noOfClients, in charstring p_syncId ) + runs on ServerSyncComp { + f_serverSyncClientsTimed(p_noOfClients,p_syncId, PX_TSYNC_TIME_LIMIT); + } + + /** + * @desc Implements synchronization of "n" clients from server + * side including intermediate synchronization. + * If a problem occurs, then server sends STOP to + * all clients. Waits for PX_TSYNC_TIME_LIMIT to let + * clients finish executing their behavior until this + * synchronization point. See f_serverSyncClientsTimed for + * overwriting this later timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync port! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @param p_noOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + */ + function f_serverSyncClientsIntermediateSync( in UInt p_noOfClients, in charstring p_syncId, in UInt p_NoOfClientIntermediate, in template (present) charstring p_syncIdIntermediate ) + runs on ServerSyncComp { + f_serverSyncClientsTimedIntermediateSync(p_noOfClients,p_syncId, p_NoOfClientIntermediate, p_syncIdIntermediate, PX_TSYNC_TIME_LIMIT); + } + + /** + * @desc Handles synchronization of clients from server side. + * If problem occurs, then server sends STOP to all clients. + * This function sets the server verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_NoOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + * @param p_execTimeLimit time limit given to all clients to finish the execution + * of their behavior up to this synchronization point + * @see LibCommon_Sync.f_connect4SelfOrClientSync + */ + function f_serverSyncClientsTimed(in UInt p_NoOfClients, + in charstring p_syncId, + float p_execTimeLimit ) + runs on ServerSyncComp { + f_serverSyncClientsTimedIntermediateSync(p_NoOfClients, p_syncId, 0, ?, p_execTimeLimit ) + } // end function f_serverSyncClientsTimed + + /** @desc Handles synchronization of clients from server side including + * intermediate synchronization. + * If problem occurs, then server sends STOP to all clients. + * This function sets the server verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_NoOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + * @param p_execTimeLimit time limit given to all clients to finish the execution + * of their behavior up to this synchronization point + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @return execution status + */ + function f_serverSyncClientsTimedIntermediateSync( in UInt p_NoOfClients, + in charstring p_syncId, in UInt p_NoOfClientIntermediate, in template (present) charstring p_syncIdIntermediate, + float p_execTimeLimit ) + runs on ServerSyncComp { + + var integer v_noOfRecvdSyncMsgs := 0, v_noOfRecvdSyncMsgsIntermediate := 0; + var boolean v_stopClients := false; + var ClientSyncCompList v_clientRefs := {}, v_clientRefsIntermediate := {}; + var ClientSyncComp v_clientRef; + + if ( p_syncId == c_prDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting PREAMBLE synchronization ... ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting TEST BODY synchronization ... ****") ; + } else if ( p_syncId == c_initDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting UPPER TESTER synchronization ... ****") ; + } else { + log("**** f_serverSyncClientsTimed: Sync server now starting handling of " & p_syncId & " synchronization point ... ****") ; + } + tc_sync.start(p_execTimeLimit) ; + alt{ + [v_noOfRecvdSyncMsgsIntermediate != p_NoOfClientIntermediate] syncPort.receive(m_syncClientReady(p_syncIdIntermediate)) -> sender v_clientRef { + if(not f_isPresentInArray(v_clientRef, v_clientRefsIntermediate)) { + v_clientRefsIntermediate[v_noOfRecvdSyncMsgsIntermediate] := v_clientRef; + v_noOfRecvdSyncMsgsIntermediate := v_noOfRecvdSyncMsgsIntermediate + 1; + if (v_noOfRecvdSyncMsgsIntermediate == p_NoOfClientIntermediate) { + f_serverSendToAllClients(v_clientRefsIntermediate, m_syncServerReady(p_syncIdIntermediate)); + } + } + repeat; + } + [] syncPort.receive(m_syncClientReady(p_syncId)) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received READY signal from a client - server will wait for all clients to reach this synchronization point ****"); + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + v_noOfRecvdSyncMsgs := v_noOfRecvdSyncMsgs + 1; + } + if ( v_noOfRecvdSyncMsgs != p_NoOfClients ) { repeat; } + } + [] syncPort.receive(m_syncClientStop) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received STOP signal from a client - server will wait for all clients to reach their next synchronization point and then stop them! ****") ; + v_stopClients := true; + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + v_noOfRecvdSyncMsgs := v_noOfRecvdSyncMsgs + 1; + } + if ( v_noOfRecvdSyncMsgs != p_NoOfClients ) { repeat; } + + } + [] syncPort.receive(m_syncClientReady(?)) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received client sync message with incorrect synchronization point id which is currently not handled - server will stop all clients! ****") ; + v_stopClients := true; + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + } + } + [] syncPort.receive(SyncCmd :? ) { + log("**** f_serverSyncClientsTimed: Sync server received (invalid) sync message from other sync server - server will stop all clients! ****") ; + v_stopClients := true; } + [] any port.receive { + // leave it to be ok to receive anything else + // in case that the user has added any non-sync ports to + // his/her server component type definition! + repeat; + } + [] tc_sync.timeout{ + log("**** f_serverSyncClientsTimed: A client is not responding within specified time limit - sync server is sending stop to all clients! ****"); + v_stopClients := true; } + } //end alt + if (v_noOfRecvdSyncMsgsIntermediate != p_NoOfClientIntermediate) { + v_stopClients := true; + } + tc_sync.stop ; + if ( v_stopClients ) { + setverdict(inconc); + // then send out STOP sync msg + f_serverSendToAllClients(v_clientRefs, m_syncServerStop); + f_serverWaitForAllClientsToShutDown(); // function will never return! + } else { + setverdict(pass); + // then send out READY sync msg + f_serverSendToAllClients(v_clientRefs, m_syncServerReady(p_syncId)); + if ( p_syncId == c_prDone ) { + log("**** f_serverSyncClientsTimed: Sync server successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_serverSyncClientsTimed: Sync server successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_serverSyncClientsTimed: Sync server successfully passed synchronization point. ****") ; + } + } + } // end function f_serverSyncClientsTimedIntermediateSync + + /** + * @desc This function is intended only for use on the sync + * server component in concurrent TTCN-3 test cases. + * It waits for all components to finish execution within + * the PX_TSYNC_TIME_LIMIT. If a timeout occurs + * the server will stop all clients. + * This function sets the server component verdict. + */ + function f_serverWaitForAllClientsToStop() + runs on ServerSyncComp { + tc_sync.start; + alt { + [] all component.done { + tc_sync.stop; + log("**** f_serverWaitForAllClientsToStop: All sync clients have finished their execution. Sync server now terminating test case. ****") ; + } + [] tc_sync.timeout { + log("**** f_serverWaitForAllClientsToStop: Not all sync clients have finshed execution within the sync time limit. Sync server will stop test case! ****") ; + stop; + } + } // end alt + setverdict(pass); + } // end function f_serverWaitForAllClientsToStop + + } // end group serverRelated + + group clientRelated { + + /** + * @desc This function creates the connection needed to + * execute client synchronization functions + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_Sync.f_clientSendStop + */ + function f_connect4ClientSync() + runs on ClientSyncComp { + connect(self:syncPort, mtc:syncPort); + }// end function f_connect4ClientSync + + /** + * @desc This function removes the connection needed + * to execute client synchronization functions + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_Sync.f_clientSendStop + */ + function f_disconnect4ClientSync() + runs on ClientSyncComp { + disconnect(self:syncPort, mtc:syncPort); + }// end function f_disconnect4ClientSync + + /** + * @desc This function combines client verdict setting with its + * synchronization for use,e.g, after or within a + * test body implementation. + * Note that such premables can _not_ be reused in non- + * concurrent test cases. This can be achieved by using + * the f_selfOrClientSyncAndVerdict function instead. + * This function sets the client component verdict. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfOrClientSyncAndVerdict + */ + function f_clientSyncAndVerdict(in charstring p_syncId, + in FncRetCode p_ret) + runs on ClientSyncComp { + if(vc_testcaseStep == e_preamble) { + f_clientSyncAndVerdictPreamble(p_syncId, p_ret); + } else if(vc_testcaseStep == e_testBody) { + f_clientSyncAndVerdictTestBody(p_syncId, p_ret); + } + else { + f_clientSyncAndVerdictPostamble(p_syncId, p_ret); + } + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use after or within a preamble + * implementation. + * Note that such preambles can _not_ be reused in non- + * concurrent test cases. + * This function sets the client component verdict. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdictPreamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + */ + function f_clientSyncAndVerdictPreamble(in charstring p_syncId , + FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdictPreamble(p_ret); + f_clientSync(p_syncId,p_ret); + vc_testcaseStep := e_testBody; + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use,e.g, after or within a + * test body implementation. + * Note that such premables can _not_ be reused in non- + * concurrent test cases. This can be achieved by using + * the f_selfOrClientSyncAndVerdict function instead. + * This function sets the client component verdict. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfOrClientSyncAndVerdict + */ + function f_clientSyncAndVerdictTestBody(in charstring p_syncId, + in FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdict(p_ret); + f_clientSync(p_syncId,p_ret); + vc_testcaseStep := e_postamble; + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use after or within a + * postamble implementation. + * Note that such prostambles can _not_ be reused in non- + * concurrent test cases. + * This function sets the client component verdict. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdictPostamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + */ + function f_clientSyncAndVerdictPostamble(in charstring p_syncId , + in FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdictPostamble(p_ret); + f_clientSync(p_syncId,p_ret); + } + + /** + * @desc This function handles synchronization of a sync client + * with the server. In case of successful execution it sends + * a READY message to the server and waits the READY back. + * The time used for waiting is defined by PX_TSYNC_TIME_LIMIT. + * In case of a non successful execution status it + * sends a STOP message to the server. + * In both cases the receipt of a STOP message or no + * response from the server it will trigger the shutdown + * default (if activated). + * This function will set only the client verdict to INCONC + * (and stop its execution) if no STOP response is received + * from the server within the PX_TSYNC_TIME_LIMIT + * or if no shutdown default is activated. In all other + * cases the client verdict is NOT set. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.a_dummyShutDown + * @see LibCommon_Sync.f_clientSendStop + * @return Updated execution status + */ + function f_clientSync( in charstring p_syncId , + in FncRetCode p_ret ) + runs on ClientSyncComp + return FncRetCode{ + + if (p_ret == e_success){ + syncPort.send(m_syncClientReady(p_syncId)); + tc_sync.start; + alt{ + [] syncPort.receive(m_syncServerReady(p_syncId)){ + tc_sync.stop ; } + [] tc_sync.timeout{ + log("**** f_clientSync: Sync client did not receive message from sync server within the specified time limit - sync client will ask sync server to stop test case! ****") ; + f_clientSendStop(); } // function will not return! + } //end alt + } //end if + else { + log("**** f_clientSync: Execution status indicates that execution of test component behavior was not successful - sync client will ask sync server to stop test case! ****") ; + f_clientSendStop(); // function will not return! + } + if ( p_syncId == c_prDone ) { + log("**** f_clientSync: Sync client successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_clientSync: Sync client successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_clientSync: Sync client successfully passed synchronization point. ****") ; + } + return e_success ; + + } // end function f_clientSync + + /** + * @desc This function can be used to request the shutdown a + * multi component test case _prior_ to reaching a + * synchronization point. It sends a STOP message to + * the sync server and awaits then the STOP from the server + * which will trigger the shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * This function will set only the client verdict to INCONC + * (and stop its execution) if no STOP response is received + * from the server within the PX_TSYNC_TIME_LIMIT + * or if no shutdown default is activated. In all other + * cases the client verdict is NOT set. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_clientSendStop() + runs on ClientSyncComp { + log("**** f_clientSendStop: Sync client requesting from server to stop test case (including itself). ****") ; + syncPort.send(m_syncClientStop) ; + tc_sync.start; + alt{ + [] tc_sync.timeout{ + log("**** f_clientSendStop: Stopping sync client without shutdown - either no shutdown default active or no stop received from server. ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // stop here if shutdown default does not stop + } + + } // end group clientRelated + + } // end group advancedUserRelevantDefinitions + + group otherSyncModuleDefinitions { + + group syncModuleparams { + /** + * + * @desc Default time limit for a sync client to reach a + * synchronization point + */ + modulepar float PX_TSYNC_TIME_LIMIT := 120.0; + + /* + * @desc Default time limit for a sync client to finish + * its execution of the shutdown default + */ + modulepar float PX_TSHUT_DOWN_TIME_LIMIT := 120.0; + } + + group otherSyncTypes { + + type record of charstring SyncPointList; + + type record of ClientSyncComp ClientSyncCompList; + + } // end group otherSyncTypes + + group otherSelfSyncRelatedDefinitions { + + /** + * @desc This function creates the connection needed to + * execute self sync functions + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_selfSyncStop + */ + function f_connect4SelfSync() + runs on SelfSyncComp { + connect(self:syncSendPort, self:syncPort); + }// end function f_connect4SelfSync + + /** + * @desc This function removes the connection needed + * to execute self sync functions + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_selfSyncStop + */ + function f_disconnect4SelfSync() + runs on SelfSyncComp { + disconnect(self:syncSendPort, self:syncPort); + }// end function f_disconnect4SelfSync + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use in the preamble / test body / postamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_selfSyncAndVerdict( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + if(vc_testcaseStep == e_preamble) { + f_selfSyncAndVerdictPreamble(p_syncId, p_ret); + } else if(vc_testcaseStep == e_testBody) { + f_selfSyncAndVerdictTestBody(p_syncId, p_ret); + } + else { + f_selfSyncAndVerdictPostamble(p_syncId, p_ret); + } + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the preamble. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdictPreamble + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictPreamble( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdictPreOrPostamble(p_ret); + f_selfSync(p_syncId,p_ret); + vc_testcaseStep := e_testBody; + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the test body. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictTestBody( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdict(p_ret); + f_selfSync(p_syncId,p_ret); + vc_testcaseStep := e_postamble; + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the postamble. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdictPostamble + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictPostamble( in charstring p_syncId , + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdictPreOrPostamble(p_ret); + f_selfSync(p_syncId,p_ret); + } + + /** + * @desc This function synchronizes a MTC with itself. In case + * of a non successful execution status it sends a STOP + * message to itself and invokes that way the + * shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * Otherwise no verdict is set. + * @remark Sync ports should be connected prior to the invocation + * of this function! + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @return Updated execution status + * @see LibCommon_Sync.f_connect4SelfSync + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_selfSync( in charstring p_syncId , + in FncRetCode p_ret ) + runs on SelfSyncComp + return FncRetCode{ + if (p_ret != e_success){ + f_selfSyncStop() ; // function will not return! + } + if ( p_syncId == c_prDone ) { + log("**** f_selfSync: Successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_selfSync: Successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_selfSync: Successfully passed synchronization point. ****") ; + } + return e_success ; + }// end function f_selfSync + + /** + * @desc This function can be used to shut down a test case _prior_ + * to reaching a synchronization point. it sends a STOP + * message to itself and invokes that way the + * shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * Otherwise no verdict is set. + * @remark Sync ports should be connected prior to the invocation + * of this function! + * @see LibCommon_Sync.f_connect4SelfSync + */ + function f_selfSyncStop() + runs on SelfSyncComp { + + log("**** f_selfSyncStop: MTC requests to stop test case (itself). ****") ; + syncSendPort.send(m_syncServerStop) ; // this MUST be _server_ for the default to catch! + tc_sync.start(PX_TSYNC_TIME_LIMIT); + alt{ + [] tc_sync.timeout{ + log("**** f_selfSyncStop: Stopping MTC without shutdown - either no shutdown default active or missing syncPort connection ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // if shutdown default is not activated or if it does not stop + } // end function f_selfSyncStop + + } // end group otherSelfSyncRelatedDefinitions + + /** + * + * @desc The sychronization protocol is conceptually based on + * named synchronization. Each synchronization point + * has it own specific synchronization message. This + * makes each synchronization unique, and allows, e.g., to + * ensure that a server synchronizes only clients which have + * reached the same synchronization point. + */ + group syncProtocolDefinition { + + type union SyncCmd { + ClientReady clientReady, + ServerReady serverReady, + ClientStop clientStop, + ServerStop serverStop + } + + type record ClientReady { + charstring syncPointId + } + + type record ServerReady { + charstring syncPointId + } + + type record ClientStop {} + + type record ServerStop {} + + } // end group syncProtocolDefinition + + group syncMessages { + template SyncCmd m_syncClientReady( template (present) charstring p_syncId ) := { + clientReady := { p_syncId } + } + + template SyncCmd m_syncServerReady( template (present) charstring p_syncId ) := { + serverReady := { p_syncId } + } + + template SyncCmd m_syncClientStop := { + clientStop := {} + } + + template SyncCmd m_syncServerStop := { + serverStop := {} + } + + } // end group syncMessages + + group otherSyncFunctions { + + /** + * @desc Makes server send a sync message to all known clients + * @param p_clientRefs List of client references to which the message is to be send + * @param p_syncCmd The actual synchronization message to be sent out + */ + function f_serverSendToAllClients( in ClientSyncCompList p_clientRefs, + in template (value) SyncCmd p_syncCmd) + runs on ServerSyncComp { + var integer i:=0; + for (i:=0; i< sizeof(p_clientRefs); i:=i+1 ){ + syncPort.send(p_syncCmd) to valueof(p_clientRefs[i]); + } + } // end function f_serverSendToAllClients + + /** + * @desc This function is intended only for use on server in concurrent + * TTCN-3 test cases. It waits for all components to shut down + * within the PX_TSHUT_DOWN_TIME_LIMIT. If a timeout occurs + * it aborts the test case (no matter how far clients got with their + * shutdown). + * This function sets the server verdict. + */ + function f_serverWaitForAllClientsToShutDown() + runs on ServerSyncComp { + + tc_shutDown.start(PX_TSHUT_DOWN_TIME_LIMIT); + alt { + [] syncPort.receive { + // clients may still try to send some sync message + } + [] all component.done { + tc_shutDown.stop; + log("**** f_serverWaitForAllClientsToShutDown: All components have properly shut down. Sync server will now terminate the test case. ****") ; + } + [] tc_shutDown.timeout { + log("**** f_serverWaitForAllClientsToShutDown: Not all clients have properly shutdown within the shut down time limit. Sync server will now terminate test case! ****") ; + } + } // end alt + // cover case that shut down default is NOT activated + setverdict(inconc); + //mtc.stop; + syncPort.send(m_syncServerStop) to self; // this MUST be _server_ for the default to catch! + tc_sync.start(PX_TSYNC_TIME_LIMIT); + alt{ + [] tc_sync.timeout{ + log("**** f_selfSyncStop: Stopping MTC without shutdown - either no shutdown default active or missing syncPort connection ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // if shutdown default is not activated or if it does not stop + } // end function f_serverWaitForAllClientsToShutDown + + function f_isPresentInArray(in ClientSyncComp p_clientRef, in ClientSyncCompList p_clientRefs) + return boolean { + var integer i; + for(i:=0; i < sizeof(p_clientRefs); i:=i+1) { + if(p_clientRefs[i] == p_clientRef) { + return true; + } + } + return false; + } + } // end group otherSyncFunctions + + } // end group otherSyncDefinitions + +} // end module LibCommon_Sync